1 PACKAGE BODY inv_mwb_tree1 AS
2 /* $Header: INVMWTRB.pls 120.63.12020000.3 2013/01/14 02:54:32 xzhixong ship $ */
3
4
5 -- Controlled: 0 Don't Care, 1 No, 2 Yes
6 -- Add organization nodes for the given parameters
7
8 g_pkg_name CONSTANT VARCHAR2(30) := 'INV_MWB_TREE1';
9
10 PROCEDURE add_document_numbers(
11 x_node_value IN OUT NOCOPY NUMBER
12 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
13 , x_tbl_index IN OUT NOCOPY NUMBER)
14 IS
15 select_str varchar2(10000);
16 where_str varchar2(10000);
17
18 query_str VARCHAR2(10000);
19 query_hdl NUMBER;
20 rows_processed NUMBER;
21 doc_number VARCHAR2(100);
22 doc_header_id NUMBER;
23 i NUMBER := x_tbl_index;
24 j NUMBER := x_node_value;
25 lpn_from_id wms_license_plate_numbers.lpn_id%TYPE;
26 lpn_to_id wms_license_plate_numbers.lpn_id%TYPE;
27 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_DOCUMENT_NUMBERS';
28 BEGIN
29 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
30
31 IF inv_mwb_globals.g_tree_doc_type_id = 1 -- Purchase Order
32 AND inv_mwb_globals.g_source_org_id IS NULL
33 AND inv_mwb_globals.g_internal_order_id IS NULL
34 AND inv_mwb_globals.g_shipment_header_id_interorg IS NULL
35 AND inv_mwb_globals.g_req_header_id IS NULL THEN
36 -- CLM project, bug 9403291
37
38 query_str := ' SELECT distinct pha.segment1, pha.po_header_id
39 FROM po_headers_trx_v pha
40 , po_lines_trx_v pla
41 , mtl_supply ms
42 , mtl_system_items_kfv msik
43 WHERE pha.po_header_id = ms.po_header_id
44 AND pla.po_line_id = ms.po_line_id
45 AND pha.authorization_status = ''APPROVED''
46 AND ms.destination_type_code = ''INVENTORY''
47 AND ms.item_id = msik.inventory_item_id
48 AND ms.to_organization_id = msik.organization_id
49 -- AND ms.supply_type_code IN (''PO'') --15991963
50 AND pha.segment1 IS NOT NULL';
51
52 /* IF inv_mwb_globals.g_include_po_without_asn = 1 THEN
53 query_str := query_str || ' AND ms.supply_type_code IN (''PO'',''SHIPMENT'') ';
54 ELSIF inv_mwb_globals.g_include_po_without_asn = 0 THEN
55 -- query_str := query_str || ' AND ms.supply_type_code = ''SHIPMENT'' ';
56 query_str := query_str || ' AND ms.shipment_header_id IS NULL ';
57 END IF;
58 */
59 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
60 query_str := query_str || ' AND pla.vendor_product_num = :inb_vendor_item ';
61 END IF;
62
63 --15991963
64 IF inv_mwb_globals.g_include_po_without_asn = 0 THEN
65 query_str := query_str ||' and ms.supply_type_code = ''SHIPMENT'' ';
66 --ELSE
67 -- query_str := query_str ||' AND ms.supply_type_code IN (''PO'') ';
68 END IF;
69
70
71
72 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
73 OR inv_mwb_globals.g_lpn_to_id IS NOT NULL
74 OR inv_mwb_globals.g_serial_from IS NOT NULL
75 OR inv_mwb_globals.g_serial_to IS NOT NULL
76 OR inv_mwb_globals.g_lot_from IS NOT NULL
77 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
78 query_str := query_str || ' AND 1 = 2 ';
79 END IF;
80
81 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
82
83 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
84 query_str := query_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
85 END IF;
86
87 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
88 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
89 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
90 query_str := query_str || ' AND ms.expected_delivery_date = :inb_from_date';
91 END IF;
92
93 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
94 query_str := query_str || ' AND ms.expected_delivery_date >= :inb_from_date';
95 END IF;
96
97 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
98 query_str := query_str || ' AND ms.expected_delivery_date <= :inb_to_date';
99 END IF;
100
101 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
102
103 /*
104 * You always add documents under the Organization node,
105 * Always restrict the documents based on the 'Tree Organization Id'
106 */
107 query_str := query_str || ' AND ms.to_organization_id = :inb_to_org_id ';
108
109 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
110 query_str := query_str || ' AND ms.item_id = :inb_item_id ';
111 END IF;
112
113 -- ER(9158529 client)
114 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
115 query_str := query_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
116 END IF;
117 -- ER(9158529 client)
118
119 IF inv_mwb_globals.g_inventory_item_id IS NULL
120 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
121 query_str := query_str || ' AND msik.description like :inb_item_description ';
122 END IF;
123
124 -- ER(9158529)
125 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
126 query_str := query_str || ' AND ms.item_id in '
127 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
128 || ' where organization_id = :inb_to_org_id '
129 || ' and category_set_id = :inb_category_set_id '
130 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
131 END IF;
132 -- ER(9158529)
133
134 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
135 query_str := query_str || ' AND pha.po_header_id = :inb_po_header_id ';
136 END IF;
137
138 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
139 query_str := query_str || ' AND ms.po_release_id = :inb_po_release_id ';
140 END IF;
141
142 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
143 query_str := query_str || ' AND pha.vendor_id = :inb_vendor_id ';
144 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
145 query_str := query_str || ' AND pha.vendor_site_id = :inb_vendor_site_id ';
146 END IF;
147 END IF;
148
149 query_str := query_str || ' ORDER BY pha.segment1 ';
150
151 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
152
153 query_hdl := DBMS_SQL.open_cursor;
154 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
155
156 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
157 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
158 END IF;
159
160 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
161 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
162 END IF;
163
164 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
165 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
166 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
167 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
168 END IF;
169
170 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
171 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
172 END IF;
173
174 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
175 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
176 END IF;
177
178 /*
179 * You always add documents under the Organization node,
180 * Always restrict the documents based on the 'Tree Organization Id'
181 */
182 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
183
184 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
185 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
186 END IF;
187
188 -- ER(9158529 client)
189 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
190 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
191 END IF;
192 -- ER(9158529 client)
193
194 IF inv_mwb_globals.g_inventory_item_id IS NULL
195 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
196 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
197 END IF;
198
199 -- ER(9158529)
200 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
201 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
202 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
203 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
204 END IF;
205 -- ER(9158529)
206
207 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
208 DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
209 END IF;
210
211 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
212 DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
213 END IF;
214
215 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
216 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
217 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
218 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
219 END IF;
220 END IF;
221
222 DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
223 DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
224
225 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
226
227 LOOP
228 -- fetch a row
229 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
230 -- fetch columns from the row
231 DBMS_SQL.column_value(query_hdl, 1, doc_number);
232 DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
233
234 IF j >= inv_mwb_globals.g_tree_node_low_value
235 AND doc_number IS NOT NULL THEN
236 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
237 x_node_tbl(i).DEPTH := 1;
238 x_node_tbl(i).label := doc_number;
239 x_node_tbl(i).icon := 'tree_document';
240 x_node_tbl(i).VALUE := doc_header_id;
241 x_node_tbl(i).TYPE := 'DOCNUM';
242 i := i + 1;
243 END IF;
244
245 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
246 j := j + 1;
247 ELSE
248 EXIT;
249 END IF;
250 END LOOP;
251
252 END IF; -- Purchase Order
253
254
255 IF inv_mwb_globals.g_tree_doc_type_id = 4 -- ASN
256 AND inv_mwb_globals.g_source_org_id IS NULL
257 AND inv_mwb_globals.g_internal_order_id IS NULL
258 AND inv_mwb_globals.g_shipment_header_id_interorg IS NULL
259 AND inv_mwb_globals.g_req_header_id IS NULL
260 AND inv_mwb_globals.g_po_header_id IS NULL THEN
261
262 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Adding ASN' );
263 select_str := ' SELECT distinct rsh.shipment_num, rsh.shipment_header_id FROM mtl_supply ms
264 , rcv_shipment_lines rsl
265 , rcv_shipment_headers rsh ';
266
267 where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id (+)
268 AND ms.shipment_line_id = rsl.shipment_line_id (+)
269 AND ms.supply_type_code = ''SHIPMENT''
270 AND ms.destination_type_code = ''INVENTORY''
271 AND rsh.asn_type IS NOT NULL ';
272
273 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
274 OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
275 select_str := select_str || ' , wms_license_plate_numbers wlpn ';
276 where_str := where_str ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
277 END IF;
278
279 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
280 where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
281 END IF;
282
283 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
284 where_str := where_str || ' AND rsl.cost_group_id = :inb_cost_group_id ';
285 END IF;
286
287 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
288 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
289 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
290 where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
291 END IF;
292
293 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
294 where_str := where_str || ' AND ms.expected_delivery_date >= :inb_from_date';
295 END IF;
296
297 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
298 where_str := where_str || ' AND ms.expected_delivery_date <= :inb_to_date';
299 END IF;
300
301 /*
302 * You always add documents under the Organization node,
303 * Always restrict the documents based on the 'Tree Organization Id'
304 */
305 where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
306
307 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
308 where_str := where_str || ' AND ms.item_id = :inb_item_id ';
309 END IF;
310
311 -- ER(9158529 client)
312 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
313 where_str := where_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
314 END IF;
315 -- ER(9158529 client)
316
317 IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
318 where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
319 END IF;
320
321 IF inv_mwb_globals.g_inventory_item_id IS NULL
322 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
323 select_str := select_str || ', mtl_system_items_kfv msik ';
324
325 where_str := ' AND ms.item_id = msik.inventory_item_id
326 AND ms.to_organization_id = msik.organization_id
327 AND msik.description like :inb_item_description ';
328 END IF;
329
330 -- ER(9158529)
331 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
332 where_str := where_str || ' AND ms.item_id in '
333 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
334 || ' where organization_id = :inb_to_org_id '
335 || ' and category_set_id = :inb_category_set_id '
336 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
337 END IF;
338 -- ER(9158529)
339
340 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
341 where_str := where_str || ' AND ms.po_header_id = :inb_po_header_id ';
342 END IF;
343
344 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
345 where_str := where_str || ' AND ms.po_release_id = :inb_po_release_id ';
346 END IF;
347
348 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
349 where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
350 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
351 where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
352 END IF;
353 END IF;
354
355 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
356 where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
357 ELSE
358 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
359 where_str := where_str || ' AND wlpn.license_plate_number >= :inb_lpn_from ';
360 END IF;
361
362 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
363 where_str := where_str || ' AND wlpn.license_plate_number <= :inb_lpn_to ';
364 END IF;
365 END IF;
366
367 IF inv_mwb_globals.g_serial_from IS NOT NULL
368 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
369 select_str := select_str || ', rcv_serials_supply rss ';
370 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
371 END IF;
372
373 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
374 where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
375 ELSE
376 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
377 where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
378 END IF;
379
380 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
381 where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
382 END IF;
383 END IF;
384
385 IF inv_mwb_globals.g_lot_from IS NOT NULL
386 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
387 select_str := select_str || ', rcv_lots_supply rls ';
388 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
389 END IF;
390
391 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
392 where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
393 ELSE
394 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
395 where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
396 END IF;
397
398 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
399 where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
400 END IF;
401 END IF;
402
403 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
404 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
405 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
406 select_str := select_str || ', mtl_lot_numbers mln1 ';
407 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
408 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
409 select_str := select_str || ', rcv_lots_supply rls ';
410 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
411 END IF;
412
413 where_str := where_str || ' AND rls.lot_num = mln1.lot_number';
414
415 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
416 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
417 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
418 where_str := where_str || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
419 END IF;
420
421 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
422 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
423 where_str := where_str || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
424 END IF;
425
426 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
427 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
428 where_str := where_str || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
429 END IF;
430 END IF;
431 /* End of Bug 8396954 */
432
433 query_str := select_str || where_str;
434
435 query_str := query_str || ' ORDER BY rsh.shipment_num ';
436
437 query_hdl := DBMS_SQL.open_cursor;
438 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
439
440 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
441 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
442 END IF;
443
444 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
445 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
446 END IF;
447
448 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
449 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
450 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
451 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
452 END IF;
453
454 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
455 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
456 END IF;
457
458 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
459 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
460 END IF;
461
462 /*
463 * You always add documents under the Organization node,
464 * Always restrict the documents based on the 'Tree Organization Id'
465 */
466 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
467
468 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
469 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
470 END IF;
471
472 -- ER(9158529 client)
473 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
474 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
475 END IF;
476 -- ER(9158529 client)
477
478 IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
479 DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', inv_mwb_globals.g_shipment_header_id_asn);
480 END IF;
481
482 IF inv_mwb_globals.g_inventory_item_id IS NULL
483 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
484 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
485 END IF;
486
487 -- ER(9158529)
488 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
489 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
490 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
491 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
492 END IF;
493 -- ER(9158529)
494
495 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
496 DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
497 END IF;
498
499 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
500 DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
501 END IF;
502
503 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
504 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
505 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
506 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
507 END IF;
508 END IF;
509
510 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
511 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
512 ELSE
513 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
514 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
515 END IF;
516
517 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
518 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
519 END IF;
520 END IF;
521
522
523 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
524 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
525 ELSE
526 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
527 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
528 END IF;
529
530 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
531 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
532 END IF;
533 END IF;
534
535 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
536 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
537 ELSE
538 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
539 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
540 END IF;
541
542 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
543 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
544 END IF;
545 END IF;
546
547 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
548 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
549 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
550
551 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
552 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
553 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
554 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
555 END IF;
556
557 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
558 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
559 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
560 END IF;
561
562 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
563 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
564 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
565 END IF;
566 END IF;
567 /* End of Bug 8396954 */
568
569 DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
570 DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
571
572 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
573
574 LOOP
575 -- fetch a row
576 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
577 -- fetch columns from the row
578 DBMS_SQL.column_value(query_hdl, 1, doc_number);
579 DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
580
581 IF j >= inv_mwb_globals.g_tree_node_low_value
582 AND doc_number IS NOT NULL THEN
583 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
584 x_node_tbl(i).DEPTH := 1;
585 x_node_tbl(i).label := doc_number;
586 x_node_tbl(i).icon := 'tree_document';
587 x_node_tbl(i).VALUE := doc_header_id;
588 x_node_tbl(i).TYPE := 'DOCNUM';
589 i := i + 1;
590 END IF;
591
592 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
593 j := j + 1;
594 ELSE
595 EXIT;
596 END IF;
597 END LOOP;
598 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Ended Adding ASN' );
599 END IF; -- ASN
600
601 IF inv_mwb_globals.g_tree_doc_type_id = 3
602 AND inv_mwb_globals.g_po_header_id IS NULL
603 AND inv_mwb_globals.g_vendor_id IS NULL
604 AND inv_mwb_globals.g_shipment_header_id_asn IS NULL
605 AND inv_mwb_globals.g_vendor_item IS NULL THEN
606
607 select_str := ' SELECT distinct rsh.shipment_num, rsh.shipment_header_id FROM mtl_supply ms
608 , rcv_shipment_lines rsl
609 , rcv_shipment_headers rsh ';
610
611 where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id (+)
612 AND ms.shipment_line_id = rsl.shipment_line_id (+)
613 AND ms.supply_type_code = ''SHIPMENT''
614 AND ms.destination_type_code = ''INVENTORY''
615 AND rsh.asn_type IS NULL
616 AND ms.req_header_id IS NULL ';
617
618 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
619 OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
620 select_str := select_str || ' , wms_license_plate_numbers wlpn ';
621 where_str := where_str ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
622 END IF;
623
624 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
625 where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
626 END IF;
627
628 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
629 where_str := where_str || ' AND rsl.cost_group_id = :inb_cost_group_id ';
630 END IF;
631
632 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
633 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
634 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
635 where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
636 END IF;
637
638 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
639 where_str := where_str || ' AND ms.expected_delivery_date >= :inb_from_date';
640 END IF;
641
642 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
643 where_str := where_str || ' AND ms.expected_delivery_date <= :inb_to_date';
644 END IF;
645
646 /*
647 * You always add documents under the Organization node,
648 * Always restrict the documents based on the 'Tree Organization Id'
649 */
650 where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
651
652 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
653 where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
654 END IF;
655
656 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
657 where_str := where_str || ' AND ms.item_id = :inb_item_id ';
658 END IF;
659
660 -- ER(9158529 client)
661 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
662 where_str := where_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
663 END IF;
664 -- ER(9158529 client)
665
666 IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
667 OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
668 where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
669 END IF;
670
671 IF inv_mwb_globals.g_inventory_item_id IS NULL
672 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
673 select_str := select_str || ', mtl_system_items_kfv msik ';
674
675 where_str := ' AND ms.item_id = msik.inventory_item_id
676 AND ms.to_organization_id = msik.organization_id
677 AND msik.description like :inb_item_description ';
678 END IF;
679
680 -- ER(9158529)
681 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
682 where_str := where_str || ' AND ms.item_id in '
683 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
684 || ' where organization_id = :inb_to_org_id '
685 || ' and category_set_id = :inb_category_set_id '
686 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
687 END IF;
688 -- ER(9158529)
689
690 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
691 where_str := where_str || ' AND ms.po_header_id = :inb_po_header_id ';
692 END IF;
693
694 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
695 where_str := where_str || ' AND ms.po_release_id = :inb_po_release_id ';
696 END IF;
697
698 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
699 where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
700 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
701 where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
702 END IF;
703 END IF;
704
705 IF inv_mwb_globals.g_serial_from IS NOT NULL
706 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
707 select_str := select_str || ', rcv_serials_supply rss ';
708 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
709 END IF;
710
711
712 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
713 where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
714 ELSE
715 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
716 where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
717 END IF;
718
719 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
720 where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
721 END IF;
722 END IF;
723
724 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
725 where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
726 ELSE
727 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
728 where_str := where_str || ' AND wlpn.license_plate_number >= :inb_lpn_from ';
729 END IF;
730
731 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
732 where_str := where_str || ' AND wlpn.license_plate_number <= :inb_lpn_to ';
733 END IF;
734 END IF;
735
736 IF inv_mwb_globals.g_lot_from IS NOT NULL
737 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
738 select_str := select_str || ', rcv_lots_supply rls ';
739 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
740 END IF;
741
742 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
743 where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
744 ELSE
745 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
746 where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
747 END IF;
748
749 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
750 where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
751 END IF;
752 END IF;
753
754 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
755 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
756 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
757 select_str := select_str || ', mtl_lot_numbers mln1 ';
758 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
759 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
760 select_str := select_str || ', rcv_lots_supply rls ';
761 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
762 END IF;
763
764 where_str := where_str || ' AND rls.lot_num = mln1.lot_number';
765
766 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
767 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
768 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
769 where_str := where_str || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
770 END IF;
771
772 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
773 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
774 where_str := where_str || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
775 END IF;
776
777 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
778 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
779 where_str := where_str || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
780 END IF;
781 END IF;
782 /* End of Bug 8396954 */
783
784 query_str := select_str || where_str;
785
786 query_str := query_str || ' ORDER BY rsh.shipment_num ';
787
788 /* delete from rtest2;
789 insert into rtest2 values (query_str);
790 commit;
791 */
792
793 query_hdl := DBMS_SQL.open_cursor;
794 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
795
796 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
797 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
798 END IF;
799
800 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
801 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
802 END IF;
803
804 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
805 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
806 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
807 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
808 END IF;
809
810 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
811 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
812 END IF;
813
814 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
815 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
816 END IF;
817
818 /*
819 * You always add documents under the Organization node,
820 * Always restrict the documents based on the 'Tree Organization Id'
821 */
822 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
823
824 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
825 DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
826 END IF;
827
828 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
829 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
830 END IF;
831
832 -- ER(9158529 client)
833 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
834 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
835 END IF;
836 -- ER(9158529 client)
837
838 IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
839 OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
840 DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', NVL(inv_mwb_globals.g_shipment_header_id_interorg
841 , inv_mwb_globals.g_tree_doc_header_id));
842 END IF;
843
844 IF inv_mwb_globals.g_inventory_item_id IS NULL
845 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
846 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
847 END IF;
848
849 -- ER(9158529)
850 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
851 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
852 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
853 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
854 END IF;
855 -- ER(9158529)
856
857 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
858 DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
859 END IF;
860
861 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
862 DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
863 END IF;
864
865 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
866 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
867 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
868 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
869 END IF;
870 END IF;
871
872
873 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
874 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
875 ELSE
876 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
877 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
878 END IF;
879
880 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
881 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
882 END IF;
883 END IF;
884
885 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
886 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
887 ELSE
888 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
889 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
890 END IF;
891
892 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
893 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
894 END IF;
895 END IF;
896
897 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
898 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
899 ELSE
900 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
901 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
902 END IF;
903
904 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
905 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
906 END IF;
907 END IF;
908
909 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
910 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
911 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
912
913 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
914 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
915 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
916 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
917 END IF;
918
919 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
920 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
921 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
922 END IF;
923
924 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
925 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
926 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
927 END IF;
928 END IF;
929 /* End of Bug 8396954 */
930
931 DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
932 DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
933
934 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
935
936 LOOP
937 -- fetch a row
938 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
939 -- fetch columns from the row
940 DBMS_SQL.column_value(query_hdl, 1, doc_number);
941 DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
942
943 IF j >= inv_mwb_globals.g_tree_node_low_value
944 AND doc_number IS NOT NULL THEN
945 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
946 x_node_tbl(i).DEPTH := 1;
947 x_node_tbl(i).label := doc_number;
948 x_node_tbl(i).icon := 'tree_document';
949 x_node_tbl(i).VALUE := doc_header_id;
950 x_node_tbl(i).TYPE := 'DOCNUM';
951 i := i + 1;
952 END IF;
953
954 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
955 j := j + 1;
956 ELSE
957 EXIT;
958 END IF;
959 END LOOP;
960
961 END IF; -- INTERORG
962
963
964 IF inv_mwb_globals.g_tree_doc_type_id = 2 -- REQUISITION
965 AND inv_mwb_globals.g_po_header_id IS NULL
966 AND inv_mwb_globals.g_vendor_id IS NULL
967 AND inv_mwb_globals.g_shipment_header_id_asn IS NULL
968 AND inv_mwb_globals.g_vendor_item IS NULL THEN
969
970 -- CLM project, bug 9403291
971 select_str := ' SELECT distinct prha.segment1, prha.requisition_header_id
972 FROM mtl_supply ms
973 , po_req_headers_trx_v prha
974 , po_req_lines_trx_v prla ';
975
976 --Bug 13029108 Adding the supply_type shipment as well since those records are fetching in the detailed
977 --records but corresponding document numbers are not getting aded.
978 where_str := 'WHERE ms.req_header_id = prha.requisition_header_id (+)
979 AND ms.req_line_id = prla.requisition_line_id (+)
980 AND ms.supply_type_code in( ''REQ'',''SHIPMENT'')
981 AND ms.destination_type_code = ''INVENTORY'' ';
982
983
984
985 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
986 where_str := where_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
987 END IF;
988
989 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
990 OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
991 where_str := where_str || ' AND 1 = 2 ';
992 END IF;
993
994
995 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
996 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
997 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
998 where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
999 END IF;
1000
1001 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1002 where_str := where_str || ' AND ms.expected_delivery_date >= :inb_from_date';
1003 END IF;
1004
1005 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1006 where_str := where_str || ' AND ms.expected_delivery_date <= :inb_to_date';
1007 END IF;
1008
1009 /*
1010 * You always add documents under the Organization node,
1011 * Always restrict the documents based on the 'Tree Organization Id'
1012 */
1013 where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
1014
1015 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
1016 where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
1017 END IF;
1018
1019 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1020 where_str := where_str || ' AND ms.item_id = :inb_item_id ';
1021 END IF;
1022
1023 -- ER(9158529 client)
1024 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1025 where_str := where_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
1026 END IF;
1027 -- ER(9158529 client)
1028
1029 IF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
1030 where_str := where_str || ' AND ms.req_header_id = :inb_req_header_id ';
1031 END IF;
1032
1033 IF inv_mwb_globals.g_inventory_item_id IS NULL
1034 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1035 select_str := select_str || ', mtl_system_items_kfv msik ';
1036
1037 where_str := where_str || ' AND ms.item_id = msik.inventory_item_id
1038 AND ms.to_organization_id = msik.organization_id
1039 AND msik.description like :inb_item_description ';
1040 END IF;
1041
1042 -- ER(9158529)
1043 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1044 where_str := where_str || ' AND ms.item_id in '
1045 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
1046 || ' where organization_id = :inb_to_org_id '
1047 || ' and category_set_id = :inb_category_set_id '
1048 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
1049 END IF;
1050 -- ER(9158529)
1051
1052 IF inv_mwb_globals.g_serial_from IS NOT NULL
1053 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
1054 select_str := select_str || ', rcv_serials_supply rss ';
1055 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
1056 END IF;
1057
1058
1059 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
1060 where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
1061 ELSE
1062 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
1063 where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
1064 END IF;
1065
1066 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
1067 where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
1068 END IF;
1069 END IF;
1070
1071
1072 IF inv_mwb_globals.g_lot_from IS NOT NULL
1073 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
1074 select_str := select_str || ', rcv_lots_supply rls ';
1075 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
1076 END IF;
1077
1078 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
1079 where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
1080 ELSE
1081 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
1082 where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
1083 END IF;
1084
1085 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
1086 where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
1087 END IF;
1088 END IF;
1089
1090 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
1091 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
1092 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
1093 select_str := select_str || ', mtl_lot_numbers mln1 ';
1094 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
1095 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
1096 select_str := select_str || ', rcv_lots_supply rls ';
1097 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
1098 END IF;
1099
1100 where_str := where_str || ' AND rls.lot_num = mln1.lot_number';
1101
1102 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1103 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1104 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
1105 where_str := where_str || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
1106 END IF;
1107
1108 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1109 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
1110 where_str := where_str || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
1111 END IF;
1112
1113 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1114 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
1115 where_str := where_str || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
1116 END IF;
1117 END IF;
1118 /* End of Bug 8396954 */
1119
1120 query_str := select_str || where_str;
1121
1122 query_str := query_str || ' ORDER BY prha.segment1 ';
1123
1124 /* delete from rtest2;
1125 insert into rtest2 values (query_str);
1126 commit;
1127 */
1128
1129 query_hdl := DBMS_SQL.open_cursor;
1130 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
1131
1132 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1133 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
1134 END IF;
1135
1136 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
1137 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
1138 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1139 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
1140 END IF;
1141
1142 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1143 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
1144 END IF;
1145
1146 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1147 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
1148 END IF;
1149
1150 /*
1151 * You always add documents under the Organization node,
1152 * Always restrict the documents based on the 'Tree Organization Id'
1153 */
1154 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
1155
1156 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
1157 DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
1158 END IF;
1159
1160 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1161 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
1162 END IF;
1163
1164 -- ER(9158529 client)
1165 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1166 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
1167 END IF;
1168 -- ER(9158529 client)
1169
1170 IF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
1171 DBMS_SQL.bind_variable(query_hdl, 'inb_req_header_id', inv_mwb_globals.g_req_header_id);
1172 END IF;
1173
1174 IF inv_mwb_globals.g_inventory_item_id IS NULL
1175 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1176 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
1177 END IF;
1178
1179 -- ER(9158529)
1180 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1181 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
1182 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
1183 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
1184 END IF;
1185 -- ER(9158529)
1186
1187 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
1188 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1189 ELSE
1190 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
1191 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1192 END IF;
1193
1194 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
1195 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
1196 END IF;
1197 END IF;
1198
1199 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
1200 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1201 ELSE
1202 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
1203 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1204 END IF;
1205
1206 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
1207 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
1208 END IF;
1209 END IF;
1210
1211 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
1212 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
1213 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
1214
1215 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1216 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1217 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
1218 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
1219 END IF;
1220
1221 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1222 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
1223 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
1224 END IF;
1225
1226 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1227 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
1228 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
1229 END IF;
1230 END IF;
1231 /* End of Bug 8396954 */
1232
1233 DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
1234 DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
1235
1236 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
1237
1238 LOOP
1239 -- fetch a row
1240 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
1241 -- fetch columns from the row
1242 DBMS_SQL.column_value(query_hdl, 1, doc_number);
1243 DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
1244
1245 IF j >= inv_mwb_globals.g_tree_node_low_value
1246 AND doc_number IS NOT NULL THEN
1247 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
1248 x_node_tbl(i).DEPTH := 1;
1249 x_node_tbl(i).label := doc_number;
1250 x_node_tbl(i).icon := 'tree_document';
1251 x_node_tbl(i).VALUE := doc_header_id;
1252 x_node_tbl(i).TYPE := 'DOCNUM';
1253 i := i + 1;
1254 END IF;
1255
1256 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
1257 j := j + 1;
1258 ELSE
1259 EXIT;
1260 END IF;
1261 END LOOP;
1262
1263 END IF; -- REQUISITION
1264 inv_mwb_globals.g_last_query := query_str;
1265 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Ended Adding document_numbers' );
1266 EXCEPTION
1267 WHEN NO_DATA_FOUND THEN
1268 null;
1269 WHEN OTHERS THEN
1270 RAISE;
1271 END add_document_numbers;
1272
1273
1274 PROCEDURE add_orgs(
1275 x_node_value IN OUT NOCOPY NUMBER
1276 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
1277 , x_tbl_index IN OUT NOCOPY NUMBER
1278 ) IS
1279 query_str VARCHAR2(10000);
1280 query_hdl NUMBER;
1281 rows_processed NUMBER;
1282 org_id mtl_onhand_quantities.organization_id%TYPE;
1283 org_code mtl_parameters.organization_code%TYPE;
1284 i NUMBER := x_tbl_index;
1285 j NUMBER := x_node_value;
1286 table_required VARCHAR2(300);
1287 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
1288 --ER(3338592) Changes
1289 group_str VARCHAR2(10000) ;
1290 having_str VARCHAR2(10000) := ' HAVING 1=1 ';
1291 inb_select_clause VARCHAR2(500) := ' SELECT DISTINCT mp.organization_code , ms.to_organization_id ';
1292 inb_from_clause VARCHAR2(10000) := ' FROM ';
1293 inb_where_clause VARCHAR2(10000) := 'WHERE 1=1 ' ;
1294 inb_query_str VARCHAR2(20000);
1295 inb_orderby_clause VARCHAR2(100) := ' ORDER BY organization_code ';
1296 l_inbound_qty NUMBER;
1297 l_onhand_qty NUMBER;
1298 l_rcv_qty NUMBER;
1299 l_org_exists_flag BOOLEAN DEFAULT FALSE;
1300 --End of ER Changes
1301 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_ORGS';
1302 l_default_status_id NUMBER; -- Onhand Material Status Support
1303 BEGIN
1304 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
1305
1306 -- Onhand Material Status Support
1307 IF inv_mwb_globals.g_view_by = 'STATUS' THEN
1308 inv_mwb_globals.g_only_subinventory_status := 1;
1309 ELSE
1310 inv_mwb_globals.g_only_subinventory_status := NULL;
1311 END IF;
1312
1313 -- Getting the default org status id
1314 if (inv_mwb_globals.g_organization_id is not null) then
1315 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
1316 l_default_status_id := inv_cache.org_rec.default_status_id;
1317 end if;
1318 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
1319 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
1320 l_default_status_id := inv_cache.org_rec.default_status_id;
1321 end if;
1322 end if;
1323 -- End Onhand Material Status Support
1324
1325 -- If attributes relating to contents of an LPN are not specified then
1326 -- display all the LPNs in that location with the appropriate from
1327 -- and to LPN criteria
1328
1329 BEGIN
1330 SELECT sum(inbound)
1331 ,sum(onhand)
1332 ,sum(receiving)
1333 INTO l_inbound_qty
1334 ,l_onhand_qty
1335 ,l_rcv_qty
1336 FROM mtl_mwb_gtmp;
1337 EXCEPTION
1338 WHEN NO_DATA_FOUND THEN
1339 null;
1340 END;
1341
1342 /* Bug 8225619. Uncommented the below if condition */
1343 IF inv_mwb_globals.g_chk_inbound = 1 THEN
1344 -- AND l_inbound_qty IS NOT NULL THEN
1345 inb_from_clause := inb_from_clause || ' mtl_supply ms , mtl_parameters mp ';
1346 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = mp.organization_id ';
1347 inb_where_clause := inb_where_clause ||' AND ms.destination_type_code = ''INVENTORY'' ';
1348
1349 IF inv_mwb_globals.g_po_header_id IS NOT NULL
1350 OR inv_mwb_globals.g_vendor_id IS NOT NULL
1351 OR inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL
1352 OR inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1353
1354 -- CLM project, bug 9403291
1355 inb_from_clause := inb_from_clause || ' , po_headers_trx_v pha ';
1356 inb_where_clause := inb_where_clause ||' AND pha.po_header_id = ms.po_header_id ';
1357 inb_where_clause := inb_where_clause ||' AND pha.authorization_status = ''APPROVED'' ';
1358
1359 /* IF inv_mwb_globals.g_include_po_without_asn = 1 THEN
1360 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code IN (''PO'',''SHIPMENT'') ';
1361 ELSIF inv_mwb_globals.g_include_po_without_asn = 0 THEN
1362 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code = ''SHIPMENT'' ';
1363 END IF;
1364 */
1365 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
1366 inb_where_clause := inb_where_clause ||' AND pha.vendor_id = :inb_vendor_id ';
1367 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
1368 inb_where_clause := inb_where_clause ||' AND pha.vendor_site_id = :inb_vendor_site_id ';
1369 END IF;
1370 END IF;
1371
1372 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1373 -- CLM project, bug 9403291
1374 inb_from_clause := inb_from_clause || ' , po_lines_trx_v pla ';
1375 inb_where_clause := inb_where_clause ||' AND pla.po_line_id = ms.po_line_id ';
1376 inb_where_clause := inb_where_clause ||' AND pla.vendor_product_num = :inb_vendor_item ';
1377 END IF;
1378
1379 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
1380 inb_where_clause := inb_where_clause ||' AND ms.po_header_id = :inb_po_header_id ';
1381 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code = ''PO'' ';
1382 END IF;
1383
1384 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
1385 inb_where_clause := inb_where_clause ||' AND ms.po_release_id = :inb_po_release_id ';
1386 END IF;
1387
1388 IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
1389 inb_from_clause := inb_from_clause || ' , rcv_shipment_headers rsh ';
1390 inb_where_clause := inb_where_clause ||' AND rsh.shipment_header_id(+) = ms.shipment_header_id ';
1391 inb_where_clause := inb_where_clause ||' AND rsh.shipment_header_id = :inb_shipment_header_id_asn ';
1392 END IF;
1393
1394 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1395 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = :inb_to_organization_id ';
1396 END IF;
1397
1398 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1399 inb_where_clause := inb_where_clause ||' AND ms.item_id = :inb_item_id ';
1400 END IF;
1401
1402 -- ER(9158529 client)
1403 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1404 inb_where_clause := inb_where_clause || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
1405 END IF;
1406 -- ER(9158529 client)
1407
1408 IF inv_mwb_globals.g_revision IS NOT NULL THEN
1409 inb_where_clause := inb_where_clause ||' AND ms.item_revision = :inb_item_revision ';
1410 END IF;
1411
1412 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1413 inb_where_clause := inb_where_clause ||' AND ms.cost_group_id = :inb_cost_group_id ';
1414 END IF;
1415
1416 -- ER(9158529)
1417 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1418 inb_where_clause := inb_where_clause || ' AND ms.item_id in '
1419 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
1420 || ' where organization_id = :inb_to_organization_id '
1421 || ' and category_set_id = :inb_category_set_id '
1422 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
1423 END IF;
1424 -- ER(9158529)
1425
1426 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1427 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1428 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1429 inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date = :inb_expected_from_date ';
1430 END IF;
1431
1432 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1433 inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date >= :inb_expected_from_date ';
1434 END IF;
1435
1436 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1437 inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date <= :inb_expected_to_date ';
1438 END IF;
1439
1440 IF inv_mwb_globals.g_inventory_item_id IS NULL
1441 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1442 inb_from_clause := inb_from_clause || ' , mtl_system_items_kfv msik ';
1443 inb_where_clause := inb_where_clause ||' AND ms.item_id = msik.inventory_item_id ';
1444 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = msik.organization_id ';
1445 inb_where_clause := inb_where_clause ||' AND msik.description like :inb_item_description ';
1446 END IF;
1447
1448 ELSIF inv_mwb_globals.g_source_org_id IS NOT NULL
1449 OR inv_mwb_globals.g_req_header_id IS NOT NULL
1450 OR inv_mwb_globals.g_internal_order_id IS NOT NULL
1451 OR inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1452
1453 inb_from_clause := inb_from_clause || ' , rcv_shipment_headers rsh ';
1454 inb_from_clause := inb_from_clause || ' , rcv_shipment_lines rsl ';
1455 inb_where_clause := inb_where_clause ||' AND rsh.shipment_header_id(+) = ms.shipment_header_id ';
1456 inb_where_clause := inb_where_clause ||' AND rsl.shipment_line_id(+) = ms.shipment_line_id ';
1457 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code IN (''REQ'',''SHIPMENT'') ';
1458 inb_where_clause := inb_where_clause ||' AND rsh.asn_type IS NULL ';
1459
1460 IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1461 inb_where_clause := inb_where_clause ||' AND rsh.shipment_header_id = :inb_shipment_header_id ';
1462 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code = ''SHIPMENT'' ';
1463 ELSIF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
1464 inb_where_clause := inb_where_clause ||' AND ms.req_header_id = :inb_req_header_id ';
1465 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code = ''REQ'' ';
1466 END IF;
1467
1468 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
1469 inb_where_clause := inb_where_clause ||' AND ms.from_organization_id = :inb_from_organization_id ';
1470 END IF;
1471
1472 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1473 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = :inb_to_organization_id';
1474 END IF;
1475
1476 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1477 inb_where_clause := inb_where_clause ||' AND ms.item_id = :inb_item_id';
1478 END IF;
1479
1480 -- ER(9158529 client)
1481 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1482 inb_where_clause := inb_where_clause || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
1483 END IF;
1484 -- ER(9158529 client)
1485
1486 IF inv_mwb_globals.g_revision IS NOT NULL THEN
1487 inb_where_clause := inb_where_clause ||' AND ms.item_revision = :inb_item_revision';
1488 END IF;
1489
1490 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1491 inb_where_clause := inb_where_clause ||' AND ms.cost_group_id = :inb_cost_group_id';
1492 END IF;
1493
1494 -- ER(9158529)
1495 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1496 inb_where_clause := inb_where_clause || ' AND ms.item_id in '
1497 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
1498 || ' where organization_id = :inb_to_organization_id '
1499 || ' and category_set_id = :inb_category_set_id '
1500 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
1501 END IF;
1502 -- ER(9158529)
1503
1504 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1505 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1506 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1507 inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date = :inb_expected_from_date';
1508 END IF;
1509
1510 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1511 inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date >= :inb_expected_from_date';
1512 END IF;
1513
1514 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1515 inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date <= :inb_expected_to_date';
1516 END IF;
1517
1518 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
1519 OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
1520 inb_from_clause := inb_from_clause || ' , wms_license_plate_numbers wlpn ';
1521 inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
1522 END IF;
1523
1524 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1525 inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1526 inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1527 inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = :inb_lpn_from_id';
1528 END IF;
1529
1530 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1531 inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1532 inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number >= :inb_lpn_from';
1533 END IF;
1534
1535 IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1536 inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1537 inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number <= :inb_lpn_to';
1538 END IF;
1539
1540 IF inv_mwb_globals.g_lot_from IS NOT NULL
1541 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
1542 inb_from_clause := inb_from_clause || ' , rcv_lots_supply rls ';
1543 inb_where_clause := inb_where_clause ||' AND rls.shipment_line_id = ms.shipment_line_id ';
1544 inb_where_clause := inb_where_clause ||' AND rls.supply_type_code = ''SHIPMENT''';
1545 END IF;
1546
1547 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1548 inv_mwb_globals.g_lot_to IS NOT NULL AND
1549 inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1550 inb_where_clause := inb_where_clause ||' AND rls.lot_num = :inb_lot_from';
1551 END IF;
1552
1553 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1554 inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1555 inb_where_clause := inb_where_clause ||' AND rls.lot_num >= :inb_lot_from';
1556 END IF;
1557
1558 IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1559 inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1560 inb_where_clause := inb_where_clause ||' AND rls.lot_num <= :inb_lot_to';
1561 END IF;
1562
1563 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
1564 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
1565 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
1566 inb_from_clause := inb_from_clause || ', mtl_lot_numbers mln1 ';
1567 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
1568 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
1569 inb_from_clause := inb_from_clause || ' , rcv_lots_supply rls ';
1570 inb_where_clause := inb_where_clause ||' AND rls.shipment_line_id = ms.shipment_line_id ';
1571 inb_where_clause := inb_where_clause ||' AND rls.supply_type_code = ''SHIPMENT''';
1572 END IF;
1573
1574 inb_where_clause := inb_where_clause || ' AND rls.lot_num = mln1.lot_number';
1575
1576 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1577 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1578 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
1579 inb_where_clause := inb_where_clause || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
1580 END IF;
1581
1582 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1583 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
1584 inb_where_clause := inb_where_clause || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
1585 END IF;
1586
1587 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1588 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
1589 inb_where_clause := inb_where_clause || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
1590 END IF;
1591 END IF;
1592 /* End of Bug 8396954 */
1593
1594 IF inv_mwb_globals.g_serial_from IS NOT NULL
1595 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
1596 inb_from_clause := inb_from_clause || ' , rcv_serials_supply rss ';
1597 inb_where_clause := inb_where_clause ||' AND rss.shipment_line_id = ms.shipment_line_id ';
1598 inb_where_clause := inb_where_clause ||' AND rss.supply_type_code = ''SHIPMENT''';
1599 END IF;
1600
1601 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1602 inv_mwb_globals.g_serial_to IS NOT NULL AND
1603 inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1604 inb_where_clause := inb_where_clause ||' AND rss.serial_num = :inb_serial_from';
1605 END IF;
1606
1607 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1608 inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1609 inb_where_clause := inb_where_clause ||' AND rss.serial_num >= :inb_serial_from';
1610 END IF;
1611
1612 IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1613 inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1614 inb_where_clause := inb_where_clause ||' AND rss.serial_num <= :inb_serial_to';
1615 END IF;
1616
1617 IF inv_mwb_globals.g_inventory_item_id IS NULL
1618 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1619 inb_from_clause := inb_from_clause || ' , mtl_system_items_kfv msik ';
1620 inb_where_clause := inb_where_clause ||' AND ms.item_id = msik.inventory_item_id ';
1621 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = msik.organization_id ';
1622 inb_where_clause := inb_where_clause ||' AND msik.description like :inb_item_description ';
1623 END IF;
1624 ELSE -- If interorg and supplier tab null
1625
1626 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1627 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = :inb_to_organization_id';
1628 END IF;
1629
1630 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1631 inb_where_clause := inb_where_clause ||' AND ms.item_id = :inb_item_id';
1632 END IF;
1633
1634 -- ER(9158529 client)
1635 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1636 inb_where_clause := inb_where_clause || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
1637 END IF;
1638 -- ER(9158529 client)
1639
1640 IF inv_mwb_globals.g_revision IS NOT NULL THEN
1641 inb_where_clause := inb_where_clause ||' AND ms.item_revision = :inb_item_revision';
1642 END IF;
1643
1644 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1645 inb_where_clause := inb_where_clause ||' AND ms.cost_group_id = :inb_cost_group_id';
1646 END IF;
1647
1648 -- ER(9158529)
1649 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1650 inb_where_clause := inb_where_clause || ' AND ms.item_id in '
1651 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
1652 || ' where organization_id = :inb_to_organization_id '
1653 || ' and category_set_id = :inb_category_set_id '
1654 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
1655 END IF;
1656 -- ER(9158529)
1657
1658 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
1659 OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
1660 inb_from_clause := inb_from_clause || ' , rcv_shipment_lines rsl ';
1661 inb_where_clause := inb_where_clause ||' AND rsl.shipment_line_id = ms.shipment_line_id';
1662 inb_from_clause := inb_from_clause || ' , wms_license_plate_numbers wlpn ';
1663 inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
1664 END IF;
1665
1666 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1667 inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1668 inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1669 inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = :inb_lpn_from_id';
1670 END IF;
1671
1672 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1673 inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1674 inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number >= :inb_lpn_from';
1675 END IF;
1676
1677 IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1678 inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1679 inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number <= :inb_lpn_to';
1680 END IF;
1681
1682 IF inv_mwb_globals.g_lot_from IS NOT NULL
1683 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
1684 inb_from_clause := inb_from_clause || ' , rcv_lots_supply rls ';
1685 inb_where_clause := inb_where_clause ||' AND rls.shipment_line_id = ms.shipment_line_id ';
1686 inb_where_clause := inb_where_clause ||' AND rls.supply_type_code = ''SHIPMENT''';
1687 END IF;
1688
1689 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1690 inv_mwb_globals.g_lot_to IS NOT NULL AND
1691 inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1692 inb_where_clause := inb_where_clause ||' AND rls.lot_num = :inb_lot_from';
1693 END IF;
1694
1695 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1696 inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1697 inb_where_clause := inb_where_clause ||' AND rls.lot_num >= :inb_lot_from';
1698 END IF;
1699
1700 IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1701 inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1702 inb_where_clause := inb_where_clause ||' AND rls.lot_num <= :inb_lot_to';
1703 END IF;
1704
1705 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
1706 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
1707 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
1708 inb_from_clause := inb_from_clause || ', mtl_lot_numbers mln1 ';
1709 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
1710 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
1711 inb_from_clause := inb_from_clause || ' , rcv_lots_supply rls ';
1712 inb_where_clause := inb_where_clause ||' AND rls.shipment_line_id = ms.shipment_line_id ';
1713 inb_where_clause := inb_where_clause ||' AND rls.supply_type_code = ''SHIPMENT''';
1714 END IF;
1715
1716 inb_where_clause := inb_where_clause || ' AND rls.lot_num = mln1.lot_number';
1717
1718 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1719 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1720 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
1721 inb_where_clause := inb_where_clause || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
1722 END IF;
1723
1724 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1725 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
1726 inb_where_clause := inb_where_clause || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
1727 END IF;
1728
1729 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1730 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
1731 inb_where_clause := inb_where_clause || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
1732 END IF;
1733 END IF;
1734 /* End of Bug 8396954 */
1735
1736 IF inv_mwb_globals.g_serial_from IS NOT NULL
1737 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
1738 inb_from_clause := inb_from_clause || ' , rcv_serials_supply rss ';
1739 inb_where_clause := inb_where_clause ||' AND rss.shipment_line_id = ms.shipment_line_id ';
1740 inb_where_clause := inb_where_clause ||' AND rss.supply_type_code = ''SHIPMENT'' ';
1741 END IF;
1742
1743 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1744 inv_mwb_globals.g_serial_to IS NOT NULL AND
1745 inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1746 inb_where_clause := inb_where_clause ||' AND rss.serial_num = :inb_serial_from';
1747 END IF;
1748
1749 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1750 inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1751 inb_where_clause := inb_where_clause ||' AND rss.serial_num >= :inb_serial_from';
1752 END IF;
1753
1754 IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1755 inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1756 inb_where_clause := inb_where_clause ||' AND rss.serial_num <= :inb_serial_to';
1757 END IF;
1758
1759 IF inv_mwb_globals.g_inventory_item_id IS NULL
1760 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1761 inb_from_clause := inb_from_clause || ' , mtl_system_items_kfv msik ';
1762 inb_where_clause := inb_where_clause ||' AND ms.item_id = msik.inventory_item_id ';
1763 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = msik.organization_id ';
1764 inb_where_clause := inb_where_clause ||' AND msik.description like :inb_item_description ';
1765 END IF;
1766 END IF;
1767
1768
1769 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Here1'||inb_from_clause);
1770
1771 inb_where_clause := inb_where_clause ||' AND ms.supply_type_code NOT IN (''RECEIVING'') ';
1772 inb_query_str := inb_select_clause || inb_from_clause || inb_where_clause || inb_orderby_clause;
1773
1774 inv_mwb_globals.g_last_query := inb_query_str;
1775
1776 /* delete from rtest2;
1777 insert into rtest2 values (inb_query_str);
1778 commit;
1779 */
1780
1781 query_hdl := DBMS_SQL.open_cursor;
1782 DBMS_SQL.parse(query_hdl, inb_query_str, DBMS_SQL.native);
1783
1784 IF inv_mwb_globals.g_po_header_id IS NOT NULL
1785 OR inv_mwb_globals.g_vendor_id IS NOT NULL
1786 OR inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL
1787 OR inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1788
1789 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
1790 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
1791 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
1792 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
1793 END IF;
1794 END IF;
1795
1796 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1797 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
1798 END IF;
1799
1800 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
1801 DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
1802 END IF;
1803
1804 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
1805 DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
1806 END IF;
1807
1808 IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
1809 DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id_asn', inv_mwb_globals.g_shipment_header_id_asn);
1810 END IF;
1811
1812 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1813 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1814 END IF;
1815
1816 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1817 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
1818 END IF;
1819
1820 -- ER(9158529 client)
1821 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1822 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
1823 END IF;
1824 -- ER(9158529 client)
1825
1826 IF inv_mwb_globals.g_revision IS NOT NULL THEN
1827 DBMS_SQL.bind_variable(query_hdl, 'inb_item_revision', inv_mwb_globals.g_revision);
1828 END IF;
1829
1830 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1831 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
1832 END IF;
1833
1834 -- ER(9158529)
1835 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1836 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1837 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
1838 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
1839 END IF;
1840 -- ER(9158529)
1841
1842 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1843 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1844 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1845 DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1846 END IF;
1847
1848 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1849 DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1850 END IF;
1851
1852 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1853 DBMS_SQL.bind_variable(query_hdl, 'inb_expected_to_date', inv_mwb_globals.g_expected_to_date);
1854 END IF;
1855
1856 IF inv_mwb_globals.g_inventory_item_id IS NULL
1857 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1858 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
1859 END IF;
1860
1861 ELSIF inv_mwb_globals.g_source_org_id IS NOT NULL
1862 OR inv_mwb_globals.g_req_header_id IS NOT NULL
1863 OR inv_mwb_globals.g_internal_order_id IS NOT NULL
1864 OR inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1865
1866
1867 IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1868 DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', inv_mwb_globals.g_shipment_header_id_interorg);
1869 ELSIF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
1870 DBMS_SQL.bind_variable(query_hdl, 'inb_req_header_id', inv_mwb_globals.g_req_header_id);
1871 END IF;
1872
1873 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
1874 DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
1875 END IF;
1876
1877 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1878 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1879 END IF;
1880
1881 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1882 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
1883 END IF;
1884
1885 -- ER(9158529 client)
1886 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
1887 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
1888 END IF;
1889 -- ER(9158529 client)
1890
1891 IF inv_mwb_globals.g_revision IS NOT NULL THEN
1892 DBMS_SQL.bind_variable(query_hdl, 'inb_item_revision', inv_mwb_globals.g_revision);
1893 END IF;
1894
1895 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1896 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
1897 END IF;
1898
1899 -- ER(9158529)
1900 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
1901 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1902 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
1903 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
1904 END IF;
1905 -- ER(9158529)
1906
1907 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1908 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1909 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1910 DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1911 END IF;
1912
1913 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1914 DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1915 END IF;
1916
1917 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1918 DBMS_SQL.bind_variable(query_hdl, 'inb_expected_to_date', inv_mwb_globals.g_expected_to_date);
1919 END IF;
1920
1921 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1922 inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1923 inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1924 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
1925 END IF;
1926
1927 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1928 inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1929 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
1930 END IF;
1931
1932 IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1933 inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1934 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
1935 END IF;
1936
1937
1938 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1939 inv_mwb_globals.g_lot_to IS NOT NULL AND
1940 inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1941 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1942 END IF;
1943
1944 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1945 inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1946 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1947 END IF;
1948
1949 IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1950 inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1951 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
1952 END IF;
1953
1954 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
1955 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
1956 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
1957
1958 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1959 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1960 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
1961 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
1962 END IF;
1963
1964 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
1965 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
1966 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
1967 END IF;
1968
1969 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
1970 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
1971 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
1972 END IF;
1973 END IF;
1974 /* End of Bug 8396954 */
1975
1976 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1977 inv_mwb_globals.g_serial_to IS NOT NULL AND
1978 inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1979 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1980 END IF;
1981
1982 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1983 inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1984 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1985 END IF;
1986
1987 IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1988 inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1989 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
1990 END IF;
1991
1992 IF inv_mwb_globals.g_inventory_item_id IS NULL
1993 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1994 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
1995 END IF;
1996 ELSE -- If interorg and supplier tab null
1997 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Here2');
1998 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1999 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
2000 END IF;
2001
2002 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2003 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
2004 END IF;
2005
2006 -- ER(9158529 client)
2007 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
2008 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
2009 END IF;
2010 -- ER(9158529 client)
2011
2012 IF inv_mwb_globals.g_revision IS NOT NULL THEN
2013 DBMS_SQL.bind_variable(query_hdl, 'inb_item_revision', inv_mwb_globals.g_revision);
2014 END IF;
2015
2016 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2017 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
2018 END IF;
2019
2020 -- ER(9158529)
2021 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
2022 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
2023 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
2024 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
2025 END IF;
2026 -- ER(9158529)
2027
2028 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
2029 inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
2030 inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
2031 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
2032 END IF;
2033
2034 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
2035 inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
2036 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
2037 END IF;
2038
2039 IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
2040 inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
2041 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
2042 END IF;
2043
2044 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
2045 inv_mwb_globals.g_lot_to IS NOT NULL AND
2046 inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
2047 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
2048 END IF;
2049
2050 IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
2051 inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
2052 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
2053 END IF;
2054
2055 IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
2056 inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
2057 inb_where_clause := inb_where_clause ||' AND rls.lot_num <= :inb_lot_to';
2058 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
2059 END IF;
2060
2061 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
2062 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
2063 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
2064
2065 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2066 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2067 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
2068 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
2069 END IF;
2070
2071 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2072 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
2073 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
2074 END IF;
2075
2076 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2077 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
2078 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
2079 END IF;
2080 END IF;
2081 /* End of Bug 8396954 */
2082
2083 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
2084 inv_mwb_globals.g_serial_to IS NOT NULL AND
2085 inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
2086 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
2087 END IF;
2088
2089 IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
2090 inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
2091 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
2092 END IF;
2093
2094 IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
2095 inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
2096 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
2097 END IF;
2098
2099 IF inv_mwb_globals.g_inventory_item_id IS NULL
2100 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
2101 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
2102 END IF;
2103 END IF;
2104
2105 DBMS_SQL.define_column(query_hdl, 1, org_code, 3);
2106 DBMS_SQL.define_column(query_hdl, 2, org_id);
2107
2108 BEGIN
2109 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
2110 EXCEPTION
2111 WHEN NO_DATA_FOUND THEN
2112 NULL;
2113 -- RETURN;
2114 WHEN OTHERS THEN
2115 RAISE;
2116 END;
2117
2118 LOOP
2119 -- fetch a row
2120 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
2121 DBMS_SQL.column_value(query_hdl, 1, org_code);
2122 DBMS_SQL.column_value(query_hdl, 2, org_id);
2123
2124 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
2125 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
2126 x_node_tbl(i).DEPTH := 1;
2127 x_node_tbl(i).label := org_code;
2128 x_node_tbl(i).icon := 'inv_inor';
2129 x_node_tbl(i).VALUE := TO_CHAR(org_id);
2130 x_node_tbl(i).TYPE := 'ORG';
2131 i := i + 1;
2132 END IF;
2133 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
2134 j := j + 1;
2135 ELSE
2136 EXIT;
2137 END IF;
2138 END LOOP;
2139
2140 DBMS_SQL.close_cursor(query_hdl); -- close cursor
2141 x_node_value := j;
2142 x_tbl_index := i;
2143
2144 END IF; -- Inbound checkbox selected
2145 /* End of Bug 8225619. Uncommented the above END IF */
2146
2147 -- IF inv_mwb_globals.g_chk_receiving = 1 THEN
2148 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
2149 is_grade_t := TRUE ;
2150 END IF ;
2151 -- NSRIVAST, INVCONV, End
2152
2153 IF inv_mwb_globals.g_inventory_item_id IS NULL
2154 AND inv_mwb_globals.g_client_code IS NULL -- ER(9158529 client)
2155 AND inv_mwb_globals.g_revision IS NULL
2156 AND inv_mwb_globals.g_category_set_id IS NULL -- ER(9158529)
2157 AND inv_mwb_globals.g_category_id IS NULL -- ER(9158529)
2158 AND inv_mwb_globals.g_parent_lot IS NULL --BUG 7556505
2159 AND inv_mwb_globals.g_lot_from IS NULL
2160 AND inv_mwb_globals.g_lot_to IS NULL
2161 AND inv_mwb_globals.g_supplier_lot_from IS NULL -- Bug 8396954
2162 AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
2163 AND inv_mwb_globals.g_serial_from IS NULL
2164 AND inv_mwb_globals.g_serial_to IS NULL
2165 AND inv_mwb_globals.g_serial_controlled = 0 -- Bug #3411938
2166 AND inv_mwb_globals.g_lot_controlled = 0
2167 AND inv_mwb_globals.g_cost_group_id IS NULL
2168 AND inv_mwb_globals.g_status_id IS NULL
2169 AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
2170 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
2171 AND inv_mwb_globals.g_unit_number IS NULL
2172 AND inv_mwb_globals.g_project_id IS NULL
2173 AND inv_mwb_globals.g_task_id IS NULL
2174 AND inv_mwb_globals.g_planning_org IS NULL
2175 AND inv_mwb_globals.g_owning_org IS NULL
2176 AND( nvl(inv_mwb_globals.g_prepacked,1) <> 1
2177 OR inv_mwb_globals.g_lpn_from IS NOT NULL
2178 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
2179 --ER(3338592) Changes
2180 AND inv_mwb_globals.g_item_description IS NULL
2181 AND inv_mwb_globals.g_qty_from IS NULL
2182 AND inv_mwb_globals.g_qty_to IS NULL
2183 THEN
2184 --End of ER Changes
2185
2186 query_str := 'SELECT mp.organization_id, mp.organization_code ';
2187 query_str := query_str || 'from mtl_parameters mp where organization_id in ';
2188 query_str := query_str || '(select organization_id ';
2189 query_str := query_str || 'FROM wms_license_plate_numbers WHERE 1=1 ';
2190
2191 IF inv_mwb_globals.g_tree_mat_loc_id = 2
2192 OR inv_mwb_globals.g_chk_receiving = 1 THEN
2193 query_str := query_str || ' AND lpn_context = 3 ';
2194 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
2195 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11) ';
2196 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
2197 query_str := query_str || ' AND (lpn_context = 1) ';
2198 ELSIF inv_mwb_globals.g_prepacked <> 1
2199 AND inv_mwb_globals.g_prepacked <> 999
2200 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
2201 query_str := query_str || ' AND lpn_context = :prepacked ';
2202 END IF;
2203
2204 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2205 query_str := query_str || ' AND locator_id = :loc_id ';
2206 END IF;
2207
2208 -- NSRIVAST, INVCONV, Start
2209 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
2210 query_str := query_str || ' AND grade_code = :grade_f ' ;
2211 END IF ;
2212 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
2213 query_str := query_str || ' AND grade_code = :grade_c ' ;
2214 END IF ;
2215 -- NSRIVAST, INVCONV, End
2216
2217 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2218 query_str := query_str || ' AND subinventory_code = :sub ';
2219 END IF;
2220
2221 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2222 query_str := query_str || ' AND organization_id = :org_id ';
2223 END IF;
2224
2225 --bugfix#3646484
2226 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
2227 --User is querying for single LPN so converted the range query to equality query
2228 query_str := query_str || 'and license_plate_number = :lpn_f ';
2229 ELSE
2230 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
2231 query_str := query_str || 'and license_plate_number >= :lpn_f ';
2232 END IF;
2233
2234 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2235 query_str := query_str || 'and license_plate_number <= :lpn_t ';
2236 END IF;
2237 END IF;
2238
2239 query_str := query_str || ') ORDER BY organization_code ';
2240 ELSE
2241 query_str := ' SELECT mp.organization_id, mp.organization_code FROM mtl_parameters mp ';
2242 query_str := query_str || ' WHERE exists ( ';
2243
2244 -- Need to use MTL_ONHAND_TOTAL_V
2245 IF (
2246 inv_mwb_globals.g_serial_from IS NULL
2247 AND inv_mwb_globals.g_serial_to IS NULL
2248 AND inv_mwb_globals.g_unit_number IS NULL
2249 AND inv_mwb_globals.g_status_id IS NULL
2250 AND inv_mwb_globals.g_lpn_from IS NULL
2251 AND inv_mwb_globals.g_lpn_to IS NULL
2252 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
2253 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
2254 ) THEN
2255
2256 IF NVL(inv_mwb_globals.g_chk_receiving,0) = 1 THEN
2257 table_required := ' mtl_rcv_mwb_onhand_v v ';
2258 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
2259 table_required := ' mtl_onhand_total_mwb_v v ';
2260 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
2261 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
2262 END IF;
2263 ELSE
2264 table_required := ' mtl_onhand_total_v v ';
2265 END IF;
2266
2267 --bug 6633612
2268 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2269 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
2270 END IF;
2271 --bug 6633612
2272
2273 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
2274 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
2275 THEN
2276 query_str := query_str || 'SELECT v.organization_id from ' || table_required;
2277 query_str := query_str || 'WHERE 1=1 ';
2278 ELSE
2279 query_str :=
2280 query_str
2281 || ' SELECT v.organization_id from'
2282 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505 -- Bug 8396954
2283 || inv_mwb_globals.g_tree_lot_attr_query
2284 || ' ) mln, '
2285 || table_required;
2286 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
2287 --BUG 7556505
2288 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2289 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2290 END IF;
2291 --BUG 7556505
2292 /* Bug 8396954 added below code for supplier_lot_number */
2293 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2294 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2295 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
2296 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
2297 END IF;
2298
2299 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2300 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
2301 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
2302 END IF;
2303
2304 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2305 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
2306 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
2307 END IF;
2308 /* End of Bug 8396954 */
2309 END IF;
2310
2311 --ER(3338592) Changes (If the user gives the value for the Qty then only
2312 --Group by clause comes in to effect)
2313
2314 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2315 group_str := ' GROUP BY v.organization_id ';
2316 END IF;
2317
2318 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2319 query_str := query_str || ' AND v.subinventory_code = :sub ';
2320 --ER(3338592) Changes
2321 IF group_str IS NOT NULL THEN
2322 group_str := group_str || ' , v.subinventory_code ' ;
2323 END IF;
2324 END IF;
2325
2326 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
2327 --ER(3338592) Changes
2328 IF group_str IS NOT NULL THEN
2329 group_str := group_str || ' , v.subinventory_code ' ;
2330 END IF;
2331 END IF;
2332
2333 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2334 query_str := query_str || ' AND v.locator_id = :loc_id ';
2335 --ER(3338592) Changes
2336 IF group_str IS NOT NULL THEN
2337 group_str := group_str || ' , v.locator_id ' ;
2338 END IF;
2339 END IF;
2340
2341 --bug 6633612
2342 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2343 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
2344 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
2345 || ' AND rt.organization_id = mmt.organization_id '
2346 || ' AND rt.transaction_type = ''DELIVER'''
2347 || ' AND rt.destination_type_code = ''INVENTORY'''
2348 || ' AND mmt.transaction_id = v.create_transaction_id '
2349 || ' AND mmt.organization_id = v.organization_id ';
2350
2351 END IF;
2352 --bug 6633612
2353
2354 -- NSRIVAST, INVCONV, Start
2355 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
2356 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
2357 END IF ;
2358 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
2359 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
2360 END IF ;
2361 -- NSRIVAST, INVCONV, End
2362
2363 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
2364 --ER(3338592) Changes
2365 IF group_str IS NOT NULL THEN
2366 group_str := group_str || ' , v.locator_id ' ;
2367 END IF;
2368 END IF;
2369
2370 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
2371 query_str := query_str || ' AND v.project_id = :pr_id ';
2372 --ER(3338592) Changes
2373 IF group_str IS NOT NULL THEN
2374 group_str := group_str || ' , v.project_id ' ;
2375 END IF;
2376 END IF;
2377
2378 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
2379 query_str := query_str || ' AND v.task_id = :ta_id ';
2380 --ER(3338592) Changes
2381 IF group_str IS NOT NULL THEN
2382 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
2383 END IF;
2384 END IF;
2385
2386 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2387 query_str := query_str || ' AND v.inventory_item_id = :item_id ';
2388 END IF;
2389
2390 -- ER(9158529 client)
2391 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
2392 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
2393 END IF;
2394 -- ER(9158529 client)
2395
2396 --Bug # 3411938
2397 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
2398 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
2399 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
2400 END IF;
2401
2402 --ER(3338592) Changes
2403 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
2404 query_str := query_str || ' AND v.item_description LIKE :item_description ';
2405 END IF;
2406
2407 IF inv_mwb_globals.g_revision IS NOT NULL THEN
2408 query_str := query_str || ' AND v.revision = :rev ';
2409 --ER(3338592) Changes
2410 IF group_str IS NOT NULL THEN
2411 group_str := group_str || ' , v.revision ' ;
2412 END IF;
2413 END IF;
2414
2415 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2416 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
2417 --End of ER Changes
2418 IF group_str IS NOT NULL THEN
2419 group_str := group_str || ' , v.cost_group_id ' ;
2420 END IF;
2421 END IF;
2422
2423 -- ER(9158529)
2424 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
2425 query_str := query_str || ' AND v.inventory_item_id in '
2426 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
2427 || ' where organization_id = :organization_id '
2428 || ' and category_set_id = :category_set_id '
2429 || ' and category_id = nvl(:category_id, category_id))' ;
2430 END IF;
2431 -- ER(9158529)
2432
2433 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
2434 query_str := query_str || ' AND v.lot_number >= :lot_f ';
2435 END IF;
2436
2437 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
2438 query_str := query_str || ' AND v.lot_number <= :lot_t ';
2439 END IF;
2440
2441 IF inv_mwb_globals.g_lot_controlled = 2 THEN
2442 query_str := query_str || ' AND v.lot_number is not null ';
2443 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
2444 query_str := query_str || ' AND v.lot_number is null ';
2445 END IF;
2446
2447 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
2448 -- from onhand table (MOQD)
2449 if (l_default_status_id is not null) then
2450 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
2451 query_str := query_str || ' AND v.onhand_status_id = :st_id ';
2452 ELSE
2453 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
2454 query_str := query_str || ' AND v.onhand_status_id = :st_id ';
2455 END IF;
2456 END IF;
2457 else
2458 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
2459 query_str := query_str || ' AND (v.subinventory_status_id = :st_id ';
2460 query_str := query_str || ' OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
2461 END IF;
2462 end if;
2463
2464 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
2465 IF inv_mwb_globals.g_containerized = 1 THEN
2466 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
2467 ELSIF inv_mwb_globals.g_containerized = 2 THEN
2468 query_str := query_str || ' AND v.containerized_flag = 1 ';
2469 END IF;
2470 END IF;
2471
2472 IF inv_mwb_globals.g_serial_controlled = 1 THEN
2473 --query_str := query_str || 'AND serial_number_control_code not in (2,5) ';
2474 query_str := query_str || ' AND v.item_serial_control not in (2,5) ';
2475 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
2476 --query_str := query_str || 'AND serial_number_control_code in (2,5) ';
2477 query_str := query_str || ' AND v.item_serial_control in (2,5) ';
2478 END IF;
2479
2480 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
2481 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
2482 query_str := query_str || ' AND v.planning_tp_type = 2 ';
2483 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
2484 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
2485 query_str := query_str || ' AND v.planning_tp_type = 1 ';
2486 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
2487 query_str := query_str || ' AND v.planning_tp_type = 1 ';
2488 END IF;
2489
2490 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
2491 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
2492 query_str := query_str || ' AND v.owning_tp_type = 2 ';
2493 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
2494 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
2495 query_str := query_str || ' AND v.owning_tp_type = 1 ';
2496 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
2497 query_str := query_str || ' AND v.owning_tp_type = 1 ';
2498 END IF;
2499
2500 --Bug #3411938
2501 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2502 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
2503 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
2504 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
2505 END IF;
2506
2507 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
2508 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
2509 END IF;
2510
2511 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
2512 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
2513 END IF;
2514
2515 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2516 query_str := query_str || ' AND v.organization_id = mp.organization_id ';
2517 query_str := query_str || group_str || having_str || ' ) ' ;
2518 ELSE
2519 query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
2520 END IF;
2521
2522 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2523 query_str := query_str || 'and mp.organization_id = :org_id ';
2524 --Bug #3411938
2525 ELSE
2526 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
2527 query_str := query_str || ' FROM org_access_view oav ' ;
2528 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
2529 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
2530 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
2531 END IF;
2532
2533 query_str := query_str || ' ORDER BY organization_code ';
2534
2535 --Need to use MTL_ONHAND_SERIAL_V
2536
2537 ELSIF(
2538 (
2539 inv_mwb_globals.g_serial_from IS NOT NULL
2540 OR inv_mwb_globals.g_serial_from IS NOT NULL
2541 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
2542 OR inv_mwb_globals.g_unit_number IS NOT NULL
2543 )
2544 AND inv_mwb_globals.g_lpn_from IS NULL
2545 AND inv_mwb_globals.g_lpn_to IS NULL
2546 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
2547 ) THEN
2548 IF inv_mwb_globals.g_tree_mat_loc_id = 2
2549 OR inv_mwb_globals.g_chk_receiving = 1 THEN
2550 table_required := ' mtl_rcv_serial_oh_v v ';
2551 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
2552 table_required := ' mtl_onhand_serial_mwb_v v ';
2553 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
2554 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
2555 END IF ;
2556 ELSE
2557 table_required := ' mtl_onhand_serial_v v ';
2558 END IF;
2559
2560 --bug 6633612
2561 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2562 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
2563 END IF;
2564 --bug 6633612
2565
2566 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL) --BUG 7556505
2567 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
2568 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2569 query_str := query_str || ' SELECT v.organization_id from ' || table_required;
2570 query_str := query_str || ' WHERE 1=1 ';
2571 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL) --BUG 7556505
2572 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
2573 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
2574 query_str :=
2575 query_str
2576 || ' SELECT v.organization_id from'
2577 || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
2578 || inv_mwb_globals.g_tree_serial_attr_query
2579 || ') msn, '
2580 || table_required;
2581 query_str := query_str || ' WHERE msn.serial_num = v.serial_number ';
2582 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
2583 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL) --BUG 7556505 -- Bug 8396954
2584 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2585 query_str :=
2586 query_str
2587 || ' SELECT v.organization_id from'
2588 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505 -- Bug 8396954
2589 || inv_mwb_globals.g_tree_lot_attr_query
2590 || ' ) mln, '
2591 || table_required;
2592 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
2593
2594 --BUG 7556505
2595 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2596 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2597 END IF;
2598 --BUG 7556505
2599 /* Bug 8396954 added below code for supplier_lot_number */
2600 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2601 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2602 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
2603 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
2604 END IF;
2605
2606 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2607 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
2608 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
2609 END IF;
2610
2611 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2612 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
2613 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
2614 END IF;
2615 /* End of Bug 8396954 */
2616 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
2617 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL) --BUG 7556505 -- Bug 8396954
2618 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
2619 query_str :=
2620 query_str
2621 || ' SELECT v.organization_id from'
2622 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505 -- Bug 8396954
2623 || inv_mwb_globals.g_tree_lot_attr_query
2624 || ' ) mln, '
2625 || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
2626 || inv_mwb_globals.g_tree_serial_attr_query
2627 || ' ) msn, '
2628 || table_required;
2629 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
2630 --BUG 7556505
2631 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2632 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2633 END IF;
2634 --BUG 7556505
2635 /* Bug 8396954 added below code for supplier_lot_number */
2636 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2637 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2638 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
2639 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
2640 END IF;
2641
2642 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2643 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
2644 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
2645 END IF;
2646
2647 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2648 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
2649 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
2650 END IF;
2651 /* End of Bug 8396954 */
2652 query_str := query_str || ' AND msn.serial_num = serial_number ';
2653 END IF;
2654
2655 --ER(3338592) Changes (If the user gives the value for the Qty then only
2656 --Group by clause comes in to effect)
2657
2658 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2659 group_str := ' GROUP BY v.organization_id ';
2660 END IF;
2661
2662 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2663 query_str := query_str || ' AND v.subinventory_code = :sub ';
2664 --ER(3338592) Changes
2665 IF group_str IS NOT NULL THEN
2666 group_str := group_str || ' , v.subinventory_code ' ;
2667 END IF;
2668 END IF;
2669
2670 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
2671 --ER(3338592) Changes
2672 IF group_str IS NOT NULL THEN
2673 group_str := group_str || ' , v.subinventory_code ' ;
2674 END IF;
2675 END IF;
2676
2677 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2678 query_str := query_str || ' AND v.locator_id = :loc_id ';
2679 --ER(3338592) Changes
2680 IF group_str IS NOT NULL THEN
2681 group_str := group_str || ' , v.locator_id ' ;
2682 END IF;
2683 END IF;
2684
2685 --bug 6633612
2686 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2687 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
2688 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
2689 || ' AND rt.organization_id = mmt.organization_id '
2690 || ' AND rt.transaction_type = ''DELIVER'''
2691 || ' AND rt.destination_type_code = ''INVENTORY'''
2692 || ' AND mmt.transaction_id = v.last_transaction_id '
2693 || ' AND mmt.organization_id = v.organization_id ';
2694
2695 END IF;
2696 --bug 6633612
2697
2698 -- NSRIVAST, INVCONV, Start
2699 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
2700 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
2701 END IF ;
2702 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
2703 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
2704 END IF ;
2705 -- NSRIVAST, INVCONV, End
2706
2707 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
2708 --ER(3338592) Changes
2709 IF group_str IS NOT NULL THEN
2710 group_str := group_str || ' , v.locator_id ' ;
2711 END IF;
2712 END IF;
2713
2714 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
2715 query_str := query_str || ' AND v.project_id = :pr_id ';
2716 --ER(3338592) Changes
2717 IF group_str IS NOT NULL THEN
2718 group_str := group_str || ' , v.project_id ' ;
2719 END IF;
2720 END IF;
2721
2722 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
2723 query_str := query_str || ' AND v.task_id = :ta_id ';
2724 --ER(3338592) Changes
2725 IF group_str IS NOT NULL THEN
2726 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
2727 END IF;
2728 END IF;
2729
2730 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2731 query_str := query_str || ' AND v.inventory_item_id = :item_id ';
2732 END IF;
2733
2734 -- ER(9158529 client)
2735 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
2736 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
2737 END IF;
2738 -- ER(9158529 client)
2739
2740 --Bug # 3411938
2741 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
2742 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
2743 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
2744 END IF;
2745
2746 --ER(3338592) Changes
2747 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
2748 query_str := query_str || ' AND v.item_description LIKE :item_description ';
2749 END IF;
2750
2751 IF inv_mwb_globals.g_revision IS NOT NULL THEN
2752 query_str := query_str || ' AND v.revision = :rev ';
2753 --ER(3338592) Changes
2754 IF group_str IS NOT NULL THEN
2755 group_str := group_str || ' , v.revision ' ;
2756 END IF;
2757 END IF;
2758
2759 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2760 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
2761 --ER(3338592) Changes
2762 IF group_str IS NOT NULL THEN
2763 group_str := group_str || ' , v.cost_group_id ' ;
2764 END IF;
2765 END IF;
2766
2767 -- ER(9158529)
2768 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
2769 query_str := query_str || ' AND v.inventory_item_id in '
2770 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
2771 || ' where organization_id = :organization_id '
2772 || ' and category_set_id = :category_set_id '
2773 || ' and category_id = nvl(:category_id, category_id)) ' ;
2774 END IF;
2775 -- ER(9158529)
2776
2777 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
2778 query_str := query_str || ' AND v.lot_number >= :lot_f ';
2779 END IF;
2780
2781 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
2782 query_str := query_str || ' AND v.lot_number <= :lot_t ';
2783 END IF;
2784
2785 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
2786 query_str := query_str || ' AND v.serial_number >= :serial_f ';
2787 END IF;
2788
2789 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
2790 query_str := query_str || ' AND v.serial_number <= :serial_t ';
2791 END IF;
2792
2793 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
2794 query_str := query_str || ' AND v.unit_number=:un_id ';
2795 END IF;
2796
2797 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
2798 -- from serial table (MSN)
2799 if (l_default_status_id is not null) then
2800 IF (inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1)
2801 AND inv_mwb_globals.g_tree_mat_loc_id <> 2
2802 OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
2803 query_str := query_str || 'AND v.serial_status_id = :st_id ';
2804 END IF;
2805 else
2806 IF (inv_mwb_globals.g_status_id IS NOT NULL)
2807 AND inv_mwb_globals.g_tree_mat_loc_id <> 2
2808 OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
2809 query_str := query_str || ' AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
2810 query_str := query_str || ' OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
2811 END IF;
2812 end if;
2813
2814 IF inv_mwb_globals.g_lot_controlled = 2 THEN
2815 query_str := query_str || ' AND v.lot_number is not null ';
2816 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
2817 query_str := query_str || ' AND v.lot_number is null ';
2818 END IF;
2819
2820 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
2821 IF inv_mwb_globals.g_containerized = 1 THEN
2822 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
2823 ELSIF inv_mwb_globals.g_containerized = 2 THEN
2824 query_str := query_str || ' AND v.containerized_flag = 1 ';
2825 END IF;
2826 END IF;
2827
2828
2829 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
2830 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
2831 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
2832 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
2833 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
2834 query_str := query_str || ' AND planning_organization_id in ';
2835 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
2836 query_str := query_str || ' where vendor_id = :vendor_id )';
2837 END IF;*/
2838
2839 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
2840 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
2841 query_str := query_str || ' AND v.owning_tp_type = 2 ';
2842 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
2843 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
2844 query_str := query_str || ' AND v.owning_tp_type = 1 ';
2845 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
2846 query_str := query_str || ' AND v.owning_tp_type = 1 ';
2847 END IF;
2848
2849 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
2850 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
2851 query_str := query_str || ' AND v.planning_tp_type = 2 ';
2852 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
2853 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
2854 query_str := query_str || ' AND v.planning_tp_type = 1 ';
2855 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
2856 query_str := query_str || ' AND v.planning_tp_type = 1 ';
2857 END IF;
2858
2859 --Bug #3411938
2860 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2861 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
2862 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
2863 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
2864 END IF;
2865
2866 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
2867 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
2868 END IF;
2869
2870 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
2871 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
2872 END IF;
2873
2874 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2875 query_str := query_str || 'AND v.organization_id = mp.organization_id ';
2876 query_str := query_str || group_str || having_str || ' ) ' ;
2877 ELSE
2878 query_str := query_str || 'AND v.organization_id = mp.organization_id ) ';
2879 END IF;
2880
2881 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2882 query_str := query_str || 'and mp.organization_id = :org_id ';
2883 -- Bug #3411938
2884 ELSE
2885 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
2886 query_str := query_str || ' FROM org_access_view oav ' ;
2887 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
2888 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
2889 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
2890 END IF;
2891
2892 query_str := query_str || ' ORDER BY organization_code ';
2893
2894 -- Need to use both MTL_ONHAND_TOTAL_V AND MTL_ONHAND_SERIAL_V
2895 ELSIF(
2896 inv_mwb_globals.g_serial_from IS NULL
2897 AND inv_mwb_globals.g_serial_to IS NULL
2898 AND inv_mwb_globals.g_unit_number IS NULL
2899 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
2900 AND inv_mwb_globals.g_status_id IS NOT NULL
2901 AND inv_mwb_globals.g_lpn_from IS NULL
2902 AND inv_mwb_globals.g_lpn_to IS NULL
2903 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
2904 ) THEN
2905 IF (inv_mwb_globals.g_status_id IS NULL) THEN
2906 table_required := ' mtl_onhand_total_mwb_v v ';
2907 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
2908 -- table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
2909 ELSE
2910 table_required := ' mtl_onhand_total_v v ';
2911 END IF;
2912
2913 --bug 6633612
2914 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2915 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
2916 END IF;
2917 --bug 6633612
2918
2919 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
2920 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN -- Bug 8396954
2921 query_str := query_str || 'SELECT v.organization_id from ' || table_required;
2922 query_str := query_str || 'WHERE 1=1 ';
2923 ELSE
2924 query_str :=
2925 query_str
2926 || 'SELECT v.organization_id from'
2927 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505, BUG 13970892
2928 || inv_mwb_globals.g_tree_lot_attr_query
2929 || ') mln, '
2930 || table_required;
2931 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
2932 --BUG 7556505
2933 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2934 query_str := query_str || 'AND mln.parent_lot_number = :parent_lot ';
2935 END IF;
2936 --BUG 7556505
2937 /* Bug 8396954 added below code for supplier_lot_number */
2938 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2939 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2940 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
2941 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
2942 END IF;
2943
2944 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
2945 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
2946 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
2947 END IF;
2948
2949 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
2950 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
2951 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
2952 END IF;
2953 /* End of Bug 8396954 */
2954 END IF;
2955
2956 --ER(3338592) Changes (If the user gives the value for the Qty then only
2957 --Group by clause comes in to effect)
2958
2959 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2960 group_str := ' GROUP BY v.organization_id ';
2961 END IF;
2962
2963 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2964 query_str := query_str || 'AND v.subinventory_code = :sub ';
2965 --ER(3338592) Changes
2966 IF group_str IS NOT NULL THEN
2967 group_str := group_str || ' , v.subinventory_code ' ;
2968 END IF;
2969 END IF;
2970
2971 --bug 6633612
2972 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2973 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
2974 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
2975 || ' AND rt.organization_id = mmt.organization_id '
2976 || ' AND rt.transaction_type = ''DELIVER'''
2977 || ' AND rt.destination_type_code = ''INVENTORY'''
2978 || ' AND mmt.transaction_id = v.create_transaction_id '
2979 || ' AND mmt.organization_id = v.organization_id ';
2980
2981 END IF;
2982 --bug 6633612
2983
2984 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
2985 --ER(3338592) Changes
2986 IF group_str IS NOT NULL THEN
2987 group_str := group_str || ' , v.subinventory_code ' ;
2988 END IF;
2989 END IF;
2990
2991 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2992 query_str := query_str || 'AND v.locator_id = :loc_id ';
2993 --ER(3338592) Changes
2994 IF group_str IS NOT NULL THEN
2995 group_str := group_str || ' , v.locator_id ' ;
2996 END IF;
2997 END IF;
2998
2999 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
3000 --ER(3338592) Changes
3001 IF group_str IS NOT NULL THEN
3002 group_str := group_str || ' , v.locator_id ' ;
3003 END IF;
3004 END IF;
3005
3006 -- NSRIVAST, INVCONV, Start
3007 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3008 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
3009 END IF ;
3010 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
3011 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
3012 END IF ;
3013 -- NSRIVAST, INVCONV, End
3014
3015 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
3016 query_str := query_str || ' AND v.project_id = :pr_id ';
3017 --ER(3338592) Changes
3018 IF group_str IS NOT NULL THEN
3019 group_str := group_str || ' , v.project_id ' ;
3020 END IF;
3021 END IF;
3022
3023 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
3024 query_str := query_str || ' AND v.task_id = :ta_id ';
3025 --ER(3338592) Changes
3026 IF group_str IS NOT NULL THEN
3027 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
3028 END IF;
3029 END IF;
3030
3031 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3032 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
3033 END IF;
3034
3035 -- ER(9158529 client)
3036 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
3037 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
3038 END IF;
3039 -- ER(9158529 client)
3040
3041 --Bug # 3411938
3042 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
3043 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
3044 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
3045 END IF;
3046
3047 --ER(3338592) Changes
3048 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3049 query_str := query_str || ' AND v.item_description LIKE :item_description ';
3050 END IF;
3051
3052 IF inv_mwb_globals.g_revision IS NOT NULL THEN
3053 query_str := query_str || 'AND v.revision = :rev ';
3054 --ER(3338592) Changes
3055 IF group_str IS NOT NULL THEN
3056 group_str := group_str || ' , v.revision ' ;
3057 END IF;
3058 END IF;
3059
3060 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3061 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
3062 --ER(3338592) Changes
3063 IF group_str IS NOT NULL THEN
3064 group_str := group_str || ' , v.cost_group_id ' ;
3065 END IF;
3066 END IF;
3067
3068 -- ER(9158529)
3069 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
3070 query_str := query_str || ' AND v.inventory_item_id in '
3071 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
3072 || ' where organization_id = :organization_id '
3073 || ' and category_set_id = :category_set_id '
3074 || ' and category_id = nvl(:category_id, category_id)) ' ;
3075 END IF;
3076 -- ER(9158529)
3077
3078 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3079 query_str := query_str || 'AND v.lot_number >= :lot_f ';
3080 END IF;
3081
3082 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3083 query_str := query_str || 'AND v.lot_number <= :lot_t ';
3084 END IF;
3085
3086 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
3087 query_str := query_str || ' AND v.unit_number=:un_id ';
3088 END IF;
3089
3090 IF inv_mwb_globals.g_lot_controlled = 2 THEN
3091 query_str := query_str || 'AND v.lot_number is not null ';
3092 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
3093 query_str := query_str || 'AND v.lot_number is null ';
3094 END IF;
3095
3096 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
3097 -- from onhand table (MOQD)
3098 if (l_default_status_id is not null) then
3099 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
3100 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
3101 END IF;
3102 else
3103 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3104 query_str := query_str || 'AND (v.subinventory_status_id = :st_id ';
3105 query_str := query_str || 'OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
3106 END IF;
3107 end if;
3108
3109 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
3110 IF inv_mwb_globals.g_containerized = 1 THEN
3111 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
3112 ELSIF inv_mwb_globals.g_containerized = 2 THEN
3113 query_str := query_str || ' AND v.containerized_flag = 1 ';
3114 END IF;
3115 END IF;
3116
3117 IF inv_mwb_globals.g_serial_controlled = 1 THEN
3118 --query_str := query_str || 'AND serial_number_control_code not in (2,5) ';
3119 query_str := query_str || 'AND v.item_serial_control not in (2,5) ';
3120 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
3121 --query_str := query_str || 'AND serial_number_control_code in (2,5) ';
3122 query_str := query_str || 'AND v.item_serial_control in (2,5) ';
3123 END IF;
3124
3125 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
3126 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
3127 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
3128 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
3129 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
3130 query_str := query_str || ' AND planning_organization_idanization_id in ';
3131 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
3132 query_str := query_str || ' where vendor_id = :vendor_id )';
3133 END IF;*/
3134
3135 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
3136 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
3137 query_str := query_str || ' AND v.owning_tp_type = 2 ';
3138 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3139 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
3140 query_str := query_str || ' AND v.owning_tp_type = 1 ';
3141 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
3142 query_str := query_str || ' AND v.owning_tp_type = 1 ';
3143 END IF;
3144
3145 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
3146 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
3147 query_str := query_str || ' AND v.planning_tp_type = 2 ';
3148 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
3149 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
3150 query_str := query_str || ' AND v.planning_tp_type = 1 ';
3151 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
3152 query_str := query_str || ' AND v.planning_tp_type = 1 ';
3153 END IF;
3154
3155 --Bug #3411938
3156 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3157 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
3158 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
3159 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
3160 END IF;
3161
3162 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3163 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
3164 END IF;
3165
3166 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3167 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
3168 END IF;
3169
3170 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3171 query_str := query_str || 'AND v.organization_id = mp.organization_id ';
3172 query_str := query_str || group_str || having_str || ' ' ;
3173 ELSE
3174 query_str := query_str || 'AND v.organization_id = mp.organization_id ';
3175 END IF;
3176
3177 query_str := query_str || 'UNION ALL ';
3178
3179 --Reinitializing the variable
3180 having_str := ' HAVING 1=1 ' ;
3181
3182 IF (inv_mwb_globals.g_status_id IS NULL) THEN
3183 table_required := ' mtl_onhand_serial_mwb_v v ';
3184 ELSE
3185 table_required := ' mtl_onhand_serial_v v ';
3186 END IF;
3187
3188 --bug 6633612
3189 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3190 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
3191 END IF;
3192 --bug 6633612
3193
3194 --BUG 7556505
3195 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
3196 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
3197 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
3198 query_str := query_str || 'SELECT v.organization_id from ' || table_required;
3199 query_str := query_str || 'WHERE 1=1 ';
3200 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
3201 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
3202 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
3203 query_str :=
3204 query_str
3205 || 'SELECT v.organization_id from'
3206 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
3207 || inv_mwb_globals.g_tree_lot_attr_query
3208 || ') mln, '
3209 || table_required;
3210 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
3211 --BUG 7556505
3212 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3213 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
3214 END IF;
3215 --BUG 7556505
3216 /* Bug 8396954 added below code for supplier_lot_number */
3217 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3218 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3219 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
3220 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
3221 END IF;
3222
3223 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3224 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
3225 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
3226 END IF;
3227
3228 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3229 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
3230 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
3231 END IF;
3232 /* End of Bug 8396954 */
3233 END IF;
3234
3235 --ER(3338592) Changes (If the user gives the value for the Qty then only
3236 --Group by clause comes in to effect)
3237
3238 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3239 group_str := ' GROUP BY v.organization_id ';
3240 END IF;
3241
3242 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3243 query_str := query_str || 'AND v.subinventory_code = :sub ';
3244 --ER(3338592) Changes
3245 IF group_str IS NOT NULL THEN
3246 group_str := group_str || ' , v.subinventory_code ' ;
3247 END IF;
3248 END IF;
3249
3250 --bug 6633612
3251 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3252 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
3253 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
3254 || ' AND rt.organization_id = mmt.organization_id '
3255 || ' AND rt.transaction_type = ''DELIVER'''
3256 || ' AND rt.destination_type_code = ''INVENTORY'''
3257 || ' AND mmt.transaction_id = v.last_transaction_id '
3258 || ' AND mmt.organization_id = v.organization_id ';
3259
3260 END IF;
3261 --bug 6633612
3262
3263 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
3264 --ER(3338592) Changes
3265 IF group_str IS NOT NULL THEN
3266 group_str := group_str || ' , v.subinventory_code ' ;
3267 END IF;
3268 END IF;
3269
3270 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3271 query_str := query_str || 'AND v.locator_id = :loc_id ';
3272 --ER(3338592) Changes
3273 IF group_str IS NOT NULL THEN
3274 group_str := group_str || ' , v.locator_id ' ;
3275 END IF;
3276 END IF;
3277
3278 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
3279 --ER(3338592) Changes
3280 IF group_str IS NOT NULL THEN
3281 group_str := group_str || ' , v.locator_id ' ;
3282 END IF;
3283 END IF;
3284
3285 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3286 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
3287 END IF;
3288
3289 -- ER(9158529 client)
3290 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
3291 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
3292 END IF;
3293 -- ER(9158529 client)
3294
3295 --Bug # 3411938
3296 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
3297 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
3298 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
3299 END IF;
3300
3301 --ER(3338592) Changes
3302 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3303 query_str := query_str || ' AND v.item_description LIKE :item_description ';
3304 END IF;
3305
3306 IF inv_mwb_globals.g_revision IS NOT NULL THEN
3307 query_str := query_str || 'AND v.revision = :rev ';
3308 --ER(3338592) Changes
3309 IF group_str IS NOT NULL THEN
3310 group_str := group_str || ' , v.revision ' ;
3311 END IF;
3312 END IF;
3313
3314 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3315 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
3316 --ER(3338592) Changes
3317 IF group_str IS NOT NULL THEN
3318 group_str := group_str || ' , v.cost_group_id ' ;
3319 END IF;
3320 END IF;
3321
3322 -- ER(9158529)
3323 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
3324 query_str := query_str || ' AND v.inventory_item_id in '
3325 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
3326 || ' where organization_id = :organization_id '
3327 || ' and category_set_id = :category_set_id '
3328 || ' and category_id = nvl(:category_id, category_id))' ;
3329 END IF;
3330 -- ER(9158529)
3331
3332 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3333 query_str := query_str || ' AND v.lot_number >= :lot_f ';
3334 END IF;
3335
3336 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3337 query_str := query_str || ' AND v.lot_number <= :lot_t ';
3338 END IF;
3339
3340 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
3341 query_str := query_str || ' AND v.serial_number >= :serial_f ';
3342 END IF;
3343
3344 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
3345 query_str := query_str || ' AND v.serial_number <= :serial_t ';
3346 END IF;
3347
3348 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
3349 -- from serial table (MSN)
3350 if (l_default_status_id is not null) then
3351 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
3352 query_str := query_str || 'AND v.serial_status_id = :st_id ';
3353 END IF;
3354 else
3355 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3356 query_str := query_str || 'AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
3357 query_str := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
3358 END IF;
3359 end if;
3360
3361 IF inv_mwb_globals.g_lot_controlled = 2 THEN
3362 query_str := query_str || 'AND v.lot_number is not null ';
3363 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
3364 query_str := query_str || 'AND v.lot_number is null ';
3365 END IF;
3366
3367 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
3368 IF inv_mwb_globals.g_containerized = 1 THEN
3369 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
3370 ELSIF inv_mwb_globals.g_containerized = 2 THEN
3371 query_str := query_str || ' AND v.containerized_flag = 1 ';
3372 END IF;
3373 END IF;
3374
3375 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3376 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
3377 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
3378 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
3379 END IF;
3380
3381 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3382 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
3383 END IF;
3384
3385 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3386 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
3387 END IF;
3388
3389 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3390 query_str := query_str || ' AND v.organization_id = mp.organization_id ';
3391 query_str := query_str || group_str || having_str || ' ) ' ;
3392 ELSE
3393 query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
3394 END IF;
3395
3396 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3397 query_str := query_str || ' and mp.organization_id = :org_id ';
3398 -- Bug # 3411938
3399 ELSE
3400 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
3401 query_str := query_str || ' FROM org_access_view oav ' ;
3402 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
3403 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
3404 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
3405 END IF;
3406
3407 query_str := query_str || ' ORDER BY organization_code ';
3408
3409 -- Need to use MTL_ONHAND_LPN_V
3410 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
3411 OR inv_mwb_globals.g_lpn_to IS NOT NULL
3412 OR nvl(inv_mwb_globals.g_prepacked,1) <> 1) THEN
3413 IF inv_mwb_globals.g_tree_mat_loc_id = 2
3414 OR inv_mwb_globals.g_chk_receiving = 1 THEN
3415 table_required := ' mtl_onhand_lpn_mwb_v mol ';
3416 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
3417 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
3418 table_required := ' mtl_onhand_lpn_mwb_v mol ';
3419 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
3420 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
3421 END IF;
3422 ELSE
3423 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
3424 END IF;
3425 ELSE
3426 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
3427 table_required := ' mtl_onhand_lpn_v mol ';
3428 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
3429 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
3430 END IF;
3431 ELSE
3432 table_required := ' mtl_onhand_new_lpn_v mol ';
3433 END IF;
3434 END IF;
3435
3436 query_str := query_str || ' SELECT organization_id from ' || table_required;
3437
3438 IF inv_mwb_globals.g_lpn_from IS NOT NULL
3439 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3440 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
3441 query_str := query_str || ' WHERE 1=1 ';
3442
3443 IF inv_mwb_globals.g_tree_mat_loc_id = 2
3444 OR inv_mwb_globals.g_chk_receiving = 1 THEN
3445 query_str := query_str || ' AND lpn_context = 3 ';
3446 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
3447 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
3448 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
3449 query_str := query_str || ' AND lpn_context = 1 ';
3450 ELSIF inv_mwb_globals.g_prepacked <> 1
3451 AND inv_mwb_globals.g_prepacked <> 999
3452 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
3453 query_str := query_str || ' AND lpn_context = :prepacked ';
3454 END IF;
3455
3456 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3457 query_str := query_str || ' AND wlpn.locator_id = :loc_id ';
3458 END IF;
3459
3460 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3461 query_str := query_str || ' AND wlpn.subinventory_code = :sub ';
3462 END IF;
3463
3464 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3465 query_str := query_str || ' AND wlpn.organization_id = :org_id ';
3466 END IF;
3467
3468 IF inv_mwb_globals.g_lpn_from IS NOT NULL
3469 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3470 IF inv_mwb_globals.g_lpn_from IS NOT NULL
3471 AND inv_mwb_globals.g_lpn_to IS NULL THEN
3472 query_str := query_str || ' and license_plate_number >= :lpn_f ';
3473 ELSIF inv_mwb_globals.g_lpn_from IS NULL
3474 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3475 query_str := query_str || ' and license_plate_number <= :lpn_t ';
3476 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
3477 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3478 --bugfix#3646484
3479 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
3480 --User is querying for single LPN so converted the range query to equality query
3481 query_str := query_str || 'and license_plate_number = :lpn_f ';
3482 ELSE
3483 query_str := query_str || ' and license_plate_number >= :lpn_f ';
3484 query_str := query_str || ' and license_plate_number <= :lpn_t ';
3485 END IF;
3486 END IF;
3487 END IF;
3488
3489 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
3490 END IF;
3491
3492 --BUG 7556505
3493 IF(inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
3494 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
3495 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
3496 query_str := query_str || 'WHERE 1=1 ';
3497 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
3498 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
3499 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
3500 query_str :=
3501 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
3502 || ') msn ';
3503 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
3504 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
3505 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
3506 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
3507 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
3508 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
3509 --BUG 7556505
3510 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3511 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
3512 END IF;
3513 --BUG 7556505
3514 /* Bug 8396954 added below code for supplier_lot_number */
3515 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3516 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3517 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
3518 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
3519 END IF;
3520
3521 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3522 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
3523 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
3524 END IF;
3525
3526 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3527 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
3528 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
3529 END IF;
3530 /* End of Bug 8396954 */
3531 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
3532 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
3533 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
3534 query_str :=
3535 query_str
3536 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
3537 || inv_mwb_globals.g_tree_lot_attr_query
3538 || ') mln '
3539 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
3540 || inv_mwb_globals.g_tree_serial_attr_query
3541 || ') msn ';
3542 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
3543 --BUG 7556505
3544 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3545 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
3546 END IF;
3547 --BUG 7556505
3548 /* Bug 8396954 added below code for supplier_lot_number */
3549 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3550 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3551 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
3552 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
3553 END IF;
3554
3555 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3556 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
3557 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
3558 END IF;
3559
3560 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3561 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
3562 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
3563 END IF;
3564 /* End of Bug 8396954 */
3565
3566 query_str := query_str || 'AND msn.serial_num = serial_number ';
3567 END IF;
3568
3569 --ER(3338592) Changes (If the user gives the value for the Qty then only
3570 --Group by clause comes in to effect)
3571
3572 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3573 group_str := ' GROUP BY organization_id ';
3574 END IF;
3575
3576 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3577 query_str := query_str || 'AND subinventory_code = :sub ';
3578 --ER(3338592) Changes
3579 IF group_str IS NOT NULL THEN
3580 group_str := group_str || ' , subinventory_code ' ;
3581 END IF;
3582 END IF;
3583
3584 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
3585 --ER(3338592) Changes
3586 IF group_str IS NOT NULL THEN
3587 group_str := group_str || ' , subinventory_code ' ;
3588 END IF;
3589 END IF;
3590
3591 -- NSRIVAST, INVCONV, Start
3592 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3593 query_str := query_str || ' AND grade_code = :grade_f ' ;
3594 END IF ;
3595 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
3596 query_str := query_str || ' AND grade_code = :grade_c ' ;
3597 END IF ;
3598 -- NSRIVAST, INVCONV, End
3599
3600 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3601 query_str := query_str || 'AND locator_id = :loc_id ';
3602 --ER(3338592) Changes
3603 IF group_str IS NOT NULL THEN
3604 group_str := group_str || ' , locator_id ' ;
3605 END IF;
3606 END IF;
3607
3608 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
3609 --ER(3338592) Changes
3610 IF group_str IS NOT NULL THEN
3611 group_str := group_str || ' , locator_id ' ;
3612 END IF;
3613 END IF;
3614
3615 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
3616 query_str := query_str || ' AND project_id = :pr_id ';
3617 --ER(3338592) Changes
3618 IF group_str IS NOT NULL THEN
3619 group_str := group_str || ' , project_id ' ;
3620 END IF;
3621 END IF;
3622
3623 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
3624 query_str := query_str || ' AND task_id = :ta_id ';
3625 --ER(3338592) Changes
3626 IF group_str IS NOT NULL THEN
3627 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
3628 END IF;
3629 END IF;
3630
3631 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3632 query_str := query_str || ' AND inventory_item_id = :item_id ';
3633 END IF;
3634
3635 -- ER(9158529 client)
3636 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
3637 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
3638 END IF;
3639 -- ER(9158529 client)
3640
3641 --Bug # 3411938
3642 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
3643 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
3644 group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
3645 END IF;
3646
3647 --ER(3338592) Changes
3648 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3649 query_str := query_str || ' AND item_description LIKE :item_description ';
3650 END IF;
3651
3652 IF inv_mwb_globals.g_revision IS NOT NULL THEN
3653 query_str := query_str || ' AND revision = :rev ';
3654 --ER(3338592) Changes
3655 IF group_str IS NOT NULL THEN
3656 group_str := group_str || ' , revision ' ;
3657 END IF;
3658 END IF;
3659
3660 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3661 query_str := query_str || ' AND cost_group_id = :cg_id ';
3662 --ER(3338592) Changes
3663 IF group_str IS NOT NULL THEN
3664 group_str := group_str || ' , cost_group_id ' ;
3665 END IF;
3666 END IF;
3667
3668 -- ER(9158529)
3669 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
3670 query_str := query_str || ' AND inventory_item_id in '
3671 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
3672 || ' where organization_id = :organization_id '
3673 || ' and category_set_id = :category_set_id '
3674 || ' and category_id = nvl(:category_id, category_id))' ;
3675 END IF;
3676 -- ER(9158529)
3677
3678 IF inv_mwb_globals.g_lpn_from IS NOT NULL
3679 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3680 query_str := query_str || ' AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
3681 END IF;
3682
3683 --ER(3338592) Changes
3684 IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3685 --ER(3338592) Changes
3686 IF group_str IS NOT NULL THEN
3687 group_str := group_str || ' , lpn ' ;
3688 END IF;
3689 END IF;
3690
3691 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3692 query_str := query_str || ' AND lot_number >= :lot_f ';
3693 END IF;
3694
3695 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3696 query_str := query_str || ' AND lot_number <= :lot_t ';
3697 END IF;
3698
3699 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
3700 query_str := query_str || ' AND serial_number >= :serial_f ';
3701 END IF;
3702
3703 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
3704 query_str := query_str || ' AND serial_number <= :serial_t ';
3705 END IF;
3706
3707 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
3708 query_str := query_str || ' AND unit_number=:un_id ';
3709 END IF;
3710
3711 /*LPN Status Project */
3712 IF (l_default_status_id IS NOT NULL) THEN
3713 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
3714 query_str := query_str || 'AND onhand_status_id = :st_id ';
3715 END IF;
3716 ELSE
3717 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3718 query_str := query_str || ' AND (subinventory_status_id = :st_id OR locator_status_id = :st_id ';
3719 query_str := query_str || ' OR lot_status_id = :st_id OR serial_status_id = :st_id) ';
3720 END IF;
3721 END IF;
3722 /*End of fix for LPN Status Project */
3723
3724 IF inv_mwb_globals.g_lot_controlled = 2 THEN
3725 query_str := query_str || ' AND lot_number is not null ';
3726 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
3727 query_str := query_str || ' AND lot_number is null ';
3728 END IF;
3729
3730 IF inv_mwb_globals.g_serial_controlled = 1 THEN
3731 query_str := query_str || ' AND serial_number is null ';
3732 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
3733 query_str := query_str || ' AND serial_number is not null ';
3734 END IF;
3735
3736 IF inv_mwb_globals.g_tree_mat_loc_id = 2
3737 OR inv_mwb_globals.g_chk_receiving = 1 THEN
3738 query_str := query_str || ' AND lpn_context = 3 ';
3739 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
3740 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 ) ';
3741 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
3742 query_str := query_str || 'AND lpn_context = 1 ';
3743 ELSIF inv_mwb_globals.g_prepacked <> 1
3744 AND inv_mwb_globals.g_prepacked <> 999
3745 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
3746 query_str := query_str || 'AND lpn_context = :prepacked ';
3747 END IF;
3748
3749 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
3750 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
3751 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
3752 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
3753 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
3754 query_str := query_str || ' AND planning_organization_id in ';
3755 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
3756 query_str := query_str || ' where vendor_id = :vendor_id )';
3757 END IF;*/
3758
3759 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
3760 query_str := query_str || ' AND owning_organization_id = :own_org ';
3761 query_str := query_str || ' AND owning_tp_type = 2 ';
3762 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3763 query_str := query_str || ' AND owning_organization_id = :own_org ';
3764 query_str := query_str || ' AND owning_tp_type = 1 ';
3765 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
3766 query_str := query_str || ' AND owning_tp_type = 1 ';
3767 END IF;
3768
3769 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
3770 query_str := query_str || ' AND planning_organization_id = :plan_org ';
3771 query_str := query_str || ' AND planning_tp_type = 2 ';
3772 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
3773 query_str := query_str || ' AND planning_organization_id = :plan_org ';
3774 query_str := query_str || ' AND planning_tp_type = 1 ';
3775 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
3776 query_str := query_str || ' AND planning_tp_type = 1 ';
3777 END IF;
3778
3779 --Bug #3411938
3780 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3781 group_str := group_str || ' , planning_organization_id, planning_tp_type ';
3782 group_str := group_str || ' , owning_organization_id, owning_tp_type ';
3783 group_str := group_str || ' , item_lot_control, item_serial_control ';
3784 END IF;
3785
3786 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3787 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
3788 END IF;
3789
3790 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3791 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
3792 END IF;
3793
3794 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3795 query_str := query_str || 'AND organization_id = mp.organization_id ';
3796 query_str := query_str || group_str || having_str || ' ) ' ;
3797 ELSE
3798 query_str := query_str || 'AND organization_id = mp.organization_id ) ';
3799 END IF;
3800
3801 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3802 query_str := query_str || 'and mp.organization_id = :org_id ';
3803 --Bug # 3411938
3804 ELSE
3805 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
3806 query_str := query_str || ' FROM org_access_view oav ' ;
3807 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
3808 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
3809 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
3810 END IF;
3811
3812 query_str := query_str || ' ORDER BY organization_code ';
3813
3814 END IF;
3815 END IF;
3816
3817 --trace1(query_str, 'add_orgs', 9);
3818
3819 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
3820
3821 inv_mwb_globals.g_last_query := query_str;
3822
3823 query_hdl := DBMS_SQL.open_cursor;
3824 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
3825
3826
3827 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3828 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
3829 END IF;
3830
3831 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3832 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
3833 END IF;
3834
3835 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3836 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
3837 END IF;
3838
3839 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3840 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
3841 END IF;
3842
3843 -- ER(9158529 client)
3844 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
3845 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
3846 END IF;
3847 -- ER(9158529 client)
3848
3849 IF inv_mwb_globals.g_revision IS NOT NULL THEN
3850 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
3851 END IF;
3852
3853 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3854 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
3855 END IF;
3856
3857 -- ER(9158529)
3858 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
3859 DBMS_SQL.bind_variable(query_hdl, 'organization_id', inv_mwb_globals.g_organization_id);
3860 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
3861 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
3862 END IF;
3863 -- ER(9158529)
3864
3865 --BUG 7556505
3866 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3867 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
3868 END IF;
3869 --BUG 7556505
3870
3871 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3872 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
3873 END IF;
3874
3875 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3876 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
3877 END IF;
3878
3879 /* Bug 8396954 added below code for supplier_lot_number */
3880 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3881 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3882 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
3883 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
3884 END IF;
3885
3886 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
3887 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
3888 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
3889 END IF;
3890
3891 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
3892 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
3893 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
3894 END IF;
3895 /* End of Bug 8396954 */
3896
3897 -- NSRIVAST, INVCONV, Start
3898 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3899 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
3900 END IF;
3901 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
3902 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
3903 END IF;
3904 -- NSRIVAST, INVCONV, End
3905 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
3906 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
3907 END IF;
3908
3909 --bug 6633612
3910 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
3911 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
3912 END IF;
3913 --bug 6633612
3914
3915 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
3916 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
3917 END IF;
3918
3919 --bugfix#3646484
3920 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
3921 --User is querying for single LPN so converted the range query to equality query
3922 --So it is enought to bind the from lpn alone
3923 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
3924 ELSE
3925 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
3926 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
3927 END IF;
3928
3929 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3930 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
3931 END IF;
3932 END IF;
3933
3934 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3935 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
3936 ELSIF inv_mwb_globals.g_only_subinventory_status = 1 and l_default_status_id is not null THEN -- Onhand Material Status Support
3937 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
3938 END IF;
3939
3940 IF inv_mwb_globals.g_prepacked <> 1
3941 AND inv_mwb_globals.g_prepacked <> 999
3942 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
3943 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
3944 END IF;
3945
3946 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
3947 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
3948 END IF;
3949
3950 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
3951 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
3952 END IF;
3953
3954 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
3955 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
3956 END IF;
3957
3958 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
3959 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
3960 END IF;
3961
3962 IF (inv_mwb_globals.g_owning_qry_mode = 4)
3963 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3964 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
3965 END IF;
3966
3967 IF (inv_mwb_globals.g_planning_query_mode = 4)
3968 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
3969 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
3970 END IF;
3971
3972 --ER(3338592) Changes
3973 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3974 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
3975 END IF;
3976
3977 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3978 dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
3979 END IF;
3980
3981 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3982 dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
3983 END IF;
3984 --End of ER Changes
3985
3986 --Bug #3411938
3987 IF inv_mwb_globals.g_organization_id IS NULL THEN
3988 IF inv_mwb_globals.g_responsibility_id IS NOT NULL THEN
3989 dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
3990 END IF;
3991
3992 IF inv_mwb_globals.g_resp_application_id IS NOT NULL THEN
3993 dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
3994 END IF;
3995 END IF;
3996
3997 DBMS_SQL.define_column(query_hdl, 1, org_id);
3998 DBMS_SQL.define_column(query_hdl, 2, org_code, 3);
3999
4000 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Org id , Org code '||org_id||','||org_code );
4001
4002 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4003 SELECT mp.organization_id, mp.organization_code
4004 INTO org_id,org_code
4005 FROM mtl_parameters mp
4006 WHERE EXISTS (SELECT organization_id
4007 FROM mtl_onhand_total_mwb_v
4008 WHERE 1 = 1 AND organization_id = mp.organization_id)
4009 AND mp.organization_id = inv_mwb_globals.g_organization_id
4010 ORDER BY organization_code;
4011 END IF;
4012 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
4013
4014 LOOP
4015 -- fetch a row
4016 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
4017 -- fetch columns from the row
4018 DBMS_SQL.column_value(query_hdl, 1, org_id);
4019 DBMS_SQL.column_value(query_hdl, 2, org_code);
4020 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Coming inside, Org code : '||org_id||org_code );
4021 FOR j in 1 .. x_node_tbl.COUNT LOOP
4022 IF x_node_tbl(j).LABEL = org_code THEN
4023 l_org_exists_flag := TRUE;
4024 END IF;
4025 END LOOP;
4026 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'after loop');
4027 IF j >= inv_mwb_globals.g_tree_node_low_value AND NOT l_org_exists_flag THEN
4028 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
4029 x_node_tbl(i).DEPTH := 1;
4030 x_node_tbl(i).label := org_code;
4031 x_node_tbl(i).icon := 'inv_inor';
4032 x_node_tbl(i).VALUE := TO_CHAR(org_id);
4033 x_node_tbl(i).TYPE := 'ORG';
4034 i := i + 1;
4035 END IF;
4036 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
4037 j := j + 1;
4038 ELSE
4039 EXIT;
4040 END IF;
4041 END LOOP;
4042
4043 DBMS_SQL.close_cursor(query_hdl); -- close cursor
4044 x_node_value := j;
4045 x_tbl_index := i;
4046
4047 -- END IF; -- Receiving checkbox selected
4048
4049
4050 /* IF l_onhand_qty IS NOT NULL
4051 OR l_rcv_qty IS NOT NULL
4052 OR l_inbound_qty IS NOT NULL
4053 OR inv_mwb_globals.g_view_by = 'GRADE' -- Bug : 4680944
4054 OR inv_mwb_globals.g_view_by = 'STATUS'
4055 THEN
4056 */
4057 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
4058 is_grade_t := TRUE ;
4059 END IF ;
4060 -- NSRIVAST, INVCONV, End
4061
4062 IF inv_mwb_globals.g_inventory_item_id IS NULL
4063 AND inv_mwb_globals.g_client_code IS NULL -- ER(9158529 client)
4064 AND inv_mwb_globals.g_revision IS NULL
4065 AND inv_mwb_globals.g_category_set_id IS NULL -- ER(9158529)
4066 AND inv_mwb_globals.g_category_id IS NULL -- ER(9158529)
4067 AND inv_mwb_globals.g_parent_lot IS NULL --BUG 7556505
4068 AND inv_mwb_globals.g_lot_from IS NULL
4069 AND inv_mwb_globals.g_lot_to IS NULL
4070 AND inv_mwb_globals.g_supplier_lot_from IS NULL -- Bug 8396954
4071 AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
4072 AND inv_mwb_globals.g_serial_from IS NULL
4073 AND inv_mwb_globals.g_serial_to IS NULL
4074 AND inv_mwb_globals.g_serial_controlled = 0 -- Bug #3411938
4075 AND inv_mwb_globals.g_lot_controlled = 0
4076 AND inv_mwb_globals.g_cost_group_id IS NULL
4077 AND inv_mwb_globals.g_status_id IS NULL
4078 AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
4079 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
4080 AND inv_mwb_globals.g_unit_number IS NULL
4081 AND inv_mwb_globals.g_project_id IS NULL
4082 AND inv_mwb_globals.g_task_id IS NULL
4083 AND inv_mwb_globals.g_planning_org IS NULL
4084 AND inv_mwb_globals.g_owning_org IS NULL
4085 AND( nvl(inv_mwb_globals.g_prepacked,1) <> 1
4086 OR inv_mwb_globals.g_lpn_from IS NOT NULL
4087 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
4088 --ER(3338592) Changes
4089 AND inv_mwb_globals.g_item_description IS NULL
4090 AND inv_mwb_globals.g_qty_from IS NULL
4091 AND inv_mwb_globals.g_qty_to IS NULL THEN
4092 --End of ER Changes
4093 query_str := 'SELECT mp.organization_id, mp.organization_code ';
4094 query_str := query_str || 'from mtl_parameters mp where organization_id in ';
4095 query_str := query_str || '(select organization_id ';
4096 query_str := query_str || 'FROM wms_license_plate_numbers WHERE 1=1 ';
4097
4098 IF inv_mwb_globals.g_tree_mat_loc_id = 2
4099 OR inv_mwb_globals.g_chk_receiving = 1 THEN
4100 query_str := query_str || ' AND lpn_context = 3 ';
4101 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
4102 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11) ';
4103 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
4104 query_str := query_str || ' AND (lpn_context = 1) ';
4105 ELSIF inv_mwb_globals.g_prepacked <> 1
4106 AND inv_mwb_globals.g_prepacked <> 999
4107 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
4108 query_str := query_str || ' AND lpn_context = :prepacked ';
4109 END IF;
4110
4111 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4112 query_str := query_str || ' AND locator_id = :loc_id ';
4113 END IF;
4114
4115 -- NSRIVAST, INVCONV, Start
4116 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4117 query_str := query_str || ' AND grade_code = :grade_f ' ;
4118 END IF ;
4119 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
4120 query_str := query_str || ' AND grade_code = :grade_c ' ;
4121 END IF ;
4122 -- NSRIVAST, INVCONV, End
4123
4124 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4125 query_str := query_str || ' AND subinventory_code = :sub ';
4126 END IF;
4127
4128 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4129 query_str := query_str || ' AND organization_id = :org_id ';
4130 END IF;
4131
4132 --bugfix#3646484
4133 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
4134 --User is querying for single LPN so converted the range query to equality query
4135 query_str := query_str || 'and license_plate_number = :lpn_f ';
4136 ELSE
4137 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
4138 query_str := query_str || 'and license_plate_number >= :lpn_f ';
4139 END IF;
4140
4141 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4142 query_str := query_str || 'and license_plate_number <= :lpn_t ';
4143 END IF;
4144 END IF;
4145
4146 query_str := query_str || ') ORDER BY organization_code ';
4147 ELSE
4148 query_str := ' SELECT mp.organization_id, mp.organization_code FROM mtl_parameters mp ';
4149 query_str := query_str || ' WHERE exists ( ';
4150
4151 -- Need to use MTL_ONHAND_TOTAL_V
4152 IF (
4153 inv_mwb_globals.g_serial_from IS NULL
4154 AND inv_mwb_globals.g_serial_to IS NULL
4155 AND inv_mwb_globals.g_unit_number IS NULL
4156 AND inv_mwb_globals.g_status_id IS NULL
4157 AND inv_mwb_globals.g_lpn_from IS NULL
4158 AND inv_mwb_globals.g_lpn_to IS NULL
4159 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
4160 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
4161 ) THEN
4162 IF NVL(inv_mwb_globals.g_chk_onhand,0) = 0
4163 AND NVL(inv_mwb_globals.g_chk_receiving,0) = 1
4164 AND NVL(inv_mwb_globals.g_chk_inbound,0) = 0 THEN
4165 table_required := ' mtl_rcv_mwb_onhand_v v ';
4166 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
4167 table_required := ' mtl_onhand_total_mwb_v v ';
4168 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
4169 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
4170 END IF;
4171 ELSE
4172 table_required := ' mtl_onhand_total_v v ';
4173 END IF;
4174
4175 --bug 6633612
4176 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4177 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
4178 END IF;
4179 --bug 6633612
4180
4181 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
4182 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
4183 query_str := query_str || 'SELECT v.organization_id from ' || table_required;
4184 query_str := query_str || 'WHERE 1=1 ';
4185 ELSE
4186 query_str :=
4187 query_str
4188 || ' SELECT v.organization_id from'
4189 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
4190 || inv_mwb_globals.g_tree_lot_attr_query
4191 || ' ) mln, '
4192 || table_required;
4193 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
4194 --BUG 7556505
4195 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4196 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4197 END IF;
4198 --BUG 7556505
4199 /* Bug 8396954 added below code for supplier_lot_number */
4200 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4201 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4202 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
4203 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
4204 END IF;
4205
4206 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4207 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
4208 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
4209 END IF;
4210
4211 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4212 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
4213 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
4214 END IF;
4215 /* End of Bug 8396954 */
4216 END IF;
4217
4218 --ER(3338592) Changes (If the user gives the value for the Qty then only
4219 --Group by clause comes in to effect)
4220
4221 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4222 group_str := ' GROUP BY v.organization_id ';
4223 END IF;
4224
4225 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4226 query_str := query_str || ' AND v.subinventory_code = :sub ';
4227 --ER(3338592) Changes
4228 IF group_str IS NOT NULL THEN
4229 group_str := group_str || ' , v.subinventory_code ' ;
4230 END IF;
4231 END IF;
4232
4233 --bug 6633612
4234 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4235 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
4236 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
4237 || ' AND rt.organization_id = mmt.organization_id '
4238 || ' AND rt.transaction_type = ''DELIVER'''
4239 || ' AND rt.destination_type_code = ''INVENTORY'''
4240 || ' AND mmt.transaction_id = v.create_transaction_id '
4241 || ' AND mmt.organization_id = v.organization_id ';
4242
4243 END IF;
4244 --bug 6633612
4245
4246 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
4247 --ER(3338592) Changes
4248 IF group_str IS NOT NULL THEN
4249 group_str := group_str || ' , v.subinventory_code ' ;
4250 END IF;
4251 END IF;
4252
4253 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4254 query_str := query_str || ' AND v.locator_id = :loc_id ';
4255 --ER(3338592) Changes
4256 IF group_str IS NOT NULL THEN
4257 group_str := group_str || ' , v.locator_id ' ;
4258 END IF;
4259 END IF;
4260
4261 -- NSRIVAST, INVCONV, Start
4262 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4263 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
4264 END IF ;
4265 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
4266 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
4267 END IF ;
4268 -- NSRIVAST, INVCONV, End
4269
4270 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
4271 --ER(3338592) Changes
4272 IF group_str IS NOT NULL THEN
4273 group_str := group_str || ' , v.locator_id ' ;
4274 END IF;
4275 END IF;
4276
4277 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
4278 query_str := query_str || ' AND v.project_id = :pr_id ';
4279 --ER(3338592) Changes
4280 IF group_str IS NOT NULL THEN
4281 group_str := group_str || ' , v.project_id ' ;
4282 END IF;
4283 END IF;
4284
4285 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
4286 query_str := query_str || ' AND v.task_id = :ta_id ';
4287 --ER(3338592) Changes
4288 IF group_str IS NOT NULL THEN
4289 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
4290 END IF;
4291 END IF;
4292
4293 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4294 query_str := query_str || ' AND v.inventory_item_id = :item_id ';
4295 END IF;
4296
4297 -- ER(9158529 client)
4298 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
4299 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
4300 END IF;
4301 -- ER(9158529 client)
4302
4303 --Bug # 3411938
4304 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
4305 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
4306 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
4307 END IF;
4308
4309 --ER(3338592) Changes
4310 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4311 query_str := query_str || ' AND v.item_description LIKE :item_description ';
4312 END IF;
4313
4314 IF inv_mwb_globals.g_revision IS NOT NULL THEN
4315 query_str := query_str || ' AND v.revision = :rev ';
4316 --ER(3338592) Changes
4317 IF group_str IS NOT NULL THEN
4318 group_str := group_str || ' , v.revision ' ;
4319 END IF;
4320 END IF;
4321
4322 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4323 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
4324 --End of ER Changes
4325 IF group_str IS NOT NULL THEN
4326 group_str := group_str || ' , v.cost_group_id ' ;
4327 END IF;
4328 END IF;
4329
4330 -- ER(9158529)
4331 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
4332 query_str := query_str || ' AND v.inventory_item_id in '
4333 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
4334 || ' where organization_id = :organization_id '
4335 || ' and category_set_id = :category_set_id '
4336 || ' and category_id = nvl(:category_id, category_id)) ' ;
4337 END IF;
4338 -- ER(9158529)
4339
4340 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
4341 query_str := query_str || ' AND v.lot_number >= :lot_f ';
4342 END IF;
4343
4344 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
4345 query_str := query_str || ' AND v.lot_number <= :lot_t ';
4346 END IF;
4347
4348 IF inv_mwb_globals.g_lot_controlled = 2 THEN
4349 query_str := query_str || ' AND v.lot_number is not null ';
4350 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
4351 query_str := query_str || ' AND v.lot_number is null ';
4352 END IF;
4353
4354 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
4355 -- from onhand table (MOQD)
4356 if (l_default_status_id is not null) then
4357 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
4358 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
4359 END IF;
4360 else
4361 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
4362 query_str := query_str || ' AND (v.subinventory_status_id = :st_id ';
4363 query_str := query_str || ' OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
4364 END IF;
4365 end if;
4366
4367 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
4368 IF inv_mwb_globals.g_containerized = 1 THEN
4369 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
4370 ELSIF inv_mwb_globals.g_containerized = 2 THEN
4371 query_str := query_str || ' AND v.containerized_flag = 1 ';
4372 END IF;
4373 END IF;
4374
4375 IF inv_mwb_globals.g_serial_controlled = 1 THEN
4376 --query_str := query_str || 'AND serial_number_control_code not in (2,5) ';
4377 query_str := query_str || ' AND v.item_serial_control not in (2,5) ';
4378 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
4379 --query_str := query_str || 'AND serial_number_control_code in (2,5) ';
4380 query_str := query_str || ' AND v.item_serial_control in (2,5) ';
4381 END IF;
4382
4383 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
4384 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
4385 query_str := query_str || ' AND v.planning_tp_type = 2 ';
4386 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
4387 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
4388 query_str := query_str || ' AND v.planning_tp_type = 1 ';
4389 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
4390 query_str := query_str || ' AND v.planning_tp_type = 1 ';
4391 END IF;
4392
4393 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
4394 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
4395 query_str := query_str || ' AND v.owning_tp_type = 2 ';
4396 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
4397 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
4398 query_str := query_str || ' AND v.owning_tp_type = 1 ';
4399 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
4400 query_str := query_str || ' AND v.owning_tp_type = 1 ';
4401 END IF;
4402
4403 --Bug #3411938
4404 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4405 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
4406 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
4407 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
4408 END IF;
4409
4410 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
4411 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
4412 END IF;
4413
4414 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
4415 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
4416 END IF;
4417
4418 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4419 query_str := query_str || ' AND v.organization_id = mp.organization_id ';
4420 query_str := query_str || group_str || having_str || ' ) ' ;
4421 ELSE
4422 query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
4423 END IF;
4424
4425 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4426 query_str := query_str || 'and mp.organization_id = :org_id ';
4427 --Bug #3411938
4428 ELSE
4429 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
4430 query_str := query_str || ' FROM org_access_view oav ' ;
4431 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
4432 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
4433 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
4434 END IF;
4435
4436 query_str := query_str || ' ORDER BY organization_code ';
4437
4438 --Need to use MTL_ONHAND_SERIAL_V
4439
4440 ELSIF(
4441 (
4442 inv_mwb_globals.g_serial_from IS NOT NULL
4443 OR inv_mwb_globals.g_serial_from IS NOT NULL
4444 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
4445 OR inv_mwb_globals.g_unit_number IS NOT NULL
4446 )
4447 AND inv_mwb_globals.g_lpn_from IS NULL
4448 AND inv_mwb_globals.g_lpn_to IS NULL
4449 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
4450 ) THEN
4451 IF inv_mwb_globals.g_tree_mat_loc_id = 2
4452 OR inv_mwb_globals.g_chk_receiving = 1 THEN
4453 table_required := ' mtl_rcv_serial_oh_v v ';
4454 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
4455 table_required := ' mtl_onhand_serial_mwb_v v ';
4456 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
4457 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
4458 END IF ;
4459 ELSE
4460 table_required := ' mtl_onhand_serial_v v ';
4461 END IF;
4462
4463 --bug 6633612
4464 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4465 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
4466 END IF;
4467 --bug 6633612
4468
4469 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
4470 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL) --BUG 7556505
4471 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
4472 query_str := query_str || ' SELECT v.organization_id from ' || table_required;
4473 query_str := query_str || ' WHERE 1=1 ';
4474 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
4475 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL) --BUG 7556505
4476 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
4477 query_str :=
4478 query_str
4479 || ' SELECT v.organization_id from'
4480 || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
4481 || inv_mwb_globals.g_tree_serial_attr_query
4482 || ') msn, '
4483 || table_required;
4484 query_str := query_str || ' WHERE msn.serial_num = v.serial_number ';
4485 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
4486 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL) --BUG 7556505
4487 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
4488 query_str :=
4489 query_str
4490 || ' SELECT v.organization_id from'
4491 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505
4492 || inv_mwb_globals.g_tree_lot_attr_query
4493 || ' ) mln, '
4494 || table_required;
4495 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
4496 --BUG 7556505
4497 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4498 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4499 END IF;
4500 --BUG 7556505
4501 /* Bug 8396954 added below code for supplier_lot_number */
4502 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4503 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4504 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
4505 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
4506 END IF;
4507
4508 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4509 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
4510 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
4511 END IF;
4512
4513 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4514 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
4515 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
4516 END IF;
4517 /* End of Bug 8396954 */
4518 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
4519 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL) --BUG 7556505
4520 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
4521 query_str :=
4522 query_str
4523 || ' SELECT v.organization_id from'
4524 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505
4525 || inv_mwb_globals.g_tree_lot_attr_query
4526 || ' ) mln, '
4527 || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
4528 || inv_mwb_globals.g_tree_serial_attr_query
4529 || ' ) msn, '
4530 || table_required;
4531 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
4532 --BUG 7556505
4533 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4534 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4535 END IF;
4536 --BUG 7556505
4537 /* Bug 8396954 added below code for supplier_lot_number */
4538 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4539 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4540 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
4541 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
4542 END IF;
4543
4544 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4545 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
4546 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
4547 END IF;
4548
4549 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4550 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
4551 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
4552 END IF;
4553 /* End of Bug 8396954 */
4554 query_str := query_str || ' AND msn.serial_num = v.serial_number ';
4555 END IF;
4556
4557 --ER(3338592) Changes (If the user gives the value for the Qty then only
4558 --Group by clause comes in to effect)
4559
4560 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4561 group_str := ' GROUP BY v.organization_id ';
4562 END IF;
4563
4564 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4565 query_str := query_str || ' AND v.subinventory_code = :sub ';
4566 --ER(3338592) Changes
4567 IF group_str IS NOT NULL THEN
4568 group_str := group_str || ' , v.subinventory_code ' ;
4569 END IF;
4570 END IF;
4571
4572 --bug 6633612
4573 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4574 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
4575 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
4576 || ' AND rt.organization_id = mmt.organization_id '
4577 || ' AND rt.transaction_type = ''DELIVER'''
4578 || ' AND rt.destination_type_code = ''INVENTORY'''
4579 || ' AND mmt.transaction_id = v.last_transaction_id '
4580 || ' AND mmt.organization_id = v.organization_id ';
4581
4582 END IF;
4583 --bug 6633612
4584
4585 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
4586 --ER(3338592) Changes
4587 IF group_str IS NOT NULL THEN
4588 group_str := group_str || ' , v.subinventory_code ' ;
4589 END IF;
4590 END IF;
4591
4592 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4593 query_str := query_str || ' AND v.locator_id = :loc_id ';
4594 --ER(3338592) Changes
4595 IF group_str IS NOT NULL THEN
4596 group_str := group_str || ' , v.locator_id ' ;
4597 END IF;
4598 END IF;
4599
4600 -- NSRIVAST, INVCONV, Start
4601 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4602 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
4603 END IF ;
4604 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
4605 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
4606 END IF ;
4607 -- NSRIVAST, INVCONV, End
4608
4609 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
4610 --ER(3338592) Changes
4611 IF group_str IS NOT NULL THEN
4612 group_str := group_str || ' , v.locator_id ' ;
4613 END IF;
4614 END IF;
4615
4616 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
4617 query_str := query_str || ' AND v.project_id = :pr_id ';
4618 --ER(3338592) Changes
4619 IF group_str IS NOT NULL THEN
4620 group_str := group_str || ' , v.project_id ' ;
4621 END IF;
4622 END IF;
4623
4624 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
4625 query_str := query_str || ' AND v.task_id = :ta_id ';
4626 --ER(3338592) Changes
4627 IF group_str IS NOT NULL THEN
4628 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
4629 END IF;
4630 END IF;
4631
4632 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4633 query_str := query_str || ' AND v.inventory_item_id = :item_id ';
4634 END IF;
4635
4636 -- ER(9158529 client)
4637 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
4638 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
4639 END IF;
4640 -- ER(9158529 client)
4641
4642 --Bug # 3411938
4643 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
4644 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
4645 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
4646 END IF;
4647
4648 --ER(3338592) Changes
4649 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4650 query_str := query_str || ' AND v.item_description LIKE :item_description ';
4651 END IF;
4652
4653 IF inv_mwb_globals.g_revision IS NOT NULL THEN
4654 query_str := query_str || ' AND v.revision = :rev ';
4655 --ER(3338592) Changes
4656 IF group_str IS NOT NULL THEN
4657 group_str := group_str || ' , v.revision ' ;
4658 END IF;
4659 END IF;
4660
4661 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4662 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
4663 --ER(3338592) Changes
4664 IF group_str IS NOT NULL THEN
4665 group_str := group_str || ' , v.cost_group_id ' ;
4666 END IF;
4667 END IF;
4668
4669 -- ER(9158529)
4670 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
4671 query_str := query_str || ' AND v.inventory_item_id in '
4672 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
4673 || ' where organization_id = :organization_id '
4674 || ' and category_set_id = :category_set_id '
4675 || ' and category_id = nvl(:category_id, category_id)) ' ;
4676 END IF;
4677 -- ER(9158529)
4678
4679 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
4680 query_str := query_str || ' AND v.lot_number >= :lot_f ';
4681 END IF;
4682
4683 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
4684 query_str := query_str || ' AND v.lot_number <= :lot_t ';
4685 END IF;
4686
4687 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
4688 query_str := query_str || ' AND v.serial_number >= :serial_f ';
4689 END IF;
4690
4691 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
4692 query_str := query_str || ' AND v.serial_number <= :serial_t ';
4693 END IF;
4694
4695 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
4696 query_str := query_str || ' AND v.unit_number=:un_id ';
4697 END IF;
4698
4699 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
4700 -- from serial table (MSN)
4701 if (l_default_status_id is not null) then
4702 IF (inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1)
4703 AND inv_mwb_globals.g_tree_mat_loc_id <> 2
4704 OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
4705 query_str := query_str || 'AND v.serial_status_id = :st_id ';
4706 END IF;
4707 else
4708 IF (inv_mwb_globals.g_status_id IS NOT NULL)
4709 AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
4710 query_str := query_str || ' AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
4711 query_str := query_str || ' OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
4712 END IF;
4713 end if;
4714
4715 IF inv_mwb_globals.g_lot_controlled = 2 THEN
4716 query_str := query_str || ' AND v.lot_number is not null ';
4717 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
4718 query_str := query_str || ' AND v.lot_number is null ';
4719 END IF;
4720
4721 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
4722 IF inv_mwb_globals.g_containerized = 1 THEN
4723 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
4724 ELSIF inv_mwb_globals.g_containerized = 2 THEN
4725 query_str := query_str || ' AND v.containerized_flag = 1 ';
4726 END IF;
4727 END IF;
4728
4729
4730 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
4731 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
4732 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
4733 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
4734 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
4735 query_str := query_str || ' AND planning_organization_id in ';
4736 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
4737 query_str := query_str || ' where vendor_id = :vendor_id )';
4738 END IF;*/
4739
4740 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
4741 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
4742 query_str := query_str || ' AND v.owning_tp_type = 2 ';
4743 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
4744 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
4745 query_str := query_str || ' AND v.owning_tp_type = 1 ';
4746 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
4747 query_str := query_str || ' AND v.owning_tp_type = 1 ';
4748 END IF;
4749
4750 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
4751 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
4752 query_str := query_str || ' AND v.planning_tp_type = 2 ';
4753 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
4754 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
4755 query_str := query_str || ' AND v.planning_tp_type = 1 ';
4756 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
4757 query_str := query_str || ' AND v.planning_tp_type = 1 ';
4758 END IF;
4759
4760 --Bug #3411938
4761 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4762 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
4763 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
4764 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
4765 END IF;
4766
4767 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
4768 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
4769 END IF;
4770
4771 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
4772 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
4773 END IF;
4774
4775 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4776 query_str := query_str || 'AND v.organization_id = mp.organization_id ';
4777 query_str := query_str || group_str || having_str || ' ) ' ;
4778 ELSE
4779 query_str := query_str || 'AND v.organization_id = mp.organization_id ) ';
4780 END IF;
4781
4782 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4783 query_str := query_str || 'and mp.organization_id = :org_id ';
4784 -- Bug #3411938
4785 ELSE
4786 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
4787 query_str := query_str || ' FROM org_access_view oav ' ;
4788 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
4789 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
4790 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
4791 END IF;
4792
4793 query_str := query_str || ' ORDER BY organization_code ';
4794
4795 -- Need to use both MTL_ONHAND_TOTAL_V AND MTL_ONHAND_SERIAL_V
4796 ELSIF(
4797 inv_mwb_globals.g_serial_from IS NULL
4798 AND inv_mwb_globals.g_serial_to IS NULL
4799 AND inv_mwb_globals.g_unit_number IS NULL
4800 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
4801 AND inv_mwb_globals.g_status_id IS NOT NULL
4802 AND inv_mwb_globals.g_lpn_from IS NULL
4803 AND inv_mwb_globals.g_lpn_to IS NULL
4804 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
4805 ) THEN
4806 IF (inv_mwb_globals.g_status_id IS NULL) THEN
4807 table_required := ' mtl_onhand_total_mwb_v v ';
4808 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
4809 -- table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
4810 ELSE
4811 table_required := ' mtl_onhand_total_v v ';
4812 END IF;
4813
4814 --bug 6633612
4815 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4816 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
4817 END IF;
4818 --bug 6633612
4819
4820 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
4821 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
4822 query_str := query_str || 'SELECT v.organization_id from ' || table_required;
4823 query_str := query_str || 'WHERE 1=1 ';
4824 ELSE
4825 query_str :=
4826 query_str
4827 || ' SELECT v.organization_id from'
4828 || ' (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' --BUG 7556505
4829 || inv_mwb_globals.g_tree_lot_attr_query
4830 || ' ) mln, '
4831 || table_required;
4832 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
4833 --BUG 7556505
4834 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4835 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4836 END IF;
4837 --BUG 7556505
4838 /* Bug 8396954 added below code for supplier_lot_number */
4839 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4840 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4841 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
4842 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
4843 END IF;
4844
4845 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
4846 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
4847 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
4848 END IF;
4849
4850 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
4851 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
4852 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
4853 END IF;
4854 /* End of Bug 8396954 */
4855 END IF;
4856
4857 --ER(3338592) Changes (If the user gives the value for the Qty then only
4858 --Group by clause comes in to effect)
4859
4860 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4861 group_str := ' GROUP BY v.organization_id ';
4862 END IF;
4863
4864 --bug 6633612
4865 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4866 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
4867 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
4868 || ' AND rt.organization_id = mmt.organization_id '
4869 || ' AND rt.transaction_type = ''DELIVER'''
4870 || ' AND rt.destination_type_code = ''INVENTORY'''
4871 || ' AND mmt.transaction_id = v.create_transaction_id '
4872 || ' AND mmt.organization_id = v.organization_id ';
4873
4874 END IF;
4875 --bug 6633612
4876
4877 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4878 query_str := query_str || 'AND v.subinventory_code = :sub ';
4879 --ER(3338592) Changes
4880 IF group_str IS NOT NULL THEN
4881 group_str := group_str || ' , v.subinventory_code ' ;
4882 END IF;
4883 END IF;
4884
4885 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
4886 --ER(3338592) Changes
4887 IF group_str IS NOT NULL THEN
4888 group_str := group_str || ' , v.subinventory_code ' ;
4889 END IF;
4890 END IF;
4891
4892 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4893 query_str := query_str || 'AND v.locator_id = :loc_id ';
4894 --ER(3338592) Changes
4895 IF group_str IS NOT NULL THEN
4896 group_str := group_str || ' , v.locator_id ' ;
4897 END IF;
4898 END IF;
4899
4900 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
4901 --ER(3338592) Changes
4902 IF group_str IS NOT NULL THEN
4903 group_str := group_str || ' , v.locator_id ' ;
4904 END IF;
4905 END IF;
4906
4907 -- NSRIVAST, INVCONV, Start
4908 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4909 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
4910 END IF ;
4911 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
4912 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
4913 END IF ;
4914 -- NSRIVAST, INVCONV, End
4915
4916 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
4917 query_str := query_str || ' AND v.project_id = :pr_id ';
4918 --ER(3338592) Changes
4919 IF group_str IS NOT NULL THEN
4920 group_str := group_str || ' , v.project_id ' ;
4921 END IF;
4922 END IF;
4923
4924 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
4925 query_str := query_str || ' AND v.task_id = :ta_id ';
4926 --ER(3338592) Changes
4927 IF group_str IS NOT NULL THEN
4928 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
4929 END IF;
4930 END IF;
4931
4932 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4933 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
4934 END IF;
4935
4936 -- ER(9158529 client)
4937 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
4938 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
4939 END IF;
4940 -- ER(9158529 client)
4941
4942 --Bug # 3411938
4943 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
4944 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
4945 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
4946 END IF;
4947
4948 --ER(3338592) Changes
4949 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4950 query_str := query_str || ' AND v.item_description LIKE :item_description ';
4951 END IF;
4952
4953 IF inv_mwb_globals.g_revision IS NOT NULL THEN
4954 query_str := query_str || 'AND v.revision = :rev ';
4955 --ER(3338592) Changes
4956 IF group_str IS NOT NULL THEN
4957 group_str := group_str || ' , v.revision ' ;
4958 END IF;
4959 END IF;
4960
4961 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4962 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
4963 --ER(3338592) Changes
4964 IF group_str IS NOT NULL THEN
4965 group_str := group_str || ' , v.cost_group_id ' ;
4966 END IF;
4967 END IF;
4968
4969 -- ER(9158529)
4970 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
4971 query_str := query_str || ' AND v.inventory_item_id in '
4972 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
4973 || ' where organization_id = :organization_id '
4974 || ' and category_set_id = :category_set_id '
4975 || ' and category_id = nvl(:category_id, category_id)) ' ;
4976 END IF;
4977 -- ER(9158529)
4978
4979 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
4980 query_str := query_str || 'AND v.lot_number >= :lot_f ';
4981 END IF;
4982
4983 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
4984 query_str := query_str || 'AND v.lot_number <= :lot_t ';
4985 END IF;
4986
4987 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
4988 query_str := query_str || ' AND v.unit_number=:un_id ';
4989 END IF;
4990
4991 IF inv_mwb_globals.g_lot_controlled = 2 THEN
4992 query_str := query_str || 'AND v.lot_number is not null ';
4993 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
4994 query_str := query_str || 'AND v.lot_number is null ';
4995 END IF;
4996
4997 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
4998 -- from onhand table (MOQD)
4999 if (l_default_status_id is not null) then
5000 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
5001 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
5002 END IF;
5003 else
5004 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5005 query_str := query_str || 'AND (v.subinventory_status_id = :st_id ';
5006 query_str := query_str || 'OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
5007 END IF;
5008 end if;
5009
5010 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
5011 IF inv_mwb_globals.g_containerized = 1 THEN
5012 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
5013 ELSIF inv_mwb_globals.g_containerized = 2 THEN
5014 query_str := query_str || ' AND v.containerized_flag = 1 ';
5015 END IF;
5016 END IF;
5017
5018 IF inv_mwb_globals.g_serial_controlled = 1 THEN
5019 --query_str := query_str || 'AND serial_number_control_code not in (2,5) ';
5020 query_str := query_str || 'AND v.item_serial_control not in (2,5) ';
5021 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
5022 --query_str := query_str || 'AND serial_number_control_code in (2,5) ';
5023 query_str := query_str || 'AND v.item_serial_control in (2,5) ';
5024 END IF;
5025
5026 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
5027 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5028 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
5029 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
5030 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5031 query_str := query_str || ' AND planning_organization_idanization_id in ';
5032 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
5033 query_str := query_str || ' where vendor_id = :vendor_id )';
5034 END IF;*/
5035
5036 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
5037 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
5038 query_str := query_str || ' AND v.owning_tp_type = 2 ';
5039 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5040 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
5041 query_str := query_str || ' AND v.owning_tp_type = 1 ';
5042 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
5043 query_str := query_str || ' AND v.owning_tp_type = 1 ';
5044 END IF;
5045
5046 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
5047 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
5048 query_str := query_str || ' AND v.planning_tp_type = 2 ';
5049 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
5050 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
5051 query_str := query_str || ' AND v.planning_tp_type = 1 ';
5052 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
5053 query_str := query_str || ' AND v.planning_tp_type = 1 ';
5054 END IF;
5055
5056 --Bug #3411938
5057 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5058 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
5059 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
5060 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
5061 END IF;
5062
5063 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5064 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5065 END IF;
5066
5067 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5068 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5069 END IF;
5070
5071 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5072 query_str := query_str || 'AND v.organization_id = mp.organization_id ';
5073 query_str := query_str || group_str || having_str || ' ' ;
5074 ELSE
5075 query_str := query_str || 'AND v.organization_id = mp.organization_id ';
5076 END IF;
5077
5078 query_str := query_str || 'UNION ALL ';
5079
5080 --Reinitializing the variable
5081 having_str := ' HAVING 1=1 ' ;
5082
5083 IF (inv_mwb_globals.g_status_id IS NULL) THEN
5084 table_required := ' mtl_onhand_serial_mwb_v v ';
5085 ELSE
5086 table_required := ' mtl_onhand_serial_v v ';
5087 END IF;
5088
5089 --bug 6633612
5090 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5091 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5092 END IF;
5093 --bug 6633612
5094
5095 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
5096 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
5097 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5098 query_str := query_str || 'SELECT v.organization_id from ' || table_required;
5099 query_str := query_str || 'WHERE 1=1 ';
5100 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
5101 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
5102 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5103 query_str :=
5104 query_str
5105 || 'SELECT v.organization_id from'
5106 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5107 || inv_mwb_globals.g_tree_lot_attr_query
5108 || ') mln, '
5109 || table_required;
5110 query_str := query_str || ' WHERE mln.lot_num = v.lot_number ';
5111 --BUG 7556505
5112 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5113 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5114 END IF;
5115 --BUG 7556505
5116 /* Bug 8396954 added below code for supplier_lot_number */
5117 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5118 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5119 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
5120 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
5121 END IF;
5122
5123 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5124 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
5125 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
5126 END IF;
5127
5128 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5129 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
5130 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
5131 END IF;
5132 /* End of Bug 8396954 */
5133 END IF;
5134
5135 --ER(3338592) Changes (If the user gives the value for the Qty then only
5136 --Group by clause comes in to effect)
5137
5138 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5139 group_str := ' GROUP BY v.organization_id ';
5140 END IF;
5141
5142 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5143 query_str := query_str || 'AND v.subinventory_code = :sub ';
5144 --ER(3338592) Changes
5145 IF group_str IS NOT NULL THEN
5146 group_str := group_str || ' , v.subinventory_code ' ;
5147 END IF;
5148 END IF;
5149
5150 --bug 6633612
5151 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5152 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
5153 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
5154 || ' AND rt.organization_id = mmt.organization_id '
5155 || ' AND rt.transaction_type = ''DELIVER'''
5156 || ' AND rt.destination_type_code = ''INVENTORY'''
5157 || ' AND mmt.transaction_id = v.last_transaction_id '
5158 || ' AND mmt.organization_id = v.organization_id ';
5159
5160 END IF;
5161 --bug 6633612
5162
5163 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
5164 --ER(3338592) Changes
5165 IF group_str IS NOT NULL THEN
5166 group_str := group_str || ' , v.subinventory_code ' ;
5167 END IF;
5168 END IF;
5169
5170 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5171 query_str := query_str || 'AND v.locator_id = :loc_id ';
5172 --ER(3338592) Changes
5173 IF group_str IS NOT NULL THEN
5174 group_str := group_str || ' , v.locator_id ' ;
5175 END IF;
5176 END IF;
5177
5178 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
5179 --ER(3338592) Changes
5180 IF group_str IS NOT NULL THEN
5181 group_str := group_str || ' , v.locator_id ' ;
5182 END IF;
5183 END IF;
5184
5185 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5186 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
5187 END IF;
5188
5189 -- ER(9158529 client)
5190 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
5191 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
5192 END IF;
5193 -- ER(9158529 client)
5194
5195 --Bug # 3411938
5196 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
5197 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
5198 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
5199 END IF;
5200
5201 --ER(3338592) Changes
5202 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5203 query_str := query_str || ' AND v.item_description LIKE :item_description ';
5204 END IF;
5205
5206 IF inv_mwb_globals.g_revision IS NOT NULL THEN
5207 query_str := query_str || 'AND v.revision = :rev ';
5208 --ER(3338592) Changes
5209 IF group_str IS NOT NULL THEN
5210 group_str := group_str || ' , v.revision ' ;
5211 END IF;
5212 END IF;
5213
5214 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5215 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
5216 --ER(3338592) Changes
5217 IF group_str IS NOT NULL THEN
5218 group_str := group_str || ' , v.cost_group_id ' ;
5219 END IF;
5220 END IF;
5221
5222 -- ER(9158529)
5223 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
5224 query_str := query_str || ' AND v.inventory_item_id in '
5225 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
5226 || ' where organization_id = :organization_id '
5227 || ' and category_set_id = :category_set_id '
5228 || ' and category_id = nvl(:category_id, category_id)) ' ;
5229 END IF;
5230 -- ER(9158529)
5231
5232 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5233 query_str := query_str || ' AND v.lot_number >= :lot_f ';
5234 END IF;
5235
5236 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5237 query_str := query_str || ' AND v.lot_number <= :lot_t ';
5238 END IF;
5239
5240 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
5241 query_str := query_str || ' AND v.serial_number >= :serial_f ';
5242 END IF;
5243
5244 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
5245 query_str := query_str || ' AND v.serial_number <= :serial_t ';
5246 END IF;
5247
5248 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
5249 -- from serial table (MSN)
5250 if (l_default_status_id is not null) then
5251 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
5252 query_str := query_str || 'AND v.serial_status_id = :st_id ';
5253 END IF;
5254 else
5255 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5256 query_str := query_str || 'AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
5257 query_str := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
5258 END IF;
5259 end if;
5260
5261 IF inv_mwb_globals.g_lot_controlled = 2 THEN
5262 query_str := query_str || 'AND v.lot_number is not null ';
5263 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
5264 query_str := query_str || 'AND v.lot_number is null ';
5265 END IF;
5266
5267 IF inv_mwb_globals.g_chk_receiving <> 1 THEN
5268 IF inv_mwb_globals.g_containerized = 1 THEN
5269 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
5270 ELSIF inv_mwb_globals.g_containerized = 2 THEN
5271 query_str := query_str || ' AND v.containerized_flag = 1 ';
5272 END IF;
5273 END IF;
5274
5275 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5276 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
5277 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
5278 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
5279 END IF;
5280
5281 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5282 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5283 END IF;
5284
5285 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5286 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5287 END IF;
5288
5289 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5290 query_str := query_str || ' AND v.organization_id = mp.organization_id ';
5291 query_str := query_str || group_str || having_str || ' ) ' ;
5292 ELSE
5293 query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
5294 END IF;
5295
5296 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5297 query_str := query_str || ' and mp.organization_id = :org_id ';
5298 -- Bug # 3411938
5299 ELSE
5300 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
5301 query_str := query_str || ' FROM org_access_view oav ' ;
5302 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
5303 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
5304 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
5305 END IF;
5306
5307 query_str := query_str || ' ORDER BY organization_code ';
5308
5309 -- Need to use MTL_ONHAND_LPN_V
5310 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
5311 OR inv_mwb_globals.g_lpn_to IS NOT NULL
5312 OR nvl(inv_mwb_globals.g_prepacked,1) <> 1) THEN
5313 IF inv_mwb_globals.g_tree_mat_loc_id = 2
5314 OR inv_mwb_globals.g_chk_receiving = 1 THEN
5315 table_required := ' mtl_onhand_lpn_mwb_v mol ';
5316 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
5317 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
5318 table_required := ' mtl_onhand_lpn_mwb_v mol ';
5319 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
5320 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
5321 END IF;
5322 ELSE
5323 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
5324 END IF;
5325 ELSE
5326 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
5327 table_required := ' mtl_onhand_lpn_v mol ';
5328 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
5329 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
5330 END IF;
5331 ELSE
5332 table_required := ' mtl_onhand_new_lpn_v mol ';
5333 END IF;
5334 END IF;
5335
5336 query_str := query_str || ' SELECT organization_id from ' || table_required;
5337
5338 IF inv_mwb_globals.g_lpn_from IS NOT NULL
5339 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5340 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
5341 query_str := query_str || ' WHERE 1=1 ';
5342
5343 IF inv_mwb_globals.g_tree_mat_loc_id = 2
5344 OR inv_mwb_globals.g_chk_receiving = 1 THEN
5345 query_str := query_str || ' AND lpn_context = 3 ';
5346 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
5347 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
5348 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
5349 query_str := query_str || ' AND lpn_context = 1 ';
5350 ELSIF inv_mwb_globals.g_prepacked <> 1
5351 AND inv_mwb_globals.g_prepacked <> 999
5352 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
5353 query_str := query_str || ' AND lpn_context = :prepacked ';
5354 END IF;
5355
5356 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5357 query_str := query_str || ' AND wlpn.locator_id = :loc_id ';
5358 END IF;
5359
5360 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5361 query_str := query_str || ' AND wlpn.subinventory_code = :sub ';
5362 END IF;
5363
5364 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5365 query_str := query_str || ' AND wlpn.organization_id = :org_id ';
5366 END IF;
5367
5368 IF inv_mwb_globals.g_lpn_from IS NOT NULL
5369 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5370 IF inv_mwb_globals.g_lpn_from IS NOT NULL
5371 AND inv_mwb_globals.g_lpn_to IS NULL THEN
5372 query_str := query_str || ' and license_plate_number >= :lpn_f ';
5373 ELSIF inv_mwb_globals.g_lpn_from IS NULL
5374 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5375 query_str := query_str || ' and license_plate_number <= :lpn_t ';
5376 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
5377 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5378 --bugfix#3646484
5379 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
5380 --User is querying for single LPN so converted the range query to equality query
5381 query_str := query_str || 'and license_plate_number = :lpn_f ';
5382 ELSE
5383 query_str := query_str || ' and license_plate_number >= :lpn_f ';
5384 query_str := query_str || ' and license_plate_number <= :lpn_t ';
5385 END IF;
5386 END IF;
5387 END IF;
5388
5389 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
5390 END IF;
5391
5392 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
5393 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
5394 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5395 query_str := query_str || 'WHERE 1=1 ';
5396 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
5397 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
5398 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
5399 query_str :=
5400 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
5401 || ') msn ';
5402 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
5403 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
5404 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
5405 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5406 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
5407 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
5408 --BUG 7556505
5409 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5410 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5411 END IF;
5412 --BUG 7556505
5413 /* Bug 8396954 added below code for supplier_lot_number */
5414 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5415 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5416 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
5417 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
5418 END IF;
5419
5420 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5421 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
5422 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
5423 END IF;
5424
5425 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5426 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
5427 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
5428 END IF;
5429 /* End of Bug 8396954 */
5430 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
5431 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
5432 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
5433 query_str :=
5434 query_str
5435 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5436 || inv_mwb_globals.g_tree_lot_attr_query
5437 || ') mln '
5438 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
5439 || inv_mwb_globals.g_tree_serial_attr_query
5440 || ') msn ';
5441 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
5442 --BUG 7556505
5443 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5444 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5445 END IF;
5446 --BUG 7556505
5447 /* Bug 8396954 added below code for supplier_lot_number */
5448 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5449 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5450 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
5451 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
5452 END IF;
5453
5454 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5455 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
5456 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
5457 END IF;
5458
5459 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5460 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
5461 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
5462 END IF;
5463 /* End of Bug 8396954 */
5464 query_str := query_str || 'AND msn.serial_num = serial_number ';
5465 END IF;
5466
5467 --ER(3338592) Changes (If the user gives the value for the Qty then only
5468 --Group by clause comes in to effect)
5469
5470 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5471 group_str := ' GROUP BY organization_id ';
5472 END IF;
5473
5474 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5475 query_str := query_str || 'AND subinventory_code = :sub ';
5476 --ER(3338592) Changes
5477 IF group_str IS NOT NULL THEN
5478 group_str := group_str || ' , subinventory_code ' ;
5479 END IF;
5480 END IF;
5481
5482 IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
5483 --ER(3338592) Changes
5484 IF group_str IS NOT NULL THEN
5485 group_str := group_str || ' , subinventory_code ' ;
5486 END IF;
5487 END IF;
5488
5489 -- NSRIVAST, INVCONV, Start
5490 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
5491 query_str := query_str || ' AND grade_code = :grade_f ' ;
5492 END IF ;
5493 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
5494 query_str := query_str || ' AND grade_code = :grade_c ' ;
5495 END IF ;
5496 -- NSRIVAST, INVCONV, End
5497
5498 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5499 query_str := query_str || 'AND locator_id = :loc_id ';
5500 --ER(3338592) Changes
5501 IF group_str IS NOT NULL THEN
5502 group_str := group_str || ' , locator_id ' ;
5503 END IF;
5504 END IF;
5505
5506 IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN --Bug # 3412002
5507 --ER(3338592) Changes
5508 IF group_str IS NOT NULL THEN
5509 group_str := group_str || ' , locator_id ' ;
5510 END IF;
5511 END IF;
5512
5513 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
5514 query_str := query_str || ' AND project_id = :pr_id ';
5515 --ER(3338592) Changes
5516 IF group_str IS NOT NULL THEN
5517 group_str := group_str || ' , project_id ' ;
5518 END IF;
5519 END IF;
5520
5521 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
5522 query_str := query_str || ' AND task_id = :ta_id ';
5523 --ER(3338592) Changes
5524 IF group_str IS NOT NULL THEN
5525 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
5526 END IF;
5527 END IF;
5528
5529 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5530 query_str := query_str || ' AND inventory_item_id = :item_id ';
5531 END IF;
5532
5533 -- ER(9158529 client)
5534 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
5535 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
5536 END IF;
5537 -- ER(9158529 client)
5538
5539 --Bug # 3411938
5540 IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
5541 AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL')) THEN
5542 group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
5543 END IF;
5544
5545 --ER(3338592) Changes
5546 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5547 query_str := query_str || ' AND item_description LIKE :item_description ';
5548 END IF;
5549
5550 IF inv_mwb_globals.g_revision IS NOT NULL THEN
5551 query_str := query_str || ' AND revision = :rev ';
5552 --ER(3338592) Changes
5553 IF group_str IS NOT NULL THEN
5554 group_str := group_str || ' , revision ' ;
5555 END IF;
5556 END IF;
5557
5558 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5559 query_str := query_str || ' AND cost_group_id = :cg_id ';
5560 --ER(3338592) Changes
5561 IF group_str IS NOT NULL THEN
5562 group_str := group_str || ' , cost_group_id ' ;
5563 END IF;
5564 END IF;
5565
5566 -- ER(9158529)
5567 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
5568 query_str := query_str || ' AND inventory_item_id in '
5569 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
5570 || ' where organization_id = :organization_id '
5571 || ' and category_set_id = :category_set_id '
5572 || ' and category_id = nvl(:category_id, category_id)) ' ;
5573 END IF;
5574 -- ER(9158529)
5575
5576 IF inv_mwb_globals.g_lpn_from IS NOT NULL
5577 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5578 query_str := query_str || ' AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
5579 END IF;
5580
5581 --ER(3338592) Changes
5582 IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5583 --ER(3338592) Changes
5584 IF group_str IS NOT NULL THEN
5585 group_str := group_str || ' , lpn ' ;
5586 END IF;
5587 END IF;
5588
5589 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5590 query_str := query_str || ' AND lot_number >= :lot_f ';
5591 END IF;
5592
5593 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5594 query_str := query_str || ' AND lot_number <= :lot_t ';
5595 END IF;
5596
5597 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
5598 query_str := query_str || ' AND serial_number >= :serial_f ';
5599 END IF;
5600
5601 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
5602 query_str := query_str || ' AND serial_number <= :serial_t ';
5603 END IF;
5604
5605 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
5606 query_str := query_str || ' AND unit_number=:un_id ';
5607 END IF;
5608
5609 /*LPN Status Project */
5610 IF (l_default_status_id IS NOT NULL) THEN
5611 IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
5612 query_str := query_str || 'AND onhand_status_id = :st_id ';
5613 END IF;
5614 ELSE
5615 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5616 query_str := query_str || ' AND (subinventory_status_id = :st_id OR locator_status_id = :st_id ';
5617 query_str := query_str || ' OR lot_status_id = :st_id OR serial_status_id = :st_id) ';
5618 END IF;
5619 END IF;
5620 /*End of fix for LPN Status Project */
5621
5622 IF inv_mwb_globals.g_lot_controlled = 2 THEN
5623 query_str := query_str || ' AND lot_number is not null ';
5624 ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
5625 query_str := query_str || ' AND lot_number is null ';
5626 END IF;
5627
5628 IF inv_mwb_globals.g_serial_controlled = 1 THEN
5629 query_str := query_str || ' AND serial_number is null ';
5630 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
5631 query_str := query_str || ' AND serial_number is not null ';
5632 END IF;
5633
5634 IF inv_mwb_globals.g_tree_mat_loc_id = 2
5635 OR inv_mwb_globals.g_chk_receiving = 1 THEN
5636 query_str := query_str || ' AND lpn_context = 3 ';
5637 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
5638 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 ) ';
5639 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
5640 query_str := query_str || 'AND lpn_context = 1 ';
5641 ELSIF inv_mwb_globals.g_prepacked <> 1
5642 AND inv_mwb_globals.g_prepacked <> 999
5643 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
5644 query_str := query_str || 'AND lpn_context = :prepacked ';
5645 END IF;
5646
5647 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
5648 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5649 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
5650 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
5651 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5652 query_str := query_str || ' AND planning_organization_id in ';
5653 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
5654 query_str := query_str || ' where vendor_id = :vendor_id )';
5655 END IF;*/
5656
5657 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
5658 query_str := query_str || ' AND owning_organization_id = :own_org ';
5659 query_str := query_str || ' AND owning_tp_type = 2 ';
5660 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5661 query_str := query_str || ' AND owning_organization_id = :own_org ';
5662 query_str := query_str || ' AND owning_tp_type = 1 ';
5663 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
5664 query_str := query_str || ' AND owning_tp_type = 1 ';
5665 END IF;
5666
5667 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
5668 query_str := query_str || ' AND planning_organization_id = :plan_org ';
5669 query_str := query_str || ' AND planning_tp_type = 2 ';
5670 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
5671 query_str := query_str || ' AND planning_organization_id = :plan_org ';
5672 query_str := query_str || ' AND planning_tp_type = 1 ';
5673 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
5674 query_str := query_str || ' AND planning_tp_type = 1 ';
5675 END IF;
5676
5677 --Bug #3411938
5678 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5679 group_str := group_str || ' , planning_organization_id, planning_tp_type ';
5680 group_str := group_str || ' , owning_organization_id, owning_tp_type ';
5681 group_str := group_str || ' , item_lot_control, item_serial_control ';
5682 END IF;
5683
5684 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5685 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5686 END IF;
5687
5688 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5689 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5690 END IF;
5691
5692 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5693 query_str := query_str || 'AND organization_id = mp.organization_id ';
5694 query_str := query_str || group_str || having_str || ' ) ' ;
5695 ELSE
5696 query_str := query_str || 'AND organization_id = mp.organization_id ) ';
5697 END IF;
5698
5699 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5700 query_str := query_str || 'and mp.organization_id = :org_id ';
5701 --Bug # 3411938
5702 ELSE
5703 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
5704 query_str := query_str || ' FROM org_access_view oav ' ;
5705 query_str := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
5706 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
5707 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
5708 END IF;
5709
5710 query_str := query_str || ' ORDER BY organization_code ';
5711
5712 END IF;
5713 END IF;
5714
5715 --trace1(query_str, 'add_orgs', 9);
5716
5717 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
5718
5719 inv_mwb_globals.g_last_query := query_str;
5720
5721 query_hdl := DBMS_SQL.open_cursor;
5722 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
5723
5724
5725 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5726 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
5727 END IF;
5728
5729 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5730 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
5731 END IF;
5732
5733 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5734 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
5735 END IF;
5736
5737 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5738 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
5739 END IF;
5740
5741 -- ER(9158529 client)
5742 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
5743 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
5744 END IF;
5745 -- ER(9158529 client)
5746
5747 IF inv_mwb_globals.g_revision IS NOT NULL THEN
5748 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
5749 END IF;
5750
5751 --bug 6633612
5752 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
5753 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
5754 END IF;
5755 --bug 6633612
5756
5757 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5758 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
5759 END IF;
5760
5761 -- ER(9158529)
5762 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
5763 DBMS_SQL.bind_variable(query_hdl, 'organization_id', inv_mwb_globals.g_organization_id);
5764 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
5765 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
5766 END IF;
5767 -- ER(9158529)
5768
5769 --BUG 7556505
5770 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5771 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
5772 END IF;
5773 --BUG 7556505
5774
5775 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5776 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
5777 END IF;
5778
5779 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5780 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
5781 END IF;
5782
5783 /* Bug 8396954 added below code for supplier_lot_number */
5784 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5785 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5786 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
5787 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
5788 END IF;
5789
5790 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
5791 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
5792 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
5793 END IF;
5794
5795 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
5796 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
5797 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
5798 END IF;
5799 /* End of Bug 8396954 */
5800
5801 -- NSRIVAST, INVCONV, Start
5802 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
5803 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
5804 END IF;
5805 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
5806 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
5807 END IF;
5808 -- NSRIVAST, INVCONV, End
5809 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
5810 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
5811 END IF;
5812
5813 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
5814 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
5815 END IF;
5816
5817 --bugfix#3646484
5818 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
5819 --User is querying for single LPN so converted the range query to equality query
5820 --So it is enought to bind the from lpn alone
5821 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
5822 ELSE
5823 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
5824 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
5825 END IF;
5826
5827 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5828 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
5829 END IF;
5830 END IF;
5831
5832 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5833 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
5834 ELSIF inv_mwb_globals.g_only_subinventory_status = 1 AND l_default_status_id is not null THEN -- Onhand Material Status Support
5835 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
5836 END IF;
5837
5838 IF inv_mwb_globals.g_prepacked <> 1
5839 AND inv_mwb_globals.g_prepacked <> 999
5840 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
5841 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
5842 END IF;
5843
5844 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
5845 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
5846 END IF;
5847
5848 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
5849 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
5850 END IF;
5851
5852 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
5853 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
5854 END IF;
5855
5856 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
5857 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
5858 END IF;
5859
5860 IF (inv_mwb_globals.g_owning_qry_mode = 4)
5861 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5862 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
5863 END IF;
5864
5865 IF (inv_mwb_globals.g_planning_query_mode = 4)
5866 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
5867 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
5868 END IF;
5869
5870 --ER(3338592) Changes
5871 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5872 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
5873 END IF;
5874
5875 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5876 dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
5877 END IF;
5878
5879 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5880 dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
5881 END IF;
5882 --End of ER Changes
5883
5884 --Bug #3411938
5885 IF inv_mwb_globals.g_organization_id IS NULL THEN
5886 IF inv_mwb_globals.g_responsibility_id IS NOT NULL THEN
5887 dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
5888 END IF;
5889
5890 IF inv_mwb_globals.g_resp_application_id IS NOT NULL THEN
5891 dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
5892 END IF;
5893 END IF;
5894
5895 DBMS_SQL.define_column(query_hdl, 1, org_id);
5896 DBMS_SQL.define_column(query_hdl, 2, org_code, 3);
5897
5898 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Org id , Org code '||org_id||','||org_code );
5899
5900 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5901 SELECT mp.organization_id, mp.organization_code
5902 INTO org_id,org_code
5903 FROM mtl_parameters mp
5904 WHERE EXISTS (SELECT organization_id
5905 FROM mtl_onhand_total_mwb_v
5906 WHERE 1 = 1 AND organization_id = mp.organization_id)
5907 AND mp.organization_id = inv_mwb_globals.g_organization_id
5908 ORDER BY organization_code;
5909 END IF;
5910 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
5911
5912 LOOP
5913 -- fetch a row
5914 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
5915 -- fetch columns from the row
5916
5917 DBMS_SQL.column_value(query_hdl, 1, org_id);
5918 DBMS_SQL.column_value(query_hdl, 2, org_code);
5919 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Coming inside, Org code : '||org_id||org_code );
5920 FOR j in 1 .. x_node_tbl.COUNT LOOP
5921 IF x_node_tbl(j).LABEL = org_code THEN
5922 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'In loop: '||x_node_tbl(j).LABEL );
5923 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, x_node_tbl(j).VALUE);
5924 RETURN;
5925 END IF;
5926 END LOOP;
5927 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'after loop');
5928 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
5929 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
5930 x_node_tbl(i).DEPTH := 1;
5931 x_node_tbl(i).label := org_code;
5932 x_node_tbl(i).icon := 'inv_inor';
5933 x_node_tbl(i).VALUE := TO_CHAR(org_id);
5934 x_node_tbl(i).TYPE := 'ORG';
5935 i := i + 1;
5936 END IF;
5937 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
5938 j := j + 1;
5939 ELSE
5940 EXIT;
5941 END IF;
5942 END LOOP;
5943
5944 DBMS_SQL.close_cursor(query_hdl); -- close cursor
5945 x_node_value := j;
5946 x_tbl_index := i;
5947
5948 -- END IF; -- in onhand > 0
5949 EXCEPTION
5950 WHEN NO_DATA_FOUND THEN
5951 NULL;
5952 WHEN OTHERS THEN
5953 RAISE;
5954 END add_orgs;
5955
5956 -- Add status nodes for the given parameters
5957 PROCEDURE add_statuses(
5958 x_node_value IN OUT NOCOPY NUMBER
5959 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
5960 , x_tbl_index IN OUT NOCOPY NUMBER
5961 ) IS
5962 query_str VARCHAR2(10000);
5963 query_hdl NUMBER;
5964 rows_processed NUMBER;
5965 status_id mtl_material_statuses_vl.status_id%TYPE;
5966 status_code mtl_material_statuses_vl.status_code%TYPE;
5967 i NUMBER := x_tbl_index;
5968 j NUMBER := x_node_value;
5969 serial_control NUMBER;
5970 table_required VARCHAR2(300);
5971
5972 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
5973
5974 --ER(3338592) Changes
5975 group_str VARCHAR2(10000) ;
5976 having_str VARCHAR2(10000) := ' HAVING 1=1 ';
5977 --End of ER Changes
5978
5979 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_STATUSES';
5980 l_default_status_id NUMBER; -- Onhand Material Status Support
5981 BEGIN
5982 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
5983
5984 -- Onhand Material Status Support
5985 if (inv_mwb_globals.g_organization_id is not null) then
5986 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
5987 l_default_status_id := inv_cache.org_rec.default_status_id;
5988 end if;
5989 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
5990 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
5991 l_default_status_id := inv_cache.org_rec.default_status_id;
5992 end if;
5993 end if;
5994
5995 -- NSRIVAST, INVCONV, Start
5996 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
5997 is_grade_t := TRUE ;
5998 END IF ;
5999 -- NSRIVAST, INVCONV, End
6000
6001 query_str := 'SELECT mms.status_id, mms.status_code ';
6002 query_str := query_str || 'FROM mtl_material_statuses_vl mms ';
6003 query_str := query_str || ' WHERE exists (';
6004
6005 IF inv_mwb_globals.g_organization_id IS NOT NULL
6006 AND inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6007 SELECT serial_number_control_code
6008 INTO serial_control
6009 FROM mtl_system_items
6010 WHERE organization_id = inv_mwb_globals.g_organization_id
6011 AND inventory_item_id = inv_mwb_globals.g_inventory_item_id;
6012 END IF;
6013
6014 IF (serial_control IN(2, 5)
6015 OR inv_mwb_globals.g_serial_from IS NOT NULL
6016 OR inv_mwb_globals.g_serial_to IS NOT NULL
6017 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL)
6018 AND inv_mwb_globals.g_lpn_from IS NULL
6019 AND inv_mwb_globals.g_lpn_to IS NULL THEN
6020 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
6021 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
6022 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6023 query_str := query_str || 'SELECT v.organization_id from mtl_onhand_serial_v v ';
6024 --bug 6633612
6025 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6026 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6027 END IF;
6028 --bug 6633612
6029 query_str := query_str || 'WHERE 1=1 ';
6030 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
6031 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
6032 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
6033 query_str :=
6034 query_str
6035 || 'SELECT v.organization_id from'
6036 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
6037 || inv_mwb_globals.g_tree_serial_attr_query
6038 || ') msn, mtl_onhand_serial_v v ';
6039 --bug 6633612
6040 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6041 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6042 END IF;
6043 --bug 6633612
6044 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
6045 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
6046 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
6047 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6048 query_str :=
6049 query_str
6050 || 'SELECT v.organization_id from'
6051 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6052 || inv_mwb_globals.g_tree_lot_attr_query
6053 || ') mln, mtl_onhand_serial_v v ';
6054 --bug 6633612
6055 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6056 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6057 END IF;
6058 --bug 6633612
6059 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
6060 --BUG 7556505
6061 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6062 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6063 END IF;
6064 --BUG 7556505
6065 /* Bug 8396954 added below code for supplier_lot_number */
6066 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6067 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6068 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
6069 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
6070 END IF;
6071
6072 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6073 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
6074 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
6075 END IF;
6076
6077 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6078 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
6079 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
6080 END IF;
6081 /* End of Bug 8396954 */
6082 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
6083 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
6084 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
6085 query_str :=
6086 query_str
6087 || 'SELECT v.organization_id from'
6088 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6089 || inv_mwb_globals.g_tree_lot_attr_query
6090 || ') mln, '
6091 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
6092 || inv_mwb_globals.g_tree_serial_attr_query
6093 || ') msn, mtl_onhand_serial_v v ';
6094 --bug 6633612
6095 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6096 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6097 END IF;
6098 --bug 6633612
6099 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
6100 --BUG 7556505
6101 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6102 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6103 END IF;
6104 --BUG 7556505
6105 /* Bug 8396954 added below code for supplier_lot_number */
6106 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6107 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6108 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
6109 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
6110 END IF;
6111
6112 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6113 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
6114 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
6115 END IF;
6116
6117 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6118 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
6119 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
6120 END IF;
6121 /* End of Bug 8396954 */
6122 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
6123 END IF;
6124
6125 --ER(3338592) Changes (If the user gives the value for the Qty then only
6126 --Group by clause comes in to effect)
6127
6128 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6129 group_str := ' GROUP BY v.organization_id ';
6130 END IF;
6131
6132 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6133 query_str := query_str || 'AND v.organization_id = :org_id ';
6134 END IF;
6135
6136 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6137 query_str := query_str || 'AND v.subinventory_code <= :sub ';
6138 --ER(3338592) Changes
6139 IF group_str IS NOT NULL THEN
6140 group_str := group_str || ' , v.subinventory_code ' ;
6141 END IF;
6142 END IF;
6143 --bug 6633612
6144 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6145 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6146 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6147 || ' AND rt.organization_id = mmt.organization_id '
6148 || ' AND rt.transaction_type = ''DELIVER'''
6149 || ' AND rt.destination_type_code = ''INVENTORY'''
6150 || ' AND mmt.transaction_id = v.last_transaction_id '
6151 || ' AND mmt.organization_id = v.organization_id ';
6152
6153 END IF;
6154 --bug 6633612
6155
6156 -- NSRIVAST, INVCONV, Start
6157 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6158 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
6159 END IF ;
6160 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
6161 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
6162 END IF ;
6163 -- NSRIVAST, INVCONV, End
6164
6165 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6166 query_str := query_str || 'AND v.locator_id = :loc_id ';
6167 --ER(3338592) Changes
6168 IF group_str IS NOT NULL THEN
6169 group_str := group_str || ' , v.locator_id ' ;
6170 END IF;
6171 END IF;
6172
6173 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6174 query_str := query_str || ' AND v.project_id = :pr_id ';
6175 --ER(3338592) Changes
6176 IF group_str IS NOT NULL THEN
6177 group_str := group_str || ' , v.project_id ' ;
6178 END IF;
6179 END IF;
6180
6181 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6182 query_str := query_str || ' AND v.task_id = :ta_id ';
6183 --ER(3338592) Changes
6184 IF group_str IS NOT NULL THEN
6185 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
6186 END IF;
6187 END IF;
6188
6189 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6190 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
6191 END IF;
6192
6193 -- ER(9158529 client)
6194 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
6195 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
6196 END IF;
6197 -- ER(9158529 client)
6198
6199 --Bug # 3411938
6200 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6201 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
6202 END IF;
6203
6204 --ER(3338592) Changes
6205 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6206 query_str := query_str || ' AND v.item_description LIKE :item_description ';
6207 END IF;
6208
6209 IF inv_mwb_globals.g_revision IS NOT NULL THEN
6210 query_str := query_str || 'AND v.revision <= :rev ';
6211 --ER(3338592) Changes
6212 IF group_str IS NOT NULL THEN
6213 group_str := group_str || ' , v.revision ' ;
6214 END IF;
6215 END IF;
6216
6217 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6218 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
6219 --ER(3338592) Changes
6220 IF group_str IS NOT NULL THEN
6221 group_str := group_str || ' , v.cost_group_id ' ;
6222 END IF;
6223 END IF;
6224
6225 -- ER(9158529)
6226 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
6227 query_str := query_str || ' AND v.inventory_item_id in '
6228 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
6229 || ' where organization_id = :organization_id '
6230 || ' and category_set_id = :category_set_id '
6231 || ' and category_id = nvl(:category_id, category_id)) ' ;
6232 END IF;
6233 -- ER(9158529)
6234
6235 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6236 query_str := query_str || 'AND v.lot_number >= :lot_f ';
6237 END IF;
6238
6239 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6240 query_str := query_str || 'AND v.lot_number <= :lot_t ';
6241 END IF;
6242
6243 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
6244 query_str := query_str || 'AND v.serial_number >= :serial_f ';
6245 END IF;
6246
6247 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
6248 query_str := query_str || 'AND v.serial_number <= :serial_t ';
6249 END IF;
6250
6251 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
6252 query_str := query_str || ' AND v.unit_number=:un_id ';
6253 END IF;
6254
6255 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6256 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6257 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
6258 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6259 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6260 query_str := query_str || ' AND planning_organization_id in ';
6261 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
6262 query_str := query_str || ' where vendor_id = :vendor_id )';
6263 END IF;*/
6264
6265 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
6266 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
6267 query_str := query_str || ' AND v.planning_tp_type = 2 ';
6268 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
6269 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
6270 query_str := query_str || ' AND v.planning_tp_type = 1 ';
6271 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
6272 query_str := query_str || ' AND v.planning_tp_type = 1 ';
6273 END IF;
6274
6275 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
6276 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
6277 query_str := query_str || ' AND v.owning_tp_type = 2 ';
6278 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6279 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
6280 query_str := query_str || ' AND v.owning_tp_type = 1 ';
6281 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
6282 query_str := query_str || ' AND v.owning_tp_type = 1 ';
6283 END IF;
6284
6285 --Bug #3411938
6286 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6287 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
6288 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
6289 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
6290 END IF;
6291
6292 -- Onhand Material Status Support
6293 if (l_default_status_id is not null) then
6294 query_str := query_str || ' AND v.serial_status_id = mms.status_id ';
6295 else
6296 query_str := query_str || ' AND (v.subinventory_status_id = mms.status_id ';
6297 query_str := query_str || ' or v.locator_status_id = mms.status_id or ';
6298 query_str := query_str || ' v.lot_status_id = mms.status_id or v.serial_status_id = mms.status_id) ';
6299 end if;
6300
6301 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
6302 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
6303 END IF;
6304
6305 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
6306 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
6307 END IF;
6308
6309 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6310 query_str := query_str || 'AND v.organization_id = :org_id ';
6311 ELSE
6312 query_str := query_str || ' AND EXISTS ( SELECT 1 ' ;
6313 query_str := query_str || ' FROM org_access_view oav ' ;
6314 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
6315 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
6316 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
6317 END IF;
6318
6319 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6320 query_str := query_str || group_str || having_str || ' ' ;
6321 END IF;
6322
6323 query_str := query_str || ') ';
6324
6325 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6326 query_str := query_str || 'and mms.status_id = :st_id ';
6327 END IF;
6328
6329 query_str := query_str || ' ORDER BY status_code ';
6330
6331 ELSIF inv_mwb_globals.g_lpn_from IS NULL
6332 AND inv_mwb_globals.g_lpn_to IS NULL THEN
6333 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
6334 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
6335 query_str := query_str || 'SELECT v.organization_id from mtl_onhand_total_v v ';
6336 query_str := query_str || 'WHERE 1=1 ';
6337 ELSE
6338 query_str :=
6339 query_str
6340 || 'SELECT v.organization_id from'
6341 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6342 || inv_mwb_globals.g_tree_lot_attr_query
6343 || ') mln, mtl_onhand_total_v v ';
6344 --bug 6633612
6345 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6346 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6347 END IF;
6348 --bug 6633612
6349 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
6350 --BUG 7556505
6351 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6352 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6353 END IF;
6354 --BUG 7556505
6355 /* Bug 8396954 added below code for supplier_lot_number */
6356 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6357 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6358 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
6359 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
6360 END IF;
6361
6362 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6363 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
6364 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
6365 END IF;
6366
6367 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6368 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
6369 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
6370 END IF;
6371 /* End of Bug 8396954 */
6372 END IF;
6373
6374 --ER(3338592) Changes (If the user gives the value for the Qty then only
6375 --Group by clause comes in to effect)
6376 --bug 6633612
6377 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6378 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6379 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6380 || ' AND rt.organization_id = mmt.organization_id '
6381 || ' AND rt.transaction_type = ''DELIVER'''
6382 || ' AND rt.destination_type_code = ''INVENTORY'''
6383 || ' AND mmt.transaction_id = v.create_transaction_id '
6384 || ' AND mmt.organization_id = v.organization_id ';
6385
6386 END IF;
6387 --bug 6633612
6388
6389 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6390 group_str := ' GROUP BY v.organization_id ';
6391 END IF;
6392
6393 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6394 query_str := query_str || 'AND v.organization_id = :org_id ';
6395 END IF;
6396
6397 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6398 query_str := query_str || 'AND v.subinventory_code = :sub ';
6399 --ER(3338592) Changes
6400 IF group_str IS NOT NULL THEN
6401 group_str := group_str || ' , v.subinventory_code ' ;
6402 END IF;
6403 END IF;
6404
6405 -- NSRIVAST, INVCONV, Start
6406 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6407 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
6408 END IF ;
6409 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
6410 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
6411 END IF ;
6412 -- NSRIVAST, INVCONV, End
6413
6414 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6415 query_str := query_str || 'AND v.locator_id = :loc_id ';
6416 --ER(3338592) Changes
6417 IF group_str IS NOT NULL THEN
6418 group_str := group_str || ' , v.locator_id ' ;
6419 END IF;
6420 END IF;
6421
6422 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6423 query_str := query_str || ' AND v.project_id = :pr_id ';
6424 --ER(3338592) Changes
6425 IF group_str IS NOT NULL THEN
6426 group_str := group_str || ' , v.project_id ' ;
6427 END IF;
6428 END IF;
6429
6430 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6431 query_str := query_str || ' AND v.task_id = :ta_id ';
6432 --ER(3338592) Changes
6433 IF group_str IS NOT NULL THEN
6434 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
6435 END IF;
6436 END IF;
6437
6438 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6439 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
6440 END IF;
6441
6442 -- ER(9158529 client)
6443 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
6444 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
6445 END IF;
6446 -- ER(9158529 client)
6447
6448 --Bug # 3411938
6449 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6450 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
6451 END IF;
6452
6453 --ER(3338592) Changes
6454 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6455 query_str := query_str || ' AND v.item_description LIKE :item_description ';
6456 END IF;
6457
6458 IF inv_mwb_globals.g_revision IS NOT NULL THEN
6459 query_str := query_str || 'AND v.revision = :rev ';
6460 --ER(3338592) Changes
6461 IF group_str IS NOT NULL THEN
6462 group_str := group_str || ' , v.revision ' ;
6463 END IF;
6464 END IF;
6465
6466 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6467 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
6468 --ER(3338592) Changes
6469 IF group_str IS NOT NULL THEN
6470 group_str := group_str || ' , v.cost_group_id ' ;
6471 END IF;
6472 END IF;
6473
6474 -- ER(9158529)
6475 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
6476 query_str := query_str || ' AND v.inventory_item_id in '
6477 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
6478 || ' where organization_id = :organization_id '
6479 || ' and category_set_id = :category_set_id '
6480 || ' and category_id = nvl(:category_id, category_id)) ' ;
6481 END IF;
6482 -- ER(9158529)
6483
6484 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6485 query_str := query_str || 'AND v.lot_number >= :lot_f ';
6486 END IF;
6487
6488 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6489 query_str := query_str || 'AND v.lot_number <= :lot_t ';
6490 END IF;
6491
6492 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
6493 query_str := query_str || ' AND v.unit_number=:un_id ';
6494 END IF;
6495
6496 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6497 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6498 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
6499 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6500 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6501 query_str := query_str || ' AND planning_organization_id in ';
6502 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
6503 query_str := query_str || ' where vendor_id = :vendor_id )';
6504 END IF;*/
6505
6506 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
6507 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
6508 query_str := query_str || ' AND v.planning_tp_type = 2 ';
6509 --ER(3338592) Changes
6510 IF group_str IS NOT NULL THEN
6511 group_str := group_str || ' , v.planning_organization_id , v.planning_tp_type ' ;
6512 END IF;
6513 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
6514 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
6515 query_str := query_str || ' AND v.planning_tp_type = 1 ';
6516 --ER(3338592) Changes
6517 IF group_str IS NOT NULL THEN
6518 group_str := group_str || ' , v.planning_organization_id , v.planning_tp_type ' ;
6519 END IF;
6520 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
6521 query_str := query_str || ' AND v.planning_tp_type = 1 ';
6522 --ER(3338592) Changes
6523 IF group_str IS NOT NULL THEN
6524 group_str := group_str || ' , v.planning_tp_type ' ;
6525 END IF;
6526 END IF;
6527
6528 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
6529 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
6530 query_str := query_str || ' AND v.owning_tp_type = 2 ';
6531 --ER(3338592) Changes
6532 IF group_str IS NOT NULL THEN
6533 group_str := group_str || ' , v.owning_organization_id , v.owning_tp_type ' ;
6534 END IF;
6535 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6536 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
6537 query_str := query_str || ' AND v.owning_tp_type = 1 ';
6538 --ER(3338592) Changes
6539 IF group_str IS NOT NULL THEN
6540 group_str := group_str || ' , v.owning_organization_id , v.owning_tp_type ' ;
6541 END IF;
6542 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
6543 query_str := query_str || ' AND v.owning_tp_type = 1 ';
6544 --ER(3338592) Changes
6545 IF group_str IS NOT NULL THEN
6546 group_str := group_str || ' , v.owning_tp_type ' ;
6547 END IF;
6548 END IF;
6549
6550 --Bug #3411938
6551 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6552 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
6553 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
6554 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
6555 END IF;
6556
6557 -- Onhand Material Status Support
6558 if (l_default_status_id is not null) then
6559 query_str := query_str || ' AND v.onhand_status_id = mms.status_id ';
6560 else
6561 query_str := query_str || 'AND (v.subinventory_status_id = mms.status_id ';
6562 query_str := query_str || 'or v.locator_status_id = mms.status_id or ';
6563 query_str := query_str || 'v.lot_status_id = mms.status_id) ';
6564 end if;
6565
6566 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
6567 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
6568 END IF;
6569
6570 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
6571 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
6572 END IF;
6573
6574 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6575 query_str := query_str || 'AND v.organization_id = :org_id ';
6576 ELSE
6577 query_str := query_str || ' AND EXISTS ( SELECT 1 ' ;
6578 query_str := query_str || ' FROM org_access_view oav ' ;
6579 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
6580 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
6581 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
6582 END IF;
6583
6584 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6585 query_str := query_str || group_str || having_str || ' ' ;
6586 END IF;
6587
6588 --Reinitializing
6589 having_str := ' HAVING 1=1 ' ;
6590
6591 query_str := query_str || 'UNION ';
6592
6593 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
6594 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
6595 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6596 query_str := query_str || 'SELECT v.organization_id from mtl_onhand_serial_v v ';
6597 query_str := query_str || 'WHERE 1=1 ';
6598 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
6599 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
6600 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6601 query_str :=
6602 query_str
6603 || 'SELECT v.organization_id from'
6604 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6605 || inv_mwb_globals.g_tree_lot_attr_query
6606 || ') mln, mtl_onhand_serial_v v ';
6607
6608 --bug 6633612
6609 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6610 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6611 END IF;
6612 --bug 6633612
6613
6614 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
6615 --BUG 7556505
6616 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6617 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6618 END IF;
6619 --BUG 7556505
6620 /* Bug 8396954 added below code for supplier_lot_number */
6621 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6622 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6623 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
6624 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
6625 END IF;
6626
6627 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6628 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
6629 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
6630 END IF;
6631
6632 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6633 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
6634 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
6635 END IF;
6636 /* End of Bug 8396954 */
6637 END IF;
6638
6639 --ER(3338592) Changes (If the user gives the value for the Qty then only
6640 --Group by clause comes in to effect)
6641
6642 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6643 group_str := ' GROUP BY v.organization_id ';
6644 END IF;
6645
6646 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6647 query_str := query_str || 'AND v.organization_id = :org_id ';
6648 END IF;
6649
6650 --bug 6633612
6651 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6652 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6653 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6654 || ' AND rt.organization_id = mmt.organization_id '
6655 || ' AND rt.transaction_type = ''DELIVER'''
6656 || ' AND rt.destination_type_code = ''INVENTORY'''
6657 || ' AND mmt.transaction_id = v.last_transaction_id '
6658 || ' AND mmt.organization_id = v.organization_id ';
6659
6660 END IF;
6661 --bug 6633612
6662
6663 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6664 query_str := query_str || 'AND v.subinventory_code = :sub ';
6665 --ER(3338592) Changes
6666 IF group_str IS NOT NULL THEN
6667 group_str := group_str || ' , v.subinventory_code ' ;
6668 END IF;
6669 END IF;
6670
6671 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6672 query_str := query_str || 'AND v.locator_id = :loc_id ';
6673 --ER(3338592) Changes
6674 IF group_str IS NOT NULL THEN
6675 group_str := group_str || ' , v.locator_id ' ;
6676 END IF;
6677 END IF;
6678
6679 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6680 query_str := query_str || ' AND v.project_id = :pr_id ';
6681 --ER(3338592) Changes
6682 IF group_str IS NOT NULL THEN
6683 group_str := group_str || ' , v.project_id ' ;
6684 END IF;
6685 END IF;
6686
6687 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6688 query_str := query_str || ' AND v.task_id = :ta_id ';
6689 --ER(3338592) Changes
6690 IF group_str IS NOT NULL THEN
6691 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
6692 END IF;
6693 END IF;
6694
6695 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6696 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
6697 END IF;
6698
6699 -- ER(9158529 client)
6700 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
6701 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
6702 END IF;
6703 -- ER(9158529 client)
6704
6705 --Bug # 3411938
6706 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6707 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
6708 END IF;
6709
6710 --ER(3338592) Changes
6711 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6712 query_str := query_str || ' AND v.item_description LIKE :item_description ';
6713 END IF;
6714
6715 IF inv_mwb_globals.g_revision IS NOT NULL THEN
6716 query_str := query_str || 'AND v.revision = :rev ';
6717 --ER(3338592) Changes
6718 IF group_str IS NOT NULL THEN
6719 group_str := group_str || ' , v.revision ' ;
6720 END IF;
6721 END IF;
6722
6723 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6724 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
6725 --ER(3338592) Changes
6726 IF group_str IS NOT NULL THEN
6727 group_str := group_str || ' , v.cost_group_id ' ;
6728 END IF;
6729 END IF;
6730
6731 -- ER(9158529)
6732 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
6733 query_str := query_str || ' AND v.inventory_item_id in '
6734 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
6735 || ' where organization_id = :organization_id '
6736 || ' and category_set_id = :category_set_id '
6737 || ' and category_id = nvl(:category_id, category_id)) ' ;
6738 END IF;
6739 -- ER(9158529)
6740
6741 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6742 query_str := query_str || 'AND v.lot_number >= :lot_f ';
6743 END IF;
6744
6745 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6746 query_str := query_str || 'AND v.lot_number <= :lot_t ';
6747 END IF;
6748
6749 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
6750 query_str := query_str || 'AND v.serial_number >= :serial_f ';
6751 END IF;
6752
6753 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
6754 query_str := query_str || 'AND v.serial_number <= :serial_t ';
6755 END IF;
6756
6757 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
6758 query_str := query_str || ' AND v.unit_number=:un_id ';
6759 END IF;
6760
6761 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6762 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6763 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
6764 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6765 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6766 query_str := query_str || ' AND planning_organization_id in ';
6767 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
6768 query_str := query_str || ' where vendor_id = :vendor_id )';
6769 END IF;*/
6770
6771 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
6772 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
6773 query_str := query_str || ' AND v.planning_tp_type = 2 ';
6774 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
6775 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
6776 query_str := query_str || ' AND v.planning_tp_type = 1 ';
6777 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
6778 query_str := query_str || ' AND v.planning_tp_type = 1 ';
6779 END IF;
6780
6781 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
6782 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
6783 query_str := query_str || ' AND v.owning_tp_type = 2 ';
6784 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6785 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
6786 query_str := query_str || ' AND v.owning_tp_type = 1 ';
6787 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
6788 query_str := query_str || ' AND v.owning_tp_type = 1 ';
6789 END IF;
6790
6791 --Bug #3411938
6792 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6793 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
6794 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
6795 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
6796 END IF;
6797
6798 -- Onhand Material Status Support
6799 if (l_default_status_id is not null) then
6800 query_str := query_str || ' AND v.serial_status_id = mms.status_id ';
6801 else
6802 query_str := query_str || 'AND (v.subinventory_status_id = mms.status_id ';
6803 query_str := query_str || 'or v.locator_status_id = mms.status_id or ';
6804 query_str := query_str || 'v.lot_status_id = mms.status_id or v.serial_status_id = mms.status_id) ';
6805 end if;
6806
6807 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
6808 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
6809 END IF;
6810
6811 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
6812 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
6813 END IF;
6814
6815 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6816 query_str := query_str || 'AND v.organization_id = :org_id ';
6817 ELSE
6818 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
6819 query_str := query_str || ' FROM org_access_view oav ' ;
6820 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
6821 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
6822 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
6823 END IF;
6824
6825 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6826 query_str := query_str || group_str || having_str || ' ' ;
6827 END IF;
6828
6829 query_str := query_str || ') ';
6830
6831 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6832 query_str := query_str || 'and mms.status_id = :st_id ';
6833 END IF;
6834
6835 query_str := query_str || ' ORDER BY status_code ';
6836
6837 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
6838 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
6839 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
6840 table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
6841 ELSE
6842 table_required := ' MTL_ONHAND_NEW_LPN_V mol ';
6843 END IF;
6844 query_str := query_str || 'SELECT organization_id from ' || table_required;
6845
6846 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
6847 OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
6848 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
6849 query_str := query_str || ' WHERE 1=1 ';
6850
6851 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6852 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
6853 END IF;
6854
6855 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6856 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
6857 END IF;
6858
6859 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6860 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
6861 END IF;
6862
6863 IF inv_mwb_globals.g_lpn_from IS NOT NULL
6864 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
6865 IF inv_mwb_globals.g_lpn_from IS NOT NULL
6866 AND inv_mwb_globals.g_lpn_to IS NULL THEN
6867 query_str := query_str || ' and license_plate_number >= :lpn_f ';
6868 ELSIF inv_mwb_globals.g_lpn_from IS NULL
6869 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
6870 query_str := query_str || ' and license_plate_number <= :lpn_t ';
6871 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
6872 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
6873 --bugfix#3646484
6874 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
6875 --User is querying for single LPN so converted the range query to equality query
6876 query_str := query_str || 'and license_plate_number = :lpn_f ';
6877 ELSE
6878 query_str := query_str || ' and license_plate_number >= :lpn_f ';
6879 query_str := query_str || ' and license_plate_number <= :lpn_t ';
6880 END IF;
6881 END IF;
6882 END IF;
6883
6884 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
6885 END IF;
6886
6887 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
6888 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
6889 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6890 query_str := query_str || 'WHERE 1=1 ';
6891 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
6892 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
6893 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
6894 query_str :=
6895 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
6896 || ') msn ';
6897 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
6898 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
6899 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
6900 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6901 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
6902 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
6903 --BUG 7556505
6904 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6905 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6906 END IF;
6907 --BUG 7556505
6908 /* Bug 8396954 added below code for supplier_lot_number */
6909 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6910 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6911 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
6912 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
6913 END IF;
6914
6915 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6916 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
6917 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
6918 END IF;
6919
6920 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6921 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
6922 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
6923 END IF;
6924 /* End of Bug 8396954 */
6925 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
6926 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
6927 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
6928 query_str :=
6929 query_str
6930 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6931 || inv_mwb_globals.g_tree_lot_attr_query
6932 || ') mln '
6933 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
6934 || inv_mwb_globals.g_tree_serial_attr_query
6935 || ') msn ';
6936 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
6937 --BUG 7556505
6938 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6939 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6940 END IF;
6941 --BUG 7556505
6942 /* Bug 8396954 added below code for supplier_lot_number */
6943 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6944 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6945 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
6946 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
6947 END IF;
6948
6949 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
6950 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
6951 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
6952 END IF;
6953
6954 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
6955 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
6956 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
6957 END IF;
6958 /* End of Bug 8396954 */
6959 query_str := query_str || 'AND msn.serial_num = serial_number ';
6960 END IF;
6961
6962 --ER(3338592) Changes (If the user gives the value for the Qty then only
6963 --Group by clause comes in to effect)
6964
6965 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
6966 group_str := ' GROUP BY organization_id ';
6967 END IF;
6968
6969 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6970 query_str := query_str || 'AND subinventory_code = :sub ';
6971 --ER(3338592) Changes
6972 IF group_str IS NOT NULL THEN
6973 group_str := group_str || ' , subinventory_code ' ;
6974 END IF;
6975 END IF;
6976
6977 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6978 query_str := query_str || 'AND locator_id = :loc_id ';
6979 --ER(3338592) Changes
6980 IF group_str IS NOT NULL THEN
6981 group_str := group_str || ' , locator_id ' ;
6982 END IF;
6983 END IF;
6984
6985 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6986 query_str := query_str || ' AND project_id = :pr_id ';
6987 --ER(3338592) Changes
6988 IF group_str IS NOT NULL THEN
6989 group_str := group_str || ' , project_id ' ;
6990 END IF;
6991 END IF;
6992
6993 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6994 query_str := query_str || ' AND task_id = :ta_id ';
6995 --ER(3338592) Changes
6996 IF group_str IS NOT NULL THEN
6997 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
6998 END IF;
6999 END IF;
7000
7001 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7002 query_str := query_str || 'AND inventory_item_id = :item_id ';
7003 END IF;
7004
7005 -- ER(9158529 client)
7006 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
7007 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
7008 END IF;
7009 -- ER(9158529 client)
7010
7011 --Bug # 3411938
7012 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
7013 group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
7014 END IF;
7015
7016 --ER(3338592) Changes
7017 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7018 query_str := query_str || ' AND item_description LIKE :item_description ';
7019 END IF;
7020
7021 IF inv_mwb_globals.g_revision IS NOT NULL THEN
7022 query_str := query_str || 'AND revision = :rev ';
7023 --ER(3338592) Changes
7024 IF group_str IS NOT NULL THEN
7025 group_str := group_str || ' , revision ' ;
7026 END IF;
7027 END IF;
7028
7029 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7030 query_str := query_str || 'AND cost_group_id = :cg_id ';
7031 --ER(3338592) Changes
7032 IF group_str IS NOT NULL THEN
7033 group_str := group_str || ' , cost_group_id ' ;
7034 END IF;
7035 END IF;
7036
7037 -- ER(9158529)
7038 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
7039 query_str := query_str || ' AND inventory_item_id in '
7040 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
7041 || ' where organization_id = :organization_id '
7042 || ' and category_set_id = :category_set_id '
7043 || ' and category_id = nvl(:category_id, category_id)) ' ;
7044 END IF;
7045 -- ER(9158529)
7046
7047 IF inv_mwb_globals.g_lpn_from IS NOT NULL
7048 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7049 query_str := query_str || ' AND mol.outermost_lpn_id = x.outermost_lpn_id ';
7050 --ER(3338592) Changes
7051 IF group_str IS NOT NULL THEN
7052 group_str := group_str || ' , lpn ' ;
7053 END IF;
7054 END IF;
7055
7056 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7057 query_str := query_str || 'AND lot_number >= :lot_f ';
7058 END IF;
7059
7060 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7061 query_str := query_str || 'AND lot_number <= :lot_t ';
7062 END IF;
7063
7064 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
7065 query_str := query_str || 'AND serial_number >= :serial_f ';
7066 END IF;
7067
7068 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
7069 query_str := query_str || 'AND serial_number <= :serial_t ';
7070 END IF;
7071
7072 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7073 query_str := query_str || ' AND unit_number=:un_id ';
7074 END IF;
7075
7076 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7077 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7078 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
7079 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7080 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7081 query_str := query_str || ' AND planning_organization_id in ';
7082 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
7083 query_str := query_str || ' where vendor_id = :vendor_id )';
7084 END IF;*/
7085
7086 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
7087 query_str := query_str || ' AND planning_organization_id = :plan_org ';
7088 query_str := query_str || ' AND planning_tp_type = 2 ';
7089 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
7090 query_str := query_str || ' AND planning_organization_id = :plan_org ';
7091 query_str := query_str || ' AND planning_tp_type = 1 ';
7092 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
7093 query_str := query_str || ' AND planning_tp_type = 1 ';
7094 END IF;
7095
7096 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
7097 query_str := query_str || ' AND owning_organization_id = :own_org ';
7098 query_str := query_str || ' AND owning_tp_type = 2 ';
7099 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7100 query_str := query_str || ' AND owning_organization_id = :own_org ';
7101 query_str := query_str || ' AND owning_tp_type = 1 ';
7102 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
7103 query_str := query_str || ' AND owning_tp_type = 1 ';
7104 END IF;
7105
7106 --Bug #3411938
7107 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
7108 group_str := group_str || ' , planning_organization_id, planning_tp_type ';
7109 group_str := group_str || ' , owning_organization_id, owning_tp_type ';
7110 group_str := group_str || ' , item_lot_control, item_serial_control ';
7111 END IF;
7112
7113 /* LPN Status Project */
7114 IF (l_default_status_id is not null) THEN
7115 query_str := query_str || ' AND onhand_status_id = mms.status_id ';
7116 ELSE
7117 query_str := query_str || 'AND (subinventory_status_id = mms.status_id ';
7118 query_str := query_str || 'or locator_status_id = mms.status_id or ';
7119 query_str := query_str || 'lot_status_id = mms.status_id or serial_status_id = mms.status_id) ';
7120 END IF;
7121 /* End of fix for LPN Status Project */
7122
7123 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
7124 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
7125 END IF;
7126
7127 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
7128 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
7129 END IF;
7130
7131 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
7132 query_str := query_str || 'AND organization_id = :org_id ';
7133 ELSE
7134 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
7135 query_str := query_str || ' FROM org_access_view oav ' ;
7136 query_str := query_str || ' WHERE oav.organization_id = mol.organization_id ' ;
7137 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
7138 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
7139 END IF;
7140
7141 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
7142 query_str := query_str || group_str || having_str || ' ' ;
7143 END IF;
7144
7145 query_str := query_str || ') ';
7146
7147 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7148 query_str := query_str || 'and mms.status_id = :st_id ';
7149 END IF;
7150
7151 query_str := query_str || ' ORDER BY status_code ';
7152
7153 END IF;
7154
7155 -- Enable this during debugging
7156 inv_trx_util_pub.trace(query_str, 'Add-Status Material Workbench', 9);
7157 --trace1('Add_Statuses - ' || query_str);
7158 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
7159
7160 inv_mwb_globals.g_last_query := query_str;
7161
7162 query_hdl := DBMS_SQL.open_cursor;
7163 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
7164
7165
7166 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
7167 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
7168 END IF;
7169
7170 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7171 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
7172 END IF;
7173
7174 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7175 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
7176 END IF;
7177
7178 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7179 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
7180 END IF;
7181
7182 -- ER(9158529 client)
7183 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
7184 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
7185 END IF;
7186 -- ER(9158529 client)
7187
7188 IF inv_mwb_globals.g_revision IS NOT NULL THEN
7189 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
7190 END IF;
7191
7192 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7193 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
7194 END IF;
7195
7196 -- ER(9158529)
7197 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
7198 DBMS_SQL.bind_variable(query_hdl, 'organization_id', inv_mwb_globals.g_organization_id);
7199 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
7200 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
7201 END IF;
7202 -- ER(9158529)
7203
7204 --BUG 7556505
7205 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7206 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
7207 END IF;
7208 --BUG 7556505
7209
7210 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7211 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
7212 END IF;
7213
7214 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7215 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
7216 END IF;
7217
7218 /* Bug 8396954 added below code for supplier_lot_number */
7219 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7220 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7221 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
7222 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
7223 END IF;
7224
7225 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7226 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
7227 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
7228 END IF;
7229
7230 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7231 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
7232 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
7233 END IF;
7234 /* End of Bug 8396954 */
7235
7236 -- NSRIVAST, INVCONV, Start
7237 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7238 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
7239 END IF;
7240 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
7241 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
7242 END IF;
7243 -- NSRIVAST, INVCONV, End
7244
7245 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
7246 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
7247 END IF;
7248
7249 --bug 6633612
7250 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
7251 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
7252 END IF;
7253 --bug 6633612
7254
7255 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
7256 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
7257 END IF;
7258
7259 --bugfix#3646484
7260 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
7261 --User is querying for single LPN so converted the range query to equality query
7262 --So it is enought to bind the from lpn alone
7263 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
7264 ELSE
7265 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
7266 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
7267 END IF;
7268
7269 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7270 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
7271 END IF;
7272 END IF;
7273
7274 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7275 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
7276 END IF;
7277
7278 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
7279 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
7280 END IF;
7281
7282 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7283 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
7284 END IF;
7285
7286 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7287 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
7288 END IF;
7289
7290 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7291 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
7292 END IF;
7293
7294 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7295 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
7296 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7297 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
7298 END IF;*/
7299 IF (inv_mwb_globals.g_owning_qry_mode = 4)
7300 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7301 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
7302 END IF;
7303
7304 IF (inv_mwb_globals.g_planning_query_mode = 4)
7305 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
7306 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
7307 END IF;
7308
7309 --ER(3338592) Changes
7310 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7311 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
7312 END IF;
7313
7314 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
7315 dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
7316 END IF;
7317
7318 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
7319 dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
7320 END IF;
7321 --End of ER Changes
7322
7323 -- Bug # 3411938
7324 IF inv_mwb_globals.g_organization_id IS NULL THEN
7325 IF inv_mwb_globals.g_responsibility_id IS NOT NULL THEN
7326 dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
7327 END IF;
7328
7329 IF inv_mwb_globals.g_resp_application_id IS NOT NULL THEN
7330 dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
7331 END IF;
7332 END IF;
7333
7334 DBMS_SQL.define_column(query_hdl, 1, status_id);
7335 DBMS_SQL.define_column(query_hdl, 2, status_code, 80);
7336 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
7337
7338 LOOP
7339 -- fetch a row
7340 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
7341 -- fetch columns from the row
7342 DBMS_SQL.column_value(query_hdl, 1, status_id);
7343 DBMS_SQL.column_value(query_hdl, 2, status_code);
7344
7345 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
7346 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
7347 x_node_tbl(i).DEPTH := 1;
7348 x_node_tbl(i).label := status_code;
7349 x_node_tbl(i).icon := 'inv_stat';
7350 x_node_tbl(i).VALUE := TO_CHAR(status_id);
7351 x_node_tbl(i).TYPE := 'STATUS';
7352 i := i + 1;
7353 END IF;
7354
7355 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
7356 j := j + 1;
7357 ELSE
7358 EXIT;
7359 END IF;
7360 END LOOP;
7361
7362 DBMS_SQL.close_cursor(query_hdl); -- close cursor
7363 x_node_value := j;
7364 x_tbl_index := i;
7365 EXCEPTION
7366 WHEN NO_DATA_FOUND THEN
7367 NULL;
7368 WHEN OTHERS THEN
7369 RAISE;
7370 END add_statuses;
7371
7372 PROCEDURE add_subs(
7373 x_node_value IN OUT NOCOPY NUMBER
7374 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
7375 , x_tbl_index IN OUT NOCOPY NUMBER
7376 ) IS
7377 query_str VARCHAR2(10000);
7378 query_hdl NUMBER;
7379 rows_processed NUMBER;
7380 sub_code mtl_onhand_quantities.subinventory_code%TYPE;
7381 i NUMBER := x_tbl_index;
7382 j NUMBER := x_node_value;
7383 table_required VARCHAR2(300);
7384 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
7385
7386 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD SUBS';
7387 l_default_status_id NUMBER; -- Onhand Material Status Support
7388 BEGIN
7389 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
7390
7391 IF inv_mwb_globals.g_view_by = 'STATUS' THEN
7392 inv_mwb_globals.g_only_subinventory_status := 1;
7393 ELSE
7394 inv_mwb_globals.g_only_subinventory_status := NULL;
7395 END IF;
7396
7397 -- Onhand Material Status Support
7398 if (inv_mwb_globals.g_organization_id is not null) then
7399 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
7400 l_default_status_id := inv_cache.org_rec.default_status_id;
7401 end if;
7402 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
7403 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
7404 l_default_status_id := inv_cache.org_rec.default_status_id;
7405 end if;
7406 end if;
7407
7408 -- NSRIVAST, INVCONV, Start
7409 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
7410 is_grade_t := TRUE ;
7411 END IF ;
7412 -- NSRIVAST, INVCONV, End
7413 -- display all the LPNs in that location with the appropriate from
7414 -- and to LPN criteria, so include the subs that have them
7415 IF inv_mwb_globals.g_inventory_item_id IS NULL
7416 AND inv_mwb_globals.g_client_code IS NULL -- ER(9158529 client)
7417 AND inv_mwb_globals.g_revision IS NULL
7418 AND inv_mwb_globals.g_category_set_id IS NULL -- ER(9158529)
7419 AND inv_mwb_globals.g_category_id IS NULL -- ER(9158529)
7420 AND inv_mwb_globals.g_parent_lot IS NULL --BUG 7556505
7421 AND inv_mwb_globals.g_lot_from IS NULL
7422 AND inv_mwb_globals.g_lot_to IS NULL
7423 AND inv_mwb_globals.g_supplier_lot_from IS NULL -- Bug 8396954
7424 AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
7425 AND inv_mwb_globals.g_serial_from IS NULL
7426 AND inv_mwb_globals.g_serial_to IS NULL
7427 AND inv_mwb_globals.g_cost_group_id IS NULL
7428 AND inv_mwb_globals.g_status_id IS NULL
7429 AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
7430 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
7431 AND inv_mwb_globals.g_unit_number IS NULL
7432 AND inv_mwb_globals.g_project_id IS NULL
7433 AND inv_mwb_globals.g_task_id IS NULL
7434 AND inv_mwb_globals.g_planning_org IS NULL
7435 AND inv_mwb_globals.g_owning_org IS NULL
7436 AND(inv_mwb_globals.g_lpn_from IS NOT NULL
7437 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
7438 --ER(3338592) Changes
7439 AND inv_mwb_globals.g_item_description IS NULL THEN
7440 --End of ER Changes
7441 query_str := 'select wlpn.subinventory_code ';
7442 query_str := query_str || 'FROM wms_license_plate_numbers wlpn, mtl_secondary_inventories msi WHERE 1=1 and msi.secondary_inventory_name = wlpn.subinventory_code and wlpn.organization_id = msi.organization_id ';
7443
7444 -- query_str := query_str || 'AND (lpn_context = 1 or lpn_context=11 ');
7445
7446 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7447 query_str := query_str || ' AND wlpn.lpn_context = 3 ';
7448 ELSIF inv_mwb_globals.g_tree_mat_loc_id = 1 THEN
7449 query_str := query_str || ' AND (wlpn.lpn_context = 1 or wlpn.lpn_context=9 or wlpn.lpn_context=11 ) ';
7450 END IF;
7451
7452 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7453 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
7454 END IF;
7455
7456 -- NSRIVAST, INVCONV, Start
7457 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7458 query_str := query_str || ' AND wlpn.grade_code = :grade_f ' ;
7459 END IF ;
7460 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
7461 query_str := query_str || ' AND wlpn.grade_code = :grade_c ' ;
7462 END IF ;
7463 -- NSRIVAST, INVCONV, End
7464
7465 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7466 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
7467 END IF;
7468
7469 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7470 query_str := query_str || 'AND msi.status_id = :st_id ';
7471 END IF;
7472
7473
7474 IF inv_mwb_globals.g_organization_id IS NOT NULL
7475 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7476 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
7477 END IF;
7478
7479 --bugfix#3646484
7480 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
7481 --User is querying for single LPN so converted the range query to equality query
7482 query_str := query_str || 'and license_plate_number = :lpn_f ';
7483 ELSE
7484 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
7485 query_str := query_str || 'and license_plate_number >= :lpn_f ';
7486 END IF;
7487
7488 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7489 query_str := query_str || 'and license_plate_number <= :lpn_t ';
7490 END IF;
7491 END IF;
7492
7493 query_str := query_str || ' GROUP BY subinventory_code ';
7494 query_str := query_str || ' ORDER BY subinventory_code ';
7495 ELSE
7496 query_str := 'SELECT msi.secondary_inventory_name subinventory_code FROM mtl_secondary_inventories msi ';
7497 query_str := query_str || ' WHERE msi.secondary_inventory_name in ( ';
7498
7499 -- Need to use MTL_ONHAND_TOTAL_V
7500 IF (
7501 inv_mwb_globals.g_serial_from IS NULL
7502 AND inv_mwb_globals.g_serial_to IS NULL
7503 AND inv_mwb_globals.g_unit_number IS NULL
7504 AND inv_mwb_globals.g_status_id IS NULL
7505 AND inv_mwb_globals.g_lpn_from IS NULL
7506 AND inv_mwb_globals.g_lpn_to IS NULL
7507 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
7508 ) THEN
7509 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7510 table_required := ' mtl_rcv_mwb_onhand_v v ';
7511 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
7512 table_required := ' mtl_onhand_total_mwb_v v ';
7513 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
7514 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
7515 END IF;
7516 ELSE
7517 table_required := ' mtl_onhand_total_v v ';
7518 END IF;
7519 --bug 6633612
7520 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7521 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
7522 END IF;
7523 --bug 6633612
7524
7525 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
7526 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
7527 query_str := query_str || ' SELECT v.subinventory_code from ' || table_required;
7528 query_str := query_str || ' WHERE 1=1 ';
7529 ELSE
7530 query_str :=
7531 query_str
7532 || ' SELECT v.subinventory_code from '
7533 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7534 || inv_mwb_globals.g_tree_lot_attr_query
7535 || ') mln, '
7536 || table_required;
7537 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
7538 --BUG 7556505
7539 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7540 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7541 END IF;
7542 --BUG 7556505
7543 /* Bug 8396954 added below code for supplier_lot_number */
7544 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7545 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7546 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
7547 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
7548 END IF;
7549
7550 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7551 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
7552 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
7553 END IF;
7554
7555 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7556 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
7557 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
7558 END IF;
7559 /* End of Bug 8396954 */
7560 END IF;
7561
7562 -- Select Only subinventory status if only subbinventory status is not 1
7563 /*
7564 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7565 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7566 query_str := query_str || ' AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
7567 query_str := query_str || ' OR lot_status_id = :st_id or serial_status_id = :st_id) ';
7568 ELSE
7569 query_str := query_str || ' AND subinventory_status_id = :st_id ';
7570 END IF;
7571 END IF;
7572 */
7573
7574
7575 -- NSRIVAST, INVCONV, Start
7576 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7577 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
7578 END IF ;
7579 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
7580 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
7581 END IF ;
7582 -- NSRIVAST, INVCONV, End
7583
7584 --bug 6633612
7585 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7586 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
7587 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
7588 || ' AND rt.organization_id = mmt.organization_id '
7589 || ' AND rt.transaction_type = ''DELIVER'''
7590 || ' AND rt.destination_type_code = ''INVENTORY'''
7591 || ' AND mmt.transaction_id = v.create_transaction_id '
7592 || ' AND mmt.organization_id = v.organization_id ';
7593
7594 END IF;
7595 --bug 6633612
7596
7597
7598 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7599 query_str := query_str || ' AND v.project_id = :pr_id ';
7600 END IF;
7601
7602 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7603 query_str := query_str || ' AND v.task_id = :ta_id ';
7604 END IF;
7605
7606 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7607 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7608 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
7609 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7610 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7611 query_str := query_str || ' AND planning_organization_id in ';
7612 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
7613 query_str := query_str || ' where vendor_id = :vendor_id )';
7614 END IF;*/
7615 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
7616 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
7617 query_str := query_str || ' AND v.owning_tp_type = 2 ';
7618 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7619 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
7620 query_str := query_str || ' AND v.owning_tp_type = 1 ';
7621 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
7622 query_str := query_str || ' AND v.owning_tp_type = 1 ';
7623 END IF;
7624
7625 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
7626 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
7627 query_str := query_str || ' AND v.planning_tp_type = 2 ';
7628 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
7629 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
7630 query_str := query_str || ' AND v.planning_tp_type = 1 ';
7631 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
7632 query_str := query_str || ' AND v.planning_tp_type = 1 ';
7633 END IF;
7634
7635 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7636 query_str := query_str || 'AND v.lot_number >= :lot_f ';
7637 END IF;
7638
7639 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7640 query_str := query_str || 'AND v.lot_number <= :lot_t ';
7641 END IF;
7642
7643 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7644 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
7645 END IF;
7646
7647 IF inv_mwb_globals.g_revision IS NOT NULL THEN
7648 query_str := query_str || 'AND v.revision = :rev ';
7649 END IF;
7650
7651 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7652 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
7653 END IF;
7654
7655 -- ER(9158529 client)
7656 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
7657 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
7658 END IF;
7659 -- ER(9158529 client)
7660
7661 -- ER(9158529)
7662 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
7663 query_str := query_str || ' AND v.inventory_item_id in '
7664 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
7665 || ' where organization_id = :organization_id '
7666 || ' and category_set_id = :category_set_id '
7667 || ' and category_id = nvl(:category_id, category_id)) ' ;
7668 END IF;
7669 -- ER(9158529)
7670
7671 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7672 query_str := query_str || 'AND v.locator_id = :loc_id ';
7673 END IF;
7674
7675 --ER(3338592) Changes
7676 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7677 query_str := query_str || ' AND v.item_description LIKE :item_description ';
7678 END IF;
7679 --End of ER Changes
7680
7681 query_str := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
7682
7683 IF inv_mwb_globals.g_organization_id IS NOT NULL
7684 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7685 query_str := query_str || 'AND v.organization_id = :org_id ';
7686 END IF;
7687
7688 -- Onhand Material Status Support : If the status is tracked at the onhand level check
7689 -- for the status from the onhand table (MOQD).
7690 IF l_default_status_id IS NOT NULL THEN
7691 IF inv_mwb_globals.g_only_subinventory_status = 1
7692 OR inv_mwb_globals.g_status_id IS NOT NULL THEN
7693 query_str := query_str || ' AND v.onhand_status_id = :st_id ';
7694 END IF;
7695 END IF;
7696
7697 query_str := query_str || ') ';
7698
7699 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7700 query_str := query_str || 'and msi.secondary_inventory_name = :sub ';
7701 END IF;
7702
7703 IF inv_mwb_globals.g_organization_id IS NOT NULL
7704 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7705 query_str := query_str || ' and msi.organization_id = :org_id ';
7706 END IF;
7707
7708 /*
7709 * IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
7710 * in this case restrict the subinventories by tree_status_id not Query find status
7711 *
7712 */
7713 -- Onhand Material Status Support : Add the following where clause only if the status
7714 -- not tracked at onhand level.
7715 if (l_default_status_id is null) then
7716 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7717 query_str := query_str || ' AND msi.status_id = :st_id ';
7718 ELSE
7719 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7720 query_str := query_str || ' AND msi.status_id = :st_id ';
7721 END IF;
7722 END IF;
7723 end if;
7724
7725 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7726 query_str := query_str || ' AND msi.subinventory_type = 2 ';
7727 END IF;
7728
7729 query_str := query_str || ' ORDER BY subinventory_code ';
7730 -- Need to use MTL_ONHAND_SERIAL_V
7731 ELSIF(
7732 (
7733 inv_mwb_globals.g_serial_from IS NOT NULL
7734 OR inv_mwb_globals.g_serial_to IS NOT NULL
7735 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
7736 OR inv_mwb_globals.g_unit_number IS NOT NULL
7737 )
7738 AND inv_mwb_globals.g_lpn_from IS NULL
7739 AND inv_mwb_globals.g_lpn_to IS NULL
7740 ) THEN
7741 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7742 table_required := ' mtl_rcv_serial_oh_v v ';
7743 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
7744 table_required := ' mtl_onhand_serial_mwb_v v ';
7745 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
7746 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
7747 END IF;
7748 ELSE
7749 table_required := ' mtl_onhand_serial_v v ';
7750 END IF;
7751
7752 --bug 6633612
7753 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7754 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
7755 END IF;
7756 --bug 6633612
7757
7758 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
7759 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
7760 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
7761 query_str := query_str || 'SELECT v.subinventory_code from ' || table_required;
7762 query_str := query_str || 'WHERE 1=1 ';
7763 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
7764 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
7765 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
7766 query_str :=
7767 query_str
7768 || 'SELECT v.subinventory_code from'
7769 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
7770 || inv_mwb_globals.g_tree_serial_attr_query
7771 || ') msn, '
7772 || table_required;
7773 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
7774 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
7775 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
7776 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
7777 query_str :=
7778 query_str
7779 || 'SELECT v.subinventory_code from'
7780 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7781 || inv_mwb_globals.g_tree_lot_attr_query
7782 || ') mln, '
7783 || table_required;
7784 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
7785 --BUG 7556505
7786 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7787 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7788 END IF;
7789 --BUG 7556505
7790 /* Bug 8396954 added below code for supplier_lot_number */
7791 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7792 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7793 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
7794 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
7795 END IF;
7796
7797 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7798 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
7799 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
7800 END IF;
7801
7802 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7803 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
7804 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
7805 END IF;
7806 /* End of Bug 8396954 */
7807 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
7808 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
7809 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
7810 query_str :=
7811 query_str
7812 || 'SELECT v.subinventory_code from'
7813 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7814 || inv_mwb_globals.g_tree_lot_attr_query
7815 || ') mln, '
7816 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
7817 || inv_mwb_globals.g_tree_serial_attr_query
7818 || ') msn, '
7819 || table_required;
7820 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
7821 --BUG 7556505
7822 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7823 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7824 END IF;
7825 --BUG 7556505
7826 /* Bug 8396954 added below code for supplier_lot_number */
7827 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7828 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7829 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
7830 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
7831 END IF;
7832
7833 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
7834 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
7835 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
7836 END IF;
7837
7838 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
7839 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
7840 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
7841 END IF;
7842 /* End of Bug 8396954 */
7843 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
7844 END IF;
7845
7846
7847 --bug 6633612
7848 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7849 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
7850 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
7851 || ' AND rt.organization_id = mmt.organization_id '
7852 || ' AND rt.transaction_type = ''DELIVER'''
7853 || ' AND rt.destination_type_code = ''INVENTORY'''
7854 || ' AND mmt.transaction_id = v.last_transaction_id '
7855 || ' AND mmt.organization_id = v.organization_id ';
7856
7857 END IF;
7858 --bug 6633612
7859
7860
7861
7862 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7863 query_str := query_str || ' AND v.project_id = :pr_id ';
7864 END IF;
7865
7866 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7867 query_str := query_str || ' AND v.task_id = :ta_id ';
7868 END IF;
7869
7870 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7871 query_str := query_str || ' AND v.unit_number=:un_id ';
7872 END IF;
7873
7874 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7875 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7876 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
7877 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7878 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7879 query_str := query_str || ' AND planning_organization_id in ';
7880 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
7881 query_str := query_str || ' where vendor_id = :vendor_id )';
7882 END IF;*/
7883 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
7884 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
7885 query_str := query_str || ' AND v.owning_tp_type = 2 ';
7886 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7887 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
7888 query_str := query_str || ' AND v.owning_tp_type = 1 ';
7889 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
7890 query_str := query_str || ' AND v.owning_tp_type = 1 ';
7891 END IF;
7892
7893 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
7894 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
7895 query_str := query_str || ' AND v.planning_tp_type = 2 ';
7896 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
7897 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
7898 query_str := query_str || ' AND v.planning_tp_type = 1 ';
7899 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
7900 query_str := query_str || ' AND v.planning_tp_type = 1 ';
7901 END IF;
7902
7903 /*
7904 IF inv_mwb_globals.g_status_id IS NOT NULL
7905 AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
7906 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7907 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
7908 query_str := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
7909 ELSE
7910 query_str := query_str || ' and subinventory_status_id = :st_id ';
7911 END IF;
7912 END IF;
7913 */
7914
7915 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7916 query_str := query_str || 'AND v.lot_number >= :lot_f ';
7917 END IF;
7918
7919 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7920 query_str := query_str || 'AND v.lot_number <= :lot_t ';
7921 END IF;
7922
7923 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7924 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
7925 END IF;
7926
7927 IF inv_mwb_globals.g_revision IS NOT NULL THEN
7928 query_str := query_str || 'AND v.revision = :rev ';
7929 END IF;
7930
7931 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
7932 query_str := query_str || 'AND v.serial_number >= :serial_f ';
7933 END IF;
7934
7935 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
7936 query_str := query_str || 'AND v.serial_number <= :serial_t ';
7937 END IF;
7938
7939 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7940 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
7941 END IF;
7942
7943 -- ER(9158529 client)
7944 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
7945 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
7946 END IF;
7947 -- ER(9158529 client)
7948
7949 -- ER(9158529)
7950 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
7951 query_str := query_str || ' AND v.inventory_item_id in '
7952 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
7953 || ' where organization_id = :organization_id '
7954 || ' and category_set_id = :category_set_id '
7955 || ' and category_id = nvl(:category_id, category_id)) ' ;
7956 END IF;
7957 -- ER(9158529)
7958
7959 -- NSRIVAST, INVCONV, Start
7960 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7961 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
7962 END IF ;
7963 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
7964 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
7965 END IF ;
7966 -- NSRIVAST, INVCONV, End
7967
7968 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7969 query_str := query_str || 'AND v.locator_id = :loc_id ';
7970 END IF;
7971
7972 --ER(3338592) Changes
7973 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7974 query_str := query_str || ' AND v.item_description LIKE :item_description ';
7975 END IF;
7976 --End of ER Changes
7977
7978 query_str := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
7979
7980 IF inv_mwb_globals.g_organization_id IS NOT NULL
7981 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7982 query_str := query_str || 'AND v.organization_id = :org_id ';
7983 END IF;
7984
7985 -- Onhand Material Status Support : If the status is tracked at the onhand level check
7986 -- for the status from the serial table (MSN).
7987 IF l_default_status_id IS NOT NULL THEN
7988 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7989 query_str := query_str || ' AND v.serial_status_id = :st_id ';
7990 ELSE
7991 IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
7992 query_str := query_str || ' AND v.serial_status_id = :st_id ';
7993 END IF;
7994 END IF;
7995 END IF;
7996
7997 query_str := query_str || ') ';
7998
7999 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8000 query_str := query_str || 'and msi.secondary_inventory_name = :sub ';
8001 END IF;
8002
8003 IF inv_mwb_globals.g_organization_id IS NOT NULL
8004 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8005 query_str := query_str || ' and msi.organization_id = :org_id ';
8006 END IF;
8007
8008 /*
8009 * IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
8010 * in this case restrict the subinventories by tree_status_id not Query find status
8011 *
8012 */
8013 -- Onhand Material Status Support : Add the following where clause only if the status
8014 -- not tracked at onhand level.
8015 if (l_default_status_id is null) then
8016 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8017 query_str := query_str || ' AND msi.status_id = :st_id ';
8018 ELSE
8019 IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
8020 query_str := query_str || ' AND msi.status_id = :st_id ';
8021 END IF;
8022 END IF;
8023 end if;
8024
8025 query_str := query_str || ' ORDER BY subinventory_code ';
8026 -- Need to use both MTL_ONHAND_TOTAL_V and MTL_ONHAND_SERIAL_V
8027 ELSIF(
8028 inv_mwb_globals.g_serial_from IS NULL
8029 AND inv_mwb_globals.g_serial_to IS NULL
8030 AND inv_mwb_globals.g_unit_number IS NULL
8031 AND inv_mwb_globals.g_status_id IS NOT NULL
8032 AND inv_mwb_globals.g_lpn_from IS NULL
8033 AND inv_mwb_globals.g_lpn_to IS NULL
8034 ) THEN
8035 IF (inv_mwb_globals.g_status_id IS NULL) THEN
8036 table_required := ' mtl_onhand_total_mwb_v v ';
8037 -- IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
8038 -- table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
8039 -- END IF;
8040 ELSE
8041 table_required := ' mtl_onhand_total_v v ';
8042 END IF;
8043
8044 --bug 6633612
8045 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8046 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
8047 END IF;
8048 --bug 6633612
8049
8050 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
8051 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
8052 query_str := query_str || 'SELECT v.subinventory_code from ' || table_required;
8053 query_str := query_str || 'WHERE 1=1 ';
8054 ELSE
8055 query_str :=
8056 query_str
8057 || 'SELECT v.subinventory_code from'
8058 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8059 || inv_mwb_globals.g_tree_lot_attr_query
8060 || ') mln, '
8061 || table_required;
8062 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
8063 --BUG 7556505
8064 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8065 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8066 END IF;
8067 --BUG 7556505
8068 /* Bug 8396954 added below code for supplier_lot_number */
8069 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8070 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8071 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
8072 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
8073 END IF;
8074
8075 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8076 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
8077 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
8078 END IF;
8079
8080 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8081 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
8082 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
8083 END IF;
8084 /* End of Bug 8396954 */
8085 END IF;
8086
8087 --bug 6633612
8088 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8089 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
8090 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
8091 || ' AND rt.organization_id = mmt.organization_id '
8092 || ' AND rt.transaction_type = ''DELIVER'''
8093 || ' AND rt.destination_type_code = ''INVENTORY'''
8094 || ' AND mmt.transaction_id = v.create_transaction_id '
8095 || ' AND mmt.organization_id = v.organization_id ';
8096
8097 END IF;
8098 --bug 6633612
8099
8100 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8101 query_str := query_str || ' AND v.project_id = :pr_id ';
8102 END IF;
8103
8104 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8105 query_str := query_str || ' AND v.task_id = :ta_id ';
8106 END IF;
8107
8108 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8109 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8110 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
8111 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8112 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8113 query_str := query_str || ' AND planning_organization_id in ';
8114 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
8115 query_str := query_str || ' where vendor_id = :vendor_id )';
8116 END IF;*/
8117 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
8118 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
8119 query_str := query_str || ' AND v.owning_tp_type = 2 ';
8120 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8121 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
8122 query_str := query_str || ' AND v.owning_tp_type = 1 ';
8123 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
8124 query_str := query_str || ' AND v.owning_tp_type = 1 ';
8125 END IF;
8126
8127 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
8128 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
8129 query_str := query_str || ' AND v.planning_tp_type = 2 ';
8130 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
8131 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
8132 query_str := query_str || ' AND v.planning_tp_type = 1 ';
8133 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
8134 query_str := query_str || ' AND v.planning_tp_type = 1 ';
8135 END IF;
8136
8137 -- Select Only subinventory status if status is not 1
8138 /*
8139 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8140 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8141 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
8142 query_str := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
8143 ELSE
8144 query_str := query_str || ' and subinventory_status_id = :st_id ';
8145 END IF;
8146 END IF;
8147 */
8148
8149 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8150 query_str := query_str || 'AND v.lot_number >= :lot_f ';
8151 END IF;
8152
8153 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8154 query_str := query_str || 'AND v.lot_number <= :lot_t ';
8155 END IF;
8156
8157 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8158 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
8159 END IF;
8160
8161 IF inv_mwb_globals.g_revision IS NOT NULL THEN
8162 query_str := query_str || 'AND v.revision = :rev ';
8163 END IF;
8164
8165 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8166 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
8167 END IF;
8168
8169 -- ER(9158529 client)
8170 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
8171 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
8172 END IF;
8173 -- ER(9158529 client)
8174
8175 -- ER(9158529)
8176 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
8177 query_str := query_str || ' AND v.inventory_item_id in '
8178 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
8179 || ' where organization_id = :organization_id '
8180 || ' and category_set_id = :category_set_id '
8181 || ' and category_id = nvl(:category_id, category_id)) ' ;
8182 END IF;
8183 -- ER(9158529)
8184
8185 -- NSRIVAST, INVCONV, Start
8186 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8187 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
8188 END IF ;
8189 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
8190 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
8191 END IF ;
8192 -- NSRIVAST, INVCONV, End
8193
8194 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8195 query_str := query_str || 'AND v.locator_id = :loc_id ';
8196 END IF;
8197
8198 --ER(3338592) Changes
8199 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8200 query_str := query_str || ' AND v.item_description LIKE :item_description ';
8201 END IF;
8202 --ER(3338592) Changes
8203
8204 query_str := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
8205
8206 IF inv_mwb_globals.g_organization_id IS NOT NULL
8207 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8208 query_str := query_str || 'AND v.organization_id = :org_id ';
8209 END IF;
8210
8211 -- Onhand Material Status Support : If the status is tracked at the onhand level check
8212 -- for the status from the onhand table (MOQD).
8213 IF l_default_status_id IS NOT NULL THEN
8214 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8215 query_str := query_str || ' AND v.onhand_status_id = :st_id ';
8216 ELSE
8217 IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
8218 query_str := query_str || ' AND v.onhand_status_id = :st_id ';
8219 END IF;
8220 END IF;
8221 else
8222 -- Bug 6060233
8223 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8224 query_str := query_str || ' and v.subinventory_status_id = :st_id ';
8225 ELSE
8226 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8227 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
8228 query_str := query_str || 'OR v.lot_status_id = :st_id) ';
8229 END IF;
8230 END IF;
8231 END IF;
8232
8233 query_str := query_str || 'UNION ALL ';
8234
8235 IF (inv_mwb_globals.g_status_id IS NULL) THEN
8236 table_required := ' mtl_onhand_serial_mwb_v v ';
8237 ELSE
8238 table_required := ' mtl_onhand_serial_v v ';
8239 END IF;
8240
8241 --bug 6633612
8242 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8243 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
8244 END IF;
8245 --bug 6633612
8246
8247 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
8248 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
8249 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8250 query_str := query_str || 'SELECT v.subinventory_code from ' || table_required;
8251 query_str := query_str || 'WHERE 1=1 ';
8252 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
8253 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
8254 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8255 query_str :=
8256 query_str
8257 || 'SELECT v.subinventory_code from'
8258 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8259 || inv_mwb_globals.g_tree_lot_attr_query
8260 || ') mln, '
8261 || table_required;
8262 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
8263 --BUG 7556505
8264 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8265 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8266 END IF;
8267 --BUG 7556505
8268 /* Bug 8396954 added below code for supplier_lot_number */
8269 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8270 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8271 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
8272 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
8273 END IF;
8274
8275 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8276 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
8277 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
8278 END IF;
8279
8280 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8281 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
8282 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
8283 END IF;
8284 /* End of Bug 8396954 */
8285 END IF;
8286
8287 -- Select Only subinventory status if status is not 1
8288 /*
8289 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8290 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8291 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
8292 query_str := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
8293 ELSE
8294 query_str := query_str || ' and subinventory_status_id = :st_id ';
8295 END IF;
8296 END IF;
8297 */
8298 --bug 6633612
8299 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8300 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
8301 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
8302 || ' AND rt.organization_id = mmt.organization_id '
8303 || ' AND rt.transaction_type = ''DELIVER'''
8304 || ' AND rt.destination_type_code = ''INVENTORY'''
8305 || ' AND mmt.transaction_id = v.last_transaction_id '
8306 || ' AND mmt.organization_id = v.organization_id ';
8307
8308 END IF;
8309 --bug 6633612
8310
8311 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8312 query_str := query_str || 'AND v.lot_number >= :lot_f ';
8313 END IF;
8314
8315 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8316 query_str := query_str || 'AND v.lot_number <= :lot_t ';
8317 END IF;
8318
8319 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8320 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
8321 END IF;
8322
8323 IF inv_mwb_globals.g_revision IS NOT NULL THEN
8324 query_str := query_str || 'AND v.revision = :rev ';
8325 END IF;
8326
8327 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8328 query_str := query_str || 'AND v.serial_number >= :serial_f ';
8329 END IF;
8330
8331 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8332 query_str := query_str || 'AND v.serial_number <= :serial_t ';
8333 END IF;
8334
8335 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8336 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
8337 END IF;
8338
8339 -- ER(9158529 client)
8340 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
8341 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
8342 END IF;
8343 -- ER(9158529 client)
8344
8345 -- ER(9158529)
8346 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
8347 query_str := query_str || ' AND v.inventory_item_id in '
8348 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
8349 || ' where organization_id = :organization_id '
8350 || ' and category_set_id = :category_set_id '
8351 || ' and category_id = nvl(:category_id, category_id)) ' ;
8352 END IF;
8353 -- ER(9158529)
8354
8355 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8356 query_str := query_str || 'AND v.locator_id = :loc_id ';
8357 END IF;
8358
8359 --ER(3338592) Changes
8360 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8361 query_str := query_str || ' AND v.item_description LIKE :item_description ';
8362 END IF;
8363 --ER(3338592) Changes
8364
8365 query_str := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
8366
8367 IF inv_mwb_globals.g_organization_id IS NOT NULL
8368 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8369 query_str := query_str || 'AND v.organization_id = :org_id ';
8370 END IF;
8371
8372 -- Onhand Material Status Support : If the status is tracked at the onhand level check
8373 -- for the status from the serial table (MSN).
8374 IF l_default_status_id IS NOT NULL THEN
8375 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8376 query_str := query_str || ' AND v.serial_status_id = :st_id ';
8377 ELSE
8378 IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
8379 query_str := query_str || ' AND v.serial_status_id = :st_id ';
8380 END IF;
8381 END IF;
8382 else
8383 -- Bug 6060233
8384 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8385 query_str := query_str || ' and v.subinventory_status_id = :st_id ';
8386 ELSE
8387 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8388 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
8389 query_str := query_str || 'OR v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
8390 END IF;
8391 END IF;
8392 END IF;
8393
8394 query_str := query_str || ') ';
8395
8396 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8397 query_str := query_str || 'and msi.secondary_inventory_name = :sub ';
8398 END IF;
8399
8400 IF inv_mwb_globals.g_organization_id IS NOT NULL
8401 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8402 query_str := query_str || ' and msi.organization_id = :org_id ';
8403 END IF;
8404
8405 /*
8406 * IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
8407 * in this case restrict the subinventories by tree_status_id not Query find status
8408 *
8409 */
8410
8411 -- Onhand Material Status Support : Add the following where clause only if the status
8412 -- not tracked at onhand level.
8413 -- Bug 6060233: Commenting the following code as the status restriction has been added
8414 -- in the subqueries
8415 /*
8416 if (l_default_status_id is null) then
8417 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8418 query_str := query_str || ' AND msi.status_id = :st_id ';
8419 ELSE
8420 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8421 query_str := query_str || ' AND msi.status_id = :st_id ';
8422 END IF;
8423 END IF;
8424 end if;
8425 */
8426
8427 query_str := query_str || ' ORDER BY subinventory_code ';
8428 -- Need to use MTL_ONHAND_LPN_V
8429 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
8430 OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
8431 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
8432 table_required := ' mtl_onhand_lpn_mwb_v mol ';
8433 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
8434 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
8435 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
8436 table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
8437 END IF; -- NSRIVAST, INVCONV
8438 ELSE
8439 table_required := ' mtl_onhand_new_lpn_v mol ';
8440 END IF;
8441
8442 query_str := query_str || 'SELECT subinventory_code from ' || table_required;
8443
8444 IF inv_mwb_globals.g_lpn_from IS NOT NULL
8445 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8446 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
8447 query_str := query_str || ' WHERE 1=1 ';
8448
8449 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8450 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
8451 END IF;
8452
8453 --rsagar
8454 IF inv_mwb_globals.g_tree_mat_loc_id = 1 THEN
8455 query_str := query_str || 'AND wlpn.lpn_context IN (1,9,11) ';
8456 ELSIF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
8457 query_str := query_str || 'AND wlpn.lpn_context = 3 ';
8458 END IF;
8459 --rsagar
8460 -- NSRIVAST, INVCONV, Start
8461 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8462 query_str := query_str || ' AND grade_code = :grade_f ' ;
8463 END IF ;
8464 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
8465 query_str := query_str || ' AND grade_code = :grade_c ' ;
8466 END IF ;
8467 -- NSRIVAST, INVCONV, End
8468
8469 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8470 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
8471 END IF;
8472
8473 IF inv_mwb_globals.g_organization_id IS NOT NULL
8474 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8475 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
8476 END IF;
8477
8478 IF inv_mwb_globals.g_lpn_from IS NOT NULL
8479 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8480 IF inv_mwb_globals.g_lpn_from IS NOT NULL
8481 AND inv_mwb_globals.g_lpn_to IS NULL THEN
8482 query_str := query_str || ' and license_plate_number >= :lpn_f ';
8483 ELSIF inv_mwb_globals.g_lpn_from IS NULL
8484 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8485 query_str := query_str || ' and license_plate_number <= :lpn_t ';
8486 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
8487 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8488 --bugfix#3646484
8489 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
8490 --User is querying for single LPN so converted the range query to equality query
8491 query_str := query_str || 'and license_plate_number = :lpn_f ';
8492 ELSE
8493 query_str := query_str || ' and license_plate_number >= :lpn_f ';
8494 query_str := query_str || ' and license_plate_number <= :lpn_t ';
8495 END IF;
8496 END IF;
8497 END IF;
8498
8499 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
8500 END IF;
8501
8502 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
8503 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
8504 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8505 query_str := query_str || 'WHERE 1=1 ';
8506 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
8507 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
8508 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
8509 query_str :=
8510 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
8511 || ') msn ';
8512 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
8513 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
8514 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
8515 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8516 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
8517 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
8518 --BUG 7556505
8519 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8520 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8521 END IF;
8522 --BUG 7556505
8523 /* Bug 8396954 added below code for supplier_lot_number */
8524 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8525 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8526 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
8527 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
8528 END IF;
8529
8530 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8531 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
8532 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
8533 END IF;
8534
8535 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8536 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
8537 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
8538 END IF;
8539 /* End of Bug 8396954 */
8540 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
8541 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
8542 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
8543 query_str :=
8544 query_str
8545 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8546 || inv_mwb_globals.g_tree_lot_attr_query
8547 || ') mln '
8548 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
8549 || inv_mwb_globals.g_tree_serial_attr_query
8550 || ') msn ';
8551 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
8552 --BUG 7556505
8553 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8554 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8555 END IF;
8556 --BUG 7556505
8557 /* Bug 8396954 added below code for supplier_lot_number */
8558 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8559 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8560 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
8561 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
8562 END IF;
8563
8564 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8565 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
8566 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
8567 END IF;
8568
8569 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8570 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
8571 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
8572 END IF;
8573 /* End of Bug 8396954 */
8574 query_str := query_str || 'AND msn.serial_num = serial_number ';
8575 END IF;
8576
8577 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8578 query_str := query_str || ' AND project_id = :pr_id ';
8579 END IF;
8580
8581 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8582 query_str := query_str || ' AND task_id = :ta_id ';
8583 END IF;
8584
8585 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
8586 query_str := query_str || ' AND unit_number=:un_id ';
8587 END IF;
8588
8589 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8590 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8591 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
8592 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8593 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8594 query_str := query_str || ' AND planning_organization_id in ';
8595 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
8596 query_str := query_str || ' where vendor_id = :vendor_id )';
8597 END IF;*/
8598 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
8599 query_str := query_str || ' AND owning_organization_id = :own_org ';
8600 query_str := query_str || ' AND owning_tp_type = 2 ';
8601 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8602 query_str := query_str || ' AND owning_organization_id = :own_org ';
8603 query_str := query_str || ' AND owning_tp_type = 1 ';
8604 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
8605 query_str := query_str || ' AND owning_tp_type = 1 ';
8606 END IF;
8607
8608 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
8609 query_str := query_str || ' AND planning_organization_id = :plan_org ';
8610 query_str := query_str || ' AND planning_tp_type = 2 ';
8611 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
8612 query_str := query_str || ' AND planning_organization_id = :plan_org ';
8613 query_str := query_str || ' AND planning_tp_type = 1 ';
8614 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
8615 query_str := query_str || ' AND planning_tp_type = 1 ';
8616 END IF;
8617
8618 /*
8619 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8620 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8621 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
8622 query_str := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
8623 ELSE
8624 query_str := query_str || 'AND subinventory_status_id = :st_id ';
8625 END IF;
8626 END IF;
8627 */
8628
8629 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8630 query_str := query_str || 'AND lot_number >= :lot_f ';
8631 END IF;
8632
8633 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8634 query_str := query_str || 'AND lot_number <= :lot_t ';
8635 END IF;
8636
8637 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8638 query_str := query_str || 'AND cost_group_id = :cg_id ';
8639 END IF;
8640
8641 IF inv_mwb_globals.g_revision IS NOT NULL THEN
8642 query_str := query_str || 'AND revision = :rev ';
8643 END IF;
8644
8645 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8646 query_str := query_str || 'AND serial_number >= :serial_f ';
8647 END IF;
8648
8649 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8650 query_str := query_str || 'AND serial_number <= :serial_t ';
8651 END IF;
8652
8653 IF inv_mwb_globals.g_lpn_from IS NOT NULL
8654 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8655 query_str := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
8656 END IF;
8657
8658 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8659 query_str := query_str || 'AND inventory_item_id = :item_id ';
8660 END IF;
8661
8662 -- ER(9158529 client)
8663 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
8664 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
8665 END IF;
8666 -- ER(9158529 client)
8667
8668 -- ER(9158529)
8669 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
8670 query_str := query_str || ' AND inventory_item_id in '
8671 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
8672 || ' where organization_id = :organization_id '
8673 || ' and category_set_id = :category_set_id '
8674 || ' and category_id = nvl(:category_id, category_id)) ' ;
8675 END IF;
8676 -- ER(9158529)
8677
8678 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8679 query_str := query_str || 'AND locator_id = :loc_id ';
8680 END IF;
8681
8682 --ER(3338592) Changes
8683 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8684 query_str := query_str || ' AND item_description LIKE :item_description ';
8685 END IF;
8686 --ER(3338592) Changes
8687
8688 query_str := query_str || 'AND subinventory_code = msi.secondary_inventory_name ';
8689
8690 IF inv_mwb_globals.g_organization_id IS NOT NULL
8691 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8692 query_str := query_str || 'AND organization_id = :org_id ';
8693 END IF;
8694
8695 /* LPN Status Project If the status is tracked at the onhand level check
8696 -- for the status from the onhand table (MOQD).*/
8697 IF l_default_status_id IS NOT NULL THEN
8698 IF inv_mwb_globals.g_only_subinventory_status = 1
8699 OR inv_mwb_globals.g_status_id IS NOT NULL THEN
8700 query_str := query_str || ' AND onhand_status_id = :st_id ';
8701 END IF;
8702 END IF;
8703 /* End of fix for LPN Status Project */
8704
8705 query_str := query_str || ') ';
8706
8707 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8708 query_str := query_str || 'and msi.secondary_inventory_name = :sub ';
8709 END IF;
8710
8711 IF inv_mwb_globals.g_organization_id IS NOT NULL
8712 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8713 query_str := query_str || ' and msi.organization_id = :org_id ';
8714 END IF;
8715
8716 /*
8717 * IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
8718 * in this case restrict the subinventories by tree_status_id not Query find status
8719 *
8720 */
8721
8722 /* LPN Stauts Project : Add the following where clause only if the status
8723 not tracked at onhand level. */
8724 IF (l_default_status_id IS NULL) THEN
8725 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8726 query_str := query_str || ' AND msi.status_id = :st_id ';
8727 ELSE
8728 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8729 query_str := query_str || ' AND msi.status_id = :st_id ';
8730 END IF;
8731 END IF;
8732 END IF ;
8733 /* End of fix for LPN Status Project */
8734
8735 query_str := query_str || ' ORDER BY subinventory_code ';
8736 END IF;
8737 END IF;
8738 -- inv_trx_util_pub.trace( query_str, 'Add_subs Material Workbench', 9);
8739 --trace1(query_str, 'add_subs', 9);
8740
8741 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
8742
8743 inv_mwb_globals.g_last_query := query_str;
8744
8745 query_hdl := DBMS_SQL.open_cursor;
8746 -- inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
8747 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
8748
8749
8750 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8751 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
8752 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
8753 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
8754 END IF;
8755
8756 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8757 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
8758 END IF;
8759
8760 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8761 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
8762 END IF;
8763
8764 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8765 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
8766 END IF;
8767
8768 -- ER(9158529 client)
8769 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
8770 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
8771 END IF;
8772 -- ER(9158529 client)
8773
8774 IF inv_mwb_globals.g_revision IS NOT NULL THEN
8775 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
8776 END IF;
8777
8778 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8779 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
8780 END IF;
8781
8782 -- ER(9158529)
8783 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
8784 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
8785 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
8786 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
8787 END IF;
8788 -- ER(9158529)
8789
8790 --BUG 7556505
8791 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8792 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
8793 END IF;
8794 --BUG 7556505
8795
8796 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8797 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
8798 END IF;
8799
8800 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8801 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
8802 END IF;
8803
8804 /* Bug 8396954 added below code for supplier_lot_number */
8805 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8806 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8807 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
8808 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
8809 END IF;
8810
8811 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
8812 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
8813 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
8814 END IF;
8815
8816 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
8817 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
8818 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
8819 END IF;
8820 /* End of Bug 8396954 */
8821
8822 -- NSRIVAST, INVCONV, Start
8823 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8824 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
8825 END IF;
8826 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
8827 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
8828 END IF;
8829 -- NSRIVAST, INVCONV, End
8830 --bug 6633612
8831 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
8832 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
8833 END IF;
8834 --bug 6633612
8835
8836 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8837 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
8838 END IF;
8839
8840 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8841 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
8842 END IF;
8843
8844 --bugfix#3646484
8845 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
8846 --User is querying for single LPN so converted the range query to equality query
8847 --So it is enought to bind the from lpn alone
8848 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
8849 ELSE
8850 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
8851 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
8852 END IF;
8853
8854 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8855 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
8856 END IF;
8857 END IF;
8858
8859 /*
8860 * IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
8861 * in this case restrict the subinventories by tree_status_id not Query find status
8862 *
8863 */
8864 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8865 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
8866 ELSE
8867 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8868 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
8869 END IF;
8870 END IF;
8871
8872 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
8873 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
8874 END IF;
8875
8876 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8877 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
8878 END IF;
8879
8880 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8881 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
8882 END IF;
8883
8884 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
8885 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
8886 END IF;
8887
8888 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8889 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
8890 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8891 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
8892 END IF;*/
8893 IF (inv_mwb_globals.g_owning_qry_mode = 4)
8894 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8895 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
8896 END IF;
8897
8898 IF (inv_mwb_globals.g_planning_query_mode = 4)
8899 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
8900 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
8901 END IF;
8902
8903 --ER(3338592) Changes
8904 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8905 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
8906 END IF;
8907
8908 DBMS_SQL.define_column(query_hdl, 1, sub_code, 10);
8909 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
8910
8911 LOOP
8912 -- fetch a row
8913 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
8914 -- fetch columns from the row
8915 DBMS_SQL.column_value(query_hdl, 1, sub_code);
8916
8917 IF j >= inv_mwb_globals.g_tree_node_low_value
8918 AND sub_code IS NOT NULL THEN
8919 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
8920 x_node_tbl(i).DEPTH := 1;
8921 x_node_tbl(i).label := sub_code;
8922 x_node_tbl(i).icon := 'inv_sbin';
8923 x_node_tbl(i).VALUE := sub_code;
8924 x_node_tbl(i).TYPE := 'SUB';
8925 i := i + 1;
8926 END IF;
8927
8928 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
8929 j := j + 1;
8930 ELSE
8931 EXIT;
8932 END IF;
8933 END LOOP;
8934
8935 DBMS_SQL.close_cursor(query_hdl); -- close cursor
8936 x_node_value := j;
8937 x_tbl_index := i;
8938 EXCEPTION
8939 WHEN NO_DATA_FOUND THEN
8940 NULL;
8941 WHEN OTHERS THEN
8942 RAISE;
8943 END add_subs;
8944
8945 PROCEDURE add_locs(
8946 x_node_value IN OUT NOCOPY NUMBER
8947 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
8948 , x_tbl_index IN OUT NOCOPY NUMBER
8949 ) IS
8950 query_str VARCHAR2(10000);
8951 query_hdl NUMBER;
8952 rows_processed NUMBER;
8953 loc_id mtl_item_locations_kfv.inventory_location_id%TYPE;
8954 loc_code mtl_item_locations_kfv.concatenated_segments%TYPE;
8955 stock_loc_code mtl_parameters.stock_locator_control_code%TYPE;
8956 loc_type NUMBER;
8957 i NUMBER := x_tbl_index;
8958 j NUMBER := x_node_value;
8959 table_required VARCHAR2(300);
8960 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
8961 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_LOCS';
8962 l_default_status_id NUMBER; -- Onhand Material Status Support
8963 BEGIN
8964 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
8965
8966 IF inv_mwb_globals.g_view_by = 'STATUS' THEN
8967 inv_mwb_globals.g_only_subinventory_status := 1;
8968 ELSE
8969 inv_mwb_globals.g_only_subinventory_status := NULL;
8970 END IF;
8971
8972 -- Onhand Material Status Support
8973 if (inv_mwb_globals.g_organization_id is not null) then
8974 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
8975 l_default_status_id := inv_cache.org_rec.default_status_id;
8976 end if;
8977 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
8978 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
8979 l_default_status_id := inv_cache.org_rec.default_status_id;
8980 end if;
8981 end if;
8982
8983 -- NSRIVAST, INVCONV, Start
8984 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
8985 is_grade_t := TRUE ;
8986 END IF ;
8987 -- NSRIVAST, INVCONV, End
8988
8989 /* 1625119 Should check at the Org parameters first for Locator control */
8990 IF inv_mwb_globals.g_organization_id IS NOT NULL
8991 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8992 SELECT stock_locator_control_code
8993 INTO stock_loc_code
8994 FROM mtl_parameters
8995 WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id ,
8996 inv_mwb_globals.g_organization_id);
8997
8998 IF stock_loc_code = 1 THEN
8999 RETURN;
9000 ELSIF stock_loc_code = 4 THEN /* check in Subinventory bug 1625119 */
9001 -- Exit out of the procedure if the subinventory is not locator controlled
9002 IF (inv_mwb_globals.g_organization_id IS NOT NULL
9003 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
9004 AND (inv_mwb_globals.g_subinventory_code IS NOT NULL
9005 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL) THEN
9006 SELECT locator_type
9007 INTO loc_type
9008 FROM mtl_secondary_inventories
9009 WHERE secondary_inventory_name = NVL(inv_mwb_globals.g_tree_subinventory_code,
9010 inv_mwb_globals.g_subinventory_code)
9011 AND organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
9012 inv_mwb_globals.g_organization_id);
9013
9014 IF loc_type = 1 THEN
9015 RETURN;
9016 END IF;
9017 END IF;
9018 END IF;
9019 END IF;
9020
9021 -- display all the LPNs in that location with the appropriate from
9022 -- and to LPN criteria, so include the locs which have them
9023 IF inv_mwb_globals.g_inventory_item_id IS NULL
9024 AND inv_mwb_globals.g_client_code IS NULL -- ER(9158529)
9025 AND inv_mwb_globals.g_revision IS NULL
9026 AND inv_mwb_globals.g_category_set_id IS NULL -- ER(9158529)
9027 AND inv_mwb_globals.g_category_id IS NULL -- ER(9158529)
9028 AND inv_mwb_globals.g_parent_lot IS NULL --BUG 7556505
9029 AND inv_mwb_globals.g_lot_from IS NULL
9030 AND inv_mwb_globals.g_lot_to IS NULL
9031 AND inv_mwb_globals.g_supplier_lot_from IS NULL -- Bug 8396954
9032 AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
9033 AND inv_mwb_globals.g_serial_from IS NULL
9034 AND inv_mwb_globals.g_serial_to IS NULL
9035 AND inv_mwb_globals.g_cost_group_id IS NULL
9036 AND inv_mwb_globals.g_status_id IS NULL
9037 AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
9038 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
9039 AND inv_mwb_globals.g_unit_number IS NULL
9040 AND inv_mwb_globals.g_project_id IS NULL
9041 AND inv_mwb_globals.g_task_id IS NULL
9042 AND(inv_mwb_globals.g_lpn_from IS NOT NULL
9043 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
9044 --ER(3338592) Changes
9045 AND inv_mwb_globals.g_item_description IS NULL THEN
9046 --ER(3338592) Changes
9047 query_str := 'SELECT wlpn.locator_id, mil.concatenated_segments ';
9048 query_str := query_str || 'FROM mtl_item_locations_kfv mil, wms_license_plate_numbers wlpn WHERE 1=1 ';
9049 query_str := query_str || 'AND mil.inventory_location_id = wlpn.locator_id ';
9050 query_str := query_str || 'AND mil.organization_id = wlpn.organization_id ';
9051
9052 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
9053 query_str := query_str || 'AND lpn_context = 3 ';
9054 ELSE
9055 query_str := query_str || ' AND (lpn_context = 1 or lpn_context=9 or lpn_context=11 ) ';
9056 END IF;
9057
9058 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9059 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
9060 END IF;
9061
9062 -- NSRIVAST, INVCONV, Start
9063 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9064 query_str := query_str || ' AND grade_code = :grade_f ' ;
9065 END IF ;
9066 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
9067 query_str := query_str || ' AND grade_code = :grade_c ' ;
9068 END IF ;
9069 -- NSRIVAST, INVCONV, End
9070
9071 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9072 query_str := query_str || 'AND mil.status_id = :st_id ';
9073 ELSE
9074 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9075 query_str := query_str || 'AND mil.status_id = :st_id ';
9076 END IF;
9077 END IF;
9078
9079 IF (inv_mwb_globals.g_subinventory_code IS NOT NULL
9080 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL) THEN
9081 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
9082 END IF;
9083
9084 IF (inv_mwb_globals.g_organization_id IS NOT NULL
9085 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL) THEN
9086 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
9087 END IF;
9088
9089 --bugfix#3646484
9090 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
9091 --User is querying for single LPN so converted the range query to equality query
9092 query_str := query_str || 'and wlpn.license_plate_number = :lpn_f ';
9093 ELSE
9094 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
9095 query_str := query_str || 'and wlpn.license_plate_number >= :lpn_f ';
9096 END IF;
9097
9098 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9099 query_str := query_str || 'and wlpn.license_plate_number <= :lpn_t ';
9100 END IF;
9101 END IF;
9102
9103 query_str := query_str || ' GROUP BY locator_id, concatenated_segments ';
9104 query_str := query_str || ' ORDER BY concatenated_segments ';
9105 ELSE
9106 IF (
9107 inv_mwb_globals.g_serial_from IS NULL
9108 AND inv_mwb_globals.g_serial_to IS NULL
9109 AND inv_mwb_globals.g_unit_number IS NULL
9110 AND inv_mwb_globals.g_status_id IS NULL
9111 AND inv_mwb_globals.g_lpn_from IS NULL
9112 AND inv_mwb_globals.g_lpn_to IS NULL
9113 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
9114 ) THEN
9115 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
9116 table_required := ' mtl_rcv_mwb_onhand_v v ';
9117 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
9118 table_required := ' mtl_onhand_total_mwb_v v ';
9119 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
9120 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
9121 END IF;
9122 ELSE
9123 table_required := ' mtl_onhand_total_v v ';
9124 END IF;
9125
9126 --bug 6633612
9127 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9128 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9129 END IF;
9130 --bug 6633612
9131
9132 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
9133 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
9134 query_str := query_str || 'SELECT v.locator_id, v.locator from ' || table_required;
9135 query_str := query_str || 'WHERE 1=1 ';
9136 ELSE
9137 query_str :=
9138 query_str
9139 || 'SELECT v.locator_id, v.locator from'
9140 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9141 || inv_mwb_globals.g_tree_lot_attr_query
9142 || ') mln, '
9143 || table_required;
9144 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
9145 --BUG 7556505
9146 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9147 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9148 END IF;
9149 --BUG 7556505
9150 /* Bug 8396954 added below code for supplier_lot_number */
9151 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9152 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9153 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
9154 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
9155 END IF;
9156
9157 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9158 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
9159 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
9160 END IF;
9161
9162 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9163 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
9164 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
9165 END IF;
9166 /* End of Bug 8396954 */
9167 END IF;
9168
9169 --bug 6633612
9170 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9171 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9172 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9173 || ' AND rt.organization_id = mmt.organization_id '
9174 || ' AND rt.transaction_type = ''DELIVER'''
9175 || ' AND rt.destination_type_code = ''INVENTORY'''
9176 || ' AND mmt.transaction_id = v.create_transaction_id '
9177 || ' AND mmt.organization_id = v.organization_id ';
9178
9179 END IF;
9180 --bug 6633612
9181 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
9182 query_str := query_str || ' AND v.project_id = :pr_id ';
9183 END IF;
9184
9185 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
9186 query_str := query_str || ' AND v.task_id = :ta_id ';
9187 END IF;
9188
9189 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
9190 query_str := query_str || ' AND v.unit_number=:un_id ';
9191 END IF;
9192
9193 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
9194 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9195 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
9196 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
9197 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9198 query_str := query_str || ' AND planning_organization_id in ';
9199 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
9200 query_str := query_str || ' where vendor_id = :vendor_id )';
9201 END IF;*/
9202 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
9203 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
9204 query_str := query_str || ' AND v.owning_tp_type = 2 ';
9205 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
9206 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
9207 query_str := query_str || ' AND v.owning_tp_type = 1 ';
9208 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
9209 query_str := query_str || ' AND v.owning_tp_type = 1 ';
9210 END IF;
9211
9212 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
9213 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
9214 query_str := query_str || ' AND v.planning_tp_type = 2 ';
9215 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
9216 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
9217 query_str := query_str || ' AND v.planning_tp_type = 1 ';
9218 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
9219 query_str := query_str || ' AND v.planning_tp_type = 1 ';
9220 END IF;
9221
9222 /*
9223 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9224 IF inv_mwb_globals.g_only_locator_status = 1 THEN
9225 query_str := query_str || 'AND (subinventory_status_id = :st_id or ';
9226 query_str := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
9227 ELSE
9228 query_str := query_str || 'AND locator_status_id = :st_id ';
9229 END IF;
9230 END IF;
9231 */
9232 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9233 -- from onhand table (MOQD)
9234 if (l_default_status_id is not null) then -- Status at onhand level
9235 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9236 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
9237 ELSE
9238 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9239 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
9240 END IF;
9241 END IF;
9242 else
9243 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9244 query_str := query_str || 'AND v.locator_status_id = :st_id ';
9245 ELSE
9246 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9247 query_str := query_str || 'AND v.locator_status_id = :st_id ';
9248 END IF;
9249 END IF;
9250 end if;
9251
9252 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9253 query_str := query_str || 'AND v.lot_number >= :lot_f ';
9254 END IF;
9255
9256 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9257 query_str := query_str || 'AND v.lot_number <= :lot_t ';
9258 END IF;
9259
9260 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9261 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
9262 END IF;
9263
9264 IF inv_mwb_globals.g_revision IS NOT NULL THEN
9265 query_str := query_str || 'AND v.revision = :rev ';
9266 END IF;
9267
9268 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9269 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
9270 END IF;
9271
9272 -- ER(9158529 client)
9273 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
9274 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
9275 END IF;
9276 -- ER(9158529 client)
9277
9278 -- ER(9158529)
9279 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
9280 query_str := query_str || ' AND v.inventory_item_id in '
9281 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
9282 || ' where organization_id = :organization_id '
9283 || ' and category_set_id = :category_set_id '
9284 || ' and category_id = nvl(:category_id, category_id)) ' ;
9285 END IF;
9286 -- ER(9158529)
9287
9288 query_str := query_str || 'AND v.locator_id is not null ';
9289
9290 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9291 query_str := query_str || 'AND v.locator_id = :loc_id ';
9292 END IF;
9293
9294 -- NSRIVAST, INVCONV, Start
9295 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9296 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
9297 END IF ;
9298 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
9299 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
9300 END IF ;
9301 -- NSRIVAST, INVCONV, End
9302
9303 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
9304 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
9305 query_str := query_str || 'AND v.subinventory_code = :sub ';
9306 END IF;
9307
9308 --ER(3338592) Changes
9309 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9310 query_str := query_str || ' AND v.item_description LIKE :item_description ';
9311 END IF;
9312 --ER(3338592) Changes
9313
9314 IF inv_mwb_globals.g_organization_id IS NOT NULL
9315 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
9316 query_str := query_str || 'AND v.organization_id = :org_id ';
9317 END IF;
9318
9319 query_str := query_str || 'GROUP BY v.locator_id, v.locator ';
9320 query_str := query_str || 'ORDER BY v.locator ';
9321 ELSIF(
9322 (
9323 inv_mwb_globals.g_serial_from IS NOT NULL
9324 OR inv_mwb_globals.g_serial_to IS NOT NULL
9325 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
9326 OR inv_mwb_globals.g_unit_number IS NOT NULL
9327 )
9328 AND inv_mwb_globals.g_lpn_from IS NULL
9329 AND inv_mwb_globals.g_lpn_to IS NULL
9330 ) THEN
9331 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
9332 table_required := ' mtl_rcv_serial_oh_v v ';
9333 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
9334 table_required := ' mtl_onhand_serial_mwb_v v ';
9335 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
9336 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
9337 END IF; -- NSRIVAST, INVCONV
9338 ELSE
9339 table_required := ' mtl_onhand_serial_v v ';
9340 END IF;
9341 --bug 6633612
9342 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9343 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9344 END IF;
9345 --bug 6633612
9346
9347 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
9348 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
9349 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9350 query_str := query_str || 'SELECT v.locator_id, v.locator from ' || table_required;
9351 query_str := query_str || 'WHERE 1=1 ';
9352 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
9353 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
9354 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
9355 query_str :=
9356 query_str
9357 || 'SELECT v.locator_id, v.locator from'
9358 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
9359 || inv_mwb_globals.g_tree_serial_attr_query
9360 || ') msn, '
9361 || table_required;
9362 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
9363 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
9364 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
9365 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9366 query_str :=
9367 query_str
9368 || 'SELECT v.locator_id, v.locator from'
9369 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9370 || inv_mwb_globals.g_tree_lot_attr_query
9371 || ') mln, '
9372 || table_required;
9373 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
9374 --BUG 7556505
9375 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9376 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9377 END IF;
9378 --BUG 7556505
9379 /* Bug 8396954 added below code for supplier_lot_number */
9380 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9381 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9382 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
9383 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
9384 END IF;
9385
9386 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9387 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
9388 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
9389 END IF;
9390
9391 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9392 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
9393 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
9394 END IF;
9395 /* End of Bug 8396954 */
9396 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
9397 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
9398 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
9399 query_str :=
9400 query_str
9401 || 'SELECT v.locator_id, v.locator from'
9402 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9403 || inv_mwb_globals.g_tree_lot_attr_query
9404 || ') mln, '
9405 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
9406 || inv_mwb_globals.g_tree_serial_attr_query
9407 || ') msn, '
9408 || table_required;
9409 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
9410 --BUG 7556505
9411 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9412 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9413 END IF;
9414 --BUG 7556505
9415 /* Bug 8396954 added below code for supplier_lot_number */
9416 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9417 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9418 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
9419 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
9420 END IF;
9421
9422 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9423 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
9424 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
9425 END IF;
9426
9427 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9428 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
9429 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
9430 END IF;
9431 /* End of Bug 8396954 */
9432 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
9433 END IF;
9434
9435 --bug 6633612
9436 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9437 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9438 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9439 || ' AND rt.organization_id = mmt.organization_id '
9440 || ' AND rt.transaction_type = ''DELIVER'''
9441 || ' AND rt.destination_type_code = ''INVENTORY'''
9442 || ' AND mmt.transaction_id = v.last_transaction_id '
9443 || ' AND mmt.organization_id = v.organization_id ';
9444
9445 END IF;
9446 --bug 6633612
9447
9448 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
9449 query_str := query_str || ' AND v.project_id = :pr_id ';
9450 END IF;
9451
9452 -- NSRIVAST, INVCONV, Start
9453 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9454 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
9455 END IF ;
9456 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
9457 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
9458 END IF ;
9459 -- NSRIVAST, INVCONV, End
9460
9461 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
9462 query_str := query_str || ' AND v.task_id = :ta_id ';
9463 END IF;
9464
9465 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
9466 query_str := query_str || ' AND v.unit_number=:un_id ';
9467 END IF;
9468
9469 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9470 -- from onhand table (MOQD)
9471 if (l_default_status_id is not null) then -- Status at onhand level
9472 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9473 query_str := query_str || 'AND v.serial_status_id = :st_id ';
9474 ELSE
9475 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9476 query_str := query_str || 'AND v.serial_status_id = :st_id ';
9477 END IF;
9478 END IF;
9479 else
9480 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9481 query_str := query_str || 'AND v.locator_status_id = :st_id ';
9482 ELSE
9483 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9484 query_str := query_str || 'AND v.locator_status_id = :st_id ';
9485 END IF;
9486 END IF;
9487 end if;
9488
9489 /*
9490 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9491 IF inv_mwb_globals.g_only_locator_status = 1 THEN
9492 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
9493 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
9494 ELSE
9495 query_str := query_str || 'AND locator_status_id = :st_id ';
9496 END IF;
9497 END IF;
9498 */
9499 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9500 query_str := query_str || 'AND v.lot_number >= :lot_f ';
9501 END IF;
9502
9503 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9504 query_str := query_str || 'AND v.lot_number <= :lot_t ';
9505 END IF;
9506
9507 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9508 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
9509 END IF;
9510
9511 IF inv_mwb_globals.g_revision IS NOT NULL THEN
9512 query_str := query_str || 'AND v.revision = :rev ';
9513 END IF;
9514
9515 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
9516 query_str := query_str || 'AND v.serial_number >= :serial_f ';
9517 END IF;
9518
9519 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
9520 query_str := query_str || 'AND v.serial_number <= :serial_t ';
9521 END IF;
9522
9523 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9524 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
9525 END IF;
9526
9527 -- ER(9158529 client)
9528 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
9529 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
9530 END IF;
9531 -- ER(9158529 client)
9532
9533 -- ER(9158529)
9534 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
9535 query_str := query_str || ' AND v.inventory_item_id in '
9536 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
9537 || ' where organization_id = :organization_id '
9538 || ' and category_set_id = :category_set_id '
9539 || ' and category_id = nvl(:category_id, category_id)) ' ;
9540 END IF;
9541 -- ER(9158529)
9542
9543 query_str := query_str || 'AND v.locator_id is not null ';
9544
9545 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9546 query_str := query_str || 'AND v.locator_id = :loc_id ';
9547 END IF;
9548
9549 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
9550 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
9551 query_str := query_str || 'AND v.subinventory_code = :sub ';
9552 END IF;
9553
9554 --ER(3338592) Changes
9555 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9556 query_str := query_str || ' AND v.item_description LIKE :item_description ';
9557 END IF;
9558 --ER(3338592) Changes
9559
9560 IF inv_mwb_globals.g_organization_id IS NOT NULL
9561 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
9562 query_str := query_str || 'AND v.organization_id = :org_id ';
9563 END IF;
9564
9565 query_str := query_str || 'GROUP BY v.locator_id, v.locator ';
9566 query_str := query_str || 'ORDER BY v.locator ';
9567 -- Need to use both mtl_onhand_total_v and mtl_onhand_serial_v
9568 ELSIF(
9569 inv_mwb_globals.g_serial_from IS NULL
9570 AND inv_mwb_globals.g_serial_to IS NULL
9571 AND inv_mwb_globals.g_unit_number IS NULL
9572 AND inv_mwb_globals.g_status_id IS NOT NULL
9573 AND inv_mwb_globals.g_lpn_from IS NULL
9574 AND inv_mwb_globals.g_lpn_to IS NULL
9575 ) THEN
9576 IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
9577 table_required := ' mtl_onhand_total_mwb_v v ';
9578 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
9579 -- table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
9580 ELSE
9581 table_required := ' mtl_onhand_total_v v ';
9582 END IF;
9583
9584 --bug 6633612
9585 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9586 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9587 END IF;
9588 --bug 6633612
9589
9590 query_str := 'SELECT locator_id, locator from (';
9591
9592 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
9593 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
9594 query_str := query_str || 'SELECT v.locator_id locator_id, v.locator locator from ' || table_required;
9595 query_str := query_str || 'WHERE 1=1 ';
9596 ELSE
9597 query_str :=
9598 query_str
9599 || 'SELECT v.locator_id locator_id, v.locator locator from'
9600 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9601 || inv_mwb_globals.g_tree_lot_attr_query
9602 || ') mln, '
9603 || table_required;
9604 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
9605 --BUG 7556505
9606 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9607 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9608 END IF;
9609 --BUG 7556505
9610 /* Bug 8396954 added below code for supplier_lot_number */
9611 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9612 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9613 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
9614 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
9615 END IF;
9616
9617 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9618 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
9619 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
9620 END IF;
9621
9622 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9623 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
9624 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
9625 END IF;
9626 /* End of Bug 8396954 */
9627 END IF;
9628
9629 --bug 6633612
9630 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9631 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9632 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9633 || ' AND rt.organization_id = mmt.organization_id '
9634 || ' AND rt.transaction_type = ''DELIVER'''
9635 || ' AND rt.destination_type_code = ''INVENTORY'''
9636 || ' AND mmt.transaction_id = v.create_transaction_id '
9637 || ' AND mmt.organization_id = v.organization_id ';
9638
9639 END IF;
9640 --bug 6633612
9641
9642 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
9643 query_str := query_str || ' AND v.project_id = :pr_id ';
9644 END IF;
9645
9646 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
9647 query_str := query_str || ' AND v.task_id = :ta_id ';
9648 END IF;
9649
9650 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
9651 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9652 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
9653 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
9654 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9655 query_str := query_str || ' AND planning_organization_id in ';
9656 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
9657 query_str := query_str || ' where vendor_id = :vendor_id )';
9658 END IF;*/
9659 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
9660 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
9661 query_str := query_str || ' AND v.owning_tp_type = 2 ';
9662 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
9663 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
9664 query_str := query_str || ' AND v.owning_tp_type = 1 ';
9665 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
9666 query_str := query_str || ' AND v.owning_tp_type = 1 ';
9667 END IF;
9668
9669 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
9670 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
9671 query_str := query_str || ' AND v.planning_tp_type = 2 ';
9672 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
9673 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
9674 query_str := query_str || ' AND v.planning_tp_type = 1 ';
9675 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
9676 query_str := query_str || ' AND v.planning_tp_type = 1 ';
9677 END IF;
9678
9679 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9680 -- from onhand table (MOQD)
9681 if (l_default_status_id is not null) then -- Status at onhand level
9682 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9683 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
9684 ELSE
9685 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9686 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
9687 END IF;
9688 END IF;
9689 else
9690 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9691 query_str := query_str || 'AND v.locator_status_id = :st_id ';
9692 ELSE
9693 IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
9694 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
9695 query_str := query_str || 'OR v.lot_status_id = :st_id) ';
9696 END IF;
9697 END IF;
9698 end if;
9699
9700 /*
9701 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9702 IF inv_mwb_globals.g_only_locator_status = 1 THEN
9703 query_str := query_str || 'AND (subinventory_status_id = :st_id or ';
9704 query_str := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
9705 ELSE
9706 query_str := query_str || 'AND locator_status_id = :st_id ';
9707 END IF;
9708 END IF;
9709 */
9710 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9711 query_str := query_str || 'AND v.lot_number >= :lot_f ';
9712 END IF;
9713
9714 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9715 query_str := query_str || 'AND v.lot_number <= :lot_t ';
9716 END IF;
9717
9718 -- NSRIVAST, INVCONV, Start
9719 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9720 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
9721 END IF ;
9722 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
9723 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
9724 END IF ;
9725 -- NSRIVAST, INVCONV, End
9726
9727 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9728 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
9729 END IF;
9730
9731 IF inv_mwb_globals.g_revision IS NOT NULL THEN
9732 query_str := query_str || 'AND v.revision = :rev ';
9733 END IF;
9734
9735 --query_str := query_str || 'AND serial_number_control_code in (1,6) ';
9736 query_str := query_str || 'AND v.item_serial_control in (1,6) ';
9737
9738 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9739 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
9740 END IF;
9741
9742 -- ER(9158529 client)
9743 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
9744 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
9745 END IF;
9746 -- ER(9158529 client)
9747
9748 -- ER(9158529)
9749 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
9750 query_str := query_str || ' AND v.inventory_item_id in '
9751 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
9752 || ' where organization_id = :organization_id '
9753 || ' and category_set_id = :category_set_id '
9754 || ' and category_id = nvl(:category_id, category_id)) ' ;
9755 END IF;
9756 -- ER(9158529)
9757
9758 query_str := query_str || 'AND v.locator_id is not null ';
9759
9760 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9761 query_str := query_str || 'AND v.locator_id = :loc_id ';
9762 END IF;
9763
9764 --ER(3338592) Changes
9765 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9766 query_str := query_str || ' AND v.item_description LIKE :item_description ';
9767 END IF;
9768 --ER(3338592) Changes
9769
9770 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
9771 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9772 query_str := query_str || 'AND v.subinventory_code = :sub ';
9773 END IF;
9774
9775 IF inv_mwb_globals.g_organization_id IS NOT NULL
9776 OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
9777 query_str := query_str || 'AND v.organization_id = :org_id ';
9778 END IF;
9779
9780 query_str := query_str || 'UNION ';
9781
9782 IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
9783 table_required := ' mtl_onhand_serial_mwb_v v ';
9784 ELSE
9785 table_required := ' mtl_onhand_serial_v v ' ;
9786 END IF;
9787
9788 --bug 6633612
9789 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9790 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9791 END IF;
9792 --bug 6633612
9793
9794 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
9795 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
9796 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9797 query_str := query_str || 'SELECT v.locator_id locator_id , v.locator locator from ' || table_required;
9798 query_str := query_str || 'WHERE 1=1 ';
9799 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
9800 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
9801 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9802 query_str :=
9803 query_str
9804 || 'SELECT v.locator_id locator_id, v.locator locator from'
9805 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9806 || inv_mwb_globals.g_tree_lot_attr_query
9807 || ') mln, '
9808 || table_required;
9809 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
9810 --BUG 7556505
9811 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9812 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9813 END IF;
9814 --BUG 7556505
9815 /* Bug 8396954 added below code for supplier_lot_number */
9816 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9817 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9818 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
9819 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
9820 END IF;
9821
9822 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
9823 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
9824 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
9825 END IF;
9826
9827 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
9828 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
9829 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
9830 END IF;
9831 /* End of Bug 8396954 */
9832 END IF;
9833
9834 --bug 6633612
9835 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9836 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9837 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9838 || ' AND rt.organization_id = mmt.organization_id '
9839 || ' AND rt.transaction_type = ''DELIVER'''
9840 || ' AND rt.destination_type_code = ''INVENTORY'''
9841 || ' AND mmt.transaction_id = v.last_transaction_id '
9842 || ' AND mmt.organization_id = v.organization_id ';
9843
9844 END IF;
9845 --bug 6633612
9846
9847 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9848 -- from onhand table (MOQD)
9849 if (l_default_status_id is not null) then -- Status at onhand level
9850 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9851 query_str := query_str || 'AND v.serial_status_id = :st_id ';
9852 ELSE
9853 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9854 query_str := query_str || 'AND v.serial_status_id = :st_id ';
9855 END IF;
9856 END IF;
9857 else
9858 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
9859 query_str := query_str || 'AND v.locator_status_id = :st_id ';
9860 ELSE
9861 IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
9862 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
9863 query_str := query_str || 'OR v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
9864 END IF;
9865 END IF;
9866 end if;
9867
9868 /*
9869 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9870 IF inv_mwb_globals.g_only_locator_status = 1 THEN
9871 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
9872 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
9873 ELSE
9874 query_str := query_str || 'AND locator_status_id = :st_id ';
9875 END IF;
9876 END IF;
9877 */
9878 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9879 query_str := query_str || 'AND v.lot_number >= :lot_f ';
9880 END IF;
9881
9882 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9883 query_str := query_str || 'AND v.lot_number <= :lot_t ';
9884 END IF;
9885
9886 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9887 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
9888 END IF;
9889
9890 IF inv_mwb_globals.g_revision IS NOT NULL THEN
9891 query_str := query_str || 'AND v.revision = :rev ';
9892 END IF;
9893
9894 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
9895 query_str := query_str || 'AND v.serial_number >= :serial_f ';
9896 END IF;
9897
9898 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
9899 query_str := query_str || 'AND v.serial_number <= :serial_t ';
9900 END IF;
9901
9902 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9903 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
9904 END IF;
9905
9906 -- ER(9158529 client)
9907 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
9908 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
9909 END IF;
9910 -- ER(9158529 client)
9911
9912 -- ER(9158529)
9913 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
9914 query_str := query_str || ' AND v.inventory_item_id in '
9915 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
9916 || ' where organization_id = :organization_id '
9917 || ' and category_set_id = :category_set_id '
9918 || ' and category_id = nvl(:category_id, category_id)) ' ;
9919 END IF;
9920 -- ER(9158529)
9921
9922 query_str := query_str || 'AND v.locator_id is not null ';
9923
9924 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9925 query_str := query_str || 'AND v.locator_id = :loc_id ';
9926 END IF;
9927
9928 --ER(3338592) Changes
9929 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9930 query_str := query_str || ' AND v.item_description LIKE :item_description ';
9931 END IF;
9932 --ER(3338592) Changes
9933
9934 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
9935 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
9936 query_str := query_str || 'AND v.subinventory_code = :sub ';
9937 END IF;
9938
9939 IF inv_mwb_globals.g_organization_id IS NOT NULL
9940 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
9941 query_str := query_str || 'AND v.organization_id = :org_id ';
9942 END IF;
9943
9944 query_str := query_str || ') GROUP BY locator_id, locator ';
9945 query_str := query_str || 'ORDER BY locator ';
9946 -- Need to use mtl_onhand_lpn_v
9947 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
9948 OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
9949 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
9950 table_required := ' mtl_onhand_lpn_mwb_v mol ';
9951 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
9952 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
9953 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
9954 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
9955 END IF; -- NSRIVAST, INVCONV
9956 ELSE
9957 table_required := ' mtl_onhand_new_lpn_v mol ';
9958 END IF;
9959
9960 query_str := 'SELECT locator_id, locator from ' || table_required;
9961
9962 IF inv_mwb_globals.g_lpn_from IS NOT NULL
9963 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9964 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
9965 query_str := query_str || ' WHERE 1=1 ';
9966
9967 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9968 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
9969 END IF;
9970
9971 -- NSRIVAST, INVCONV, Start
9972 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9973 query_str := query_str || ' AND grade_code = :grade_f ' ;
9974 END IF ;
9975 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
9976 query_str := query_str || ' AND grade_code = :grade_c ' ;
9977 END IF ;
9978 -- NSRIVAST, INVCONV, End
9979
9980 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
9981 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
9982 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
9983 END IF;
9984
9985 IF inv_mwb_globals.g_organization_id IS NOT NULL
9986 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
9987 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
9988 END IF;
9989
9990 IF inv_mwb_globals.g_lpn_from IS NOT NULL
9991 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9992 IF inv_mwb_globals.g_lpn_from IS NOT NULL
9993 AND inv_mwb_globals.g_lpn_to IS NULL THEN
9994 query_str := query_str || ' and license_plate_number >= :lpn_f ';
9995 ELSIF inv_mwb_globals.g_lpn_from IS NULL
9996 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9997 query_str := query_str || ' and license_plate_number <= :lpn_t ';
9998 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
9999 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10000 --bugfix#3646484
10001 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
10002 --User is querying for single LPN so converted the range query to equality query
10003 query_str := query_str || 'and license_plate_number = :lpn_f ';
10004 ELSE
10005 query_str := query_str || ' and license_plate_number >= :lpn_f ';
10006 query_str := query_str || ' and license_plate_number <= :lpn_t ';
10007 END IF;
10008 END IF;
10009 END IF;
10010
10011 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
10012 END IF;
10013
10014 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
10015 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
10016 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
10017 query_str := query_str || 'WHERE 1=1 ';
10018 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
10019 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
10020 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
10021 query_str :=
10022 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
10023 || ') msn ';
10024 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
10025 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
10026 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
10027 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
10028 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
10029 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
10030 --BUG 7556505
10031 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10032 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10033 END IF;
10034 --BUG 7556505
10035 /* Bug 8396954 added below code for supplier_lot_number */
10036 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10037 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10038 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
10039 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
10040 END IF;
10041
10042 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10043 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
10044 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
10045 END IF;
10046
10047 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10048 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
10049 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
10050 END IF;
10051 /* End of Bug 8396954 */
10052 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
10053 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
10054 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
10055 query_str :=
10056 query_str
10057 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
10058 || inv_mwb_globals.g_tree_lot_attr_query
10059 || ') mln '
10060 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
10061 || inv_mwb_globals.g_tree_serial_attr_query
10062 || ') msn ';
10063 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
10064 --BUG 7556505
10065 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10066 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10067 END IF;
10068 --BUG 7556505
10069 /* Bug 8396954 added below code for supplier_lot_number */
10070 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10071 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10072 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
10073 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
10074 END IF;
10075
10076 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10077 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
10078 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
10079 END IF;
10080
10081 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10082 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
10083 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
10084 END IF;
10085 /* End of Bug 8396954 */
10086 query_str := query_str || 'AND msn.serial_num = serial_number ';
10087 END IF;
10088
10089 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
10090 query_str := query_str || ' AND project_id = :pr_id ';
10091 END IF;
10092
10093 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
10094 query_str := query_str || ' AND task_id = :ta_id ';
10095 END IF;
10096
10097 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
10098 query_str := query_str || ' AND unit_number=:un_id ';
10099 END IF;
10100
10101 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
10102 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
10103 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
10104 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
10105 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
10106 query_str := query_str || ' AND planning_organization_id in ';
10107 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
10108 query_str := query_str || ' where vendor_id = :vendor_id )';
10109 END IF;*/
10110 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
10111 query_str := query_str || ' AND owning_organization_id = :own_org ';
10112 query_str := query_str || ' AND owning_tp_type = 2 ';
10113 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
10114 query_str := query_str || ' AND owning_organization_id = :own_org ';
10115 query_str := query_str || ' AND owning_tp_type = 1 ';
10116 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
10117 query_str := query_str || ' AND owning_tp_type = 1 ';
10118 END IF;
10119
10120 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
10121 query_str := query_str || ' AND planning_organization_id = :plan_org ';
10122 query_str := query_str || ' AND planning_tp_type = 2 ';
10123 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
10124 query_str := query_str || ' AND planning_organization_id = :plan_org ';
10125 query_str := query_str || ' AND planning_tp_type = 1 ';
10126 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
10127 query_str := query_str || ' AND planning_tp_type = 1 ';
10128 END IF;
10129
10130 /*LPN Status Project */
10131 IF (l_default_status_id IS NOT NULL) THEN -- Status at onhand level
10132 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
10133 query_str := query_str || 'AND onhand_status_id = :st_id ';
10134 ELSE
10135 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10136 query_str := query_str || 'AND onhand_status_id = :st_id ';
10137 END IF;
10138 END IF;
10139 ELSE
10140 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
10141 query_str := query_str || 'AND locator_status_id = :st_id ';
10142 ELSE
10143 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10144 query_str := query_str || 'AND locator_status_id = :st_id ';
10145 END IF;
10146 END IF;
10147 END IF;
10148 /*End of fix for LPN Status Project */
10149
10150 /*
10151 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10152 IF inv_mwb_globals.g_only_locator_status = 1 THEN
10153 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
10154 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
10155 ELSE
10156 query_str := query_str || 'AND locator_status_id = :st_id ';
10157 END IF;
10158 END IF;
10159 */
10160
10161 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
10162 query_str := query_str || 'AND lot_number >= :lot_f ';
10163 END IF;
10164
10165 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
10166 query_str := query_str || 'AND lot_number <= :lot_t ';
10167 END IF;
10168
10169 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
10170 query_str := query_str || 'AND cost_group_id = :cg_id ';
10171 END IF;
10172
10173 IF inv_mwb_globals.g_revision IS NOT NULL THEN
10174 query_str := query_str || 'AND revision = :rev ';
10175 END IF;
10176
10177 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
10178 query_str := query_str || 'AND serial_number >= :serial_f ';
10179 END IF;
10180
10181 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
10182 query_str := query_str || 'AND serial_number <= :serial_t ';
10183 END IF;
10184
10185 IF inv_mwb_globals.g_lpn_from IS NOT NULL
10186 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10187 query_str := query_str || 'AND mol.outermost_lpn_id = X.outermost_lpn_id ';
10188 END IF;
10189
10190 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10191 query_str := query_str || 'AND inventory_item_id = :item_id ';
10192 END IF;
10193
10194 -- ER(9158529 client)
10195 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
10196 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
10197 END IF;
10198 -- ER(9158529 client)
10199
10200 -- ER(9158529)
10201 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
10202 query_str := query_str || ' AND inventory_item_id in '
10203 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
10204 || ' where organization_id = :organization_id '
10205 || ' and category_set_id = :category_set_id '
10206 || ' and category_id = nvl(:category_id, category_id)) ' ;
10207 END IF;
10208 -- ER(9158529)
10209
10210 query_str := query_str || 'AND locator_id is not null ';
10211
10212 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
10213 query_str := query_str || 'AND locator_id = :loc_id ';
10214 END IF;
10215
10216 --ER(3338592) Changes
10217 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
10218 query_str := query_str || ' AND item_description LIKE :item_description ';
10219 END IF;
10220 --ER(3338592) Changes
10221
10222 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
10223 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10224 query_str := query_str || 'AND subinventory_code = :sub ';
10225 END IF;
10226
10227 IF inv_mwb_globals.g_organization_id IS NOT NULL
10228 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10229 query_str := query_str || 'AND organization_id = :org_id ';
10230 END IF;
10231
10232 query_str := query_str || 'GROUP BY locator_id, locator ';
10233 query_str := query_str || 'ORDER BY locator ';
10234 END IF;
10235 END IF;
10236
10237 inv_trx_util_pub.trace(query_str, 'Add Loc :- Material Workbench', 9);
10238 --trace1(query_str, 'add_locs', 9);
10239 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
10240
10241 inv_mwb_globals.g_last_query := query_str;
10242
10243 query_hdl := DBMS_SQL.open_cursor;
10244 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
10245
10246
10247 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10248 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
10249 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
10250 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
10251 END IF;
10252
10253 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10254 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
10255 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
10256 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
10257 END IF;
10258
10259 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
10260 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
10261 END IF;
10262
10263 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10264 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
10265 END IF;
10266
10267 -- ER(9158529 client)
10268 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
10269 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
10270 END IF;
10271 -- ER(9158529 client)
10272
10273 IF inv_mwb_globals.g_revision IS NOT NULL THEN
10274 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
10275 END IF;
10276
10277 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
10278 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
10279 END IF;
10280
10281 -- ER(9158529)
10282 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
10283 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
10284 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
10285 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
10286 END IF;
10287 -- ER(9158529)
10288
10289 --BUG 7556505
10290 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10291 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
10292 END IF;
10293 --BUG 7556505
10294
10295 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
10296 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
10297 END IF;
10298
10299 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
10300 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
10301 END IF;
10302
10303 /* Bug 8396954 added below code for supplier_lot_number */
10304 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10305 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10306 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
10307 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
10308 END IF;
10309
10310 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10311 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
10312 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
10313 END IF;
10314
10315 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10316 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
10317 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
10318 END IF;
10319 /* End of Bug 8396954 */
10320
10321 --bug 6633612
10322 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
10323 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
10324 END IF;
10325 --bug 6633612
10326
10327 -- NSRIVAST, INVCONV, Start
10328 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10329 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
10330 END IF;
10331 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
10332 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
10333 END IF;
10334 -- NSRIVAST, INVCONV, End
10335
10336 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
10337 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
10338 END IF;
10339
10340 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
10341 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
10342 END IF;
10343
10344 --bugfix#3646484
10345 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
10346 --User is querying for single LPN so converted the range query to equality query
10347 --So it is enought to bind the from lpn alone
10348 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
10349 ELSE
10350 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
10351 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
10352 END IF;
10353
10354 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10355 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
10356 END IF;
10357 END IF;
10358
10359 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
10360 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
10361 ELSE
10362 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10363 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
10364 END IF;
10365 END IF;
10366 /*
10367 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10368 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
10369 END IF;
10370 */
10371
10372 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
10373 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
10374 END IF;
10375
10376 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
10377 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
10378 END IF;
10379
10380 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
10381 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
10382 END IF;
10383
10384 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
10385 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
10386 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
10387 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
10388 END IF;*/
10389 IF (inv_mwb_globals.g_owning_qry_mode = 4)
10390 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
10391 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
10392 END IF;
10393
10394 IF (inv_mwb_globals.g_planning_query_mode = 4)
10395 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
10396 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
10397 END IF;
10398
10399 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
10400 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
10401 END IF;
10402
10403 --ER(3338592) Changes
10404 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
10405 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
10406 END IF;
10407
10408 DBMS_SQL.define_column(query_hdl, 1, loc_id);
10409 DBMS_SQL.define_column(query_hdl, 2, loc_code, 204);
10410 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
10411
10412 LOOP
10413 -- fetch a row
10414 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
10415 -- fetch columns from the row
10416 DBMS_SQL.column_value(query_hdl, 1, loc_id);
10417 DBMS_SQL.column_value(query_hdl, 2, loc_code);
10418 IF j >= inv_mwb_globals.g_tree_node_low_value
10419 AND loc_code IS NOT NULL THEN
10420 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
10421 x_node_tbl(i).DEPTH := 1;
10422 x_node_tbl(i).label := substr(inv_project.get_locator(loc_id, inv_mwb_globals.g_tree_organization_id), 1, 80); -- Bug 6513399: truncating the locator to 80 chars
10423 x_node_tbl(i).icon := 'inv_stlo';
10424 x_node_tbl(i).VALUE := TO_CHAR(loc_id);
10425 x_node_tbl(i).TYPE := 'LOC';
10426 i := i + 1;
10427 END IF;
10428
10429 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
10430 j := j + 1;
10431 ELSE
10432 EXIT;
10433 END IF;
10434 END LOOP;
10435
10436 DBMS_SQL.close_cursor(query_hdl); -- close cursor
10437 x_node_value := j;
10438 x_tbl_index := i;
10439 EXCEPTION
10440 WHEN NO_DATA_FOUND THEN
10441 NULL;
10442 WHEN OTHERS THEN
10443 RAISE;
10444 END add_locs;
10445
10446 PROCEDURE add_cgs(
10447 x_node_value IN OUT NOCOPY NUMBER
10448 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
10449 , x_tbl_index IN OUT NOCOPY NUMBER
10450 ) IS
10451 query_str VARCHAR2(10000);
10452 query_hdl NUMBER;
10453 rows_processed NUMBER;
10454 cg_id cst_cost_groups.cost_group_id%TYPE;
10455 cg cst_cost_groups.cost_group%TYPE;
10456 i NUMBER := x_tbl_index;
10457 j NUMBER := x_node_value;
10458 table_required VARCHAR2(300);
10459 --ER(3338592) Changes
10460 group_str VARCHAR2(10000) ;
10461 having_str VARCHAR2(10000) := ' HAVING 1=1 ';
10462 --ER(3338592) Changes
10463 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
10464
10465 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD CGS';
10466 l_default_status_id NUMBER; -- Onhand Material Status Support
10467 BEGIN
10468 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
10469
10470 -- Onhand Material Status Support
10471 if (inv_mwb_globals.g_organization_id is not null) then
10472 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
10473 l_default_status_id := inv_cache.org_rec.default_status_id;
10474 end if;
10475 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
10476 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
10477 l_default_status_id := inv_cache.org_rec.default_status_id;
10478 end if;
10479 end if;
10480
10481 -- NSRIVAST, INVCONV, Start
10482 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
10483 is_grade_t := TRUE ;
10484 END IF ;
10485 -- NSRIVAST, INVCONV, End
10486
10487 IF (
10488 inv_mwb_globals.g_serial_from IS NULL
10489 AND inv_mwb_globals.g_serial_to IS NULL
10490 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
10491 AND inv_mwb_globals.g_unit_number IS NULL
10492 AND inv_mwb_globals.g_status_id IS NULL
10493 AND inv_mwb_globals.g_lpn_from IS NULL
10494 AND inv_mwb_globals.g_lpn_to IS NULL
10495 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
10496 ) THEN
10497 IF (inv_mwb_globals.g_status_id IS NULL) THEN
10498 table_required := ' mtl_onhand_total_mwb_v v ';
10499 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
10500 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
10501 END IF;
10502 ELSE
10503 table_required := ' mtl_onhand_total_v v ';
10504 END IF;
10505
10506 --bug 6633612
10507 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
10508 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
10509 END IF;
10510 --bug 6633612
10511
10512 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
10513 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
10514 query_str := 'SELECT DISTINCT v.cost_group_id , ccg.cost_group ';
10515 query_str := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
10516 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
10517 ELSE
10518 query_str :=
10519 query_str
10520 || 'SELECT v.cost_group_id , ccg.cost_group from'
10521 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
10522 || inv_mwb_globals.g_tree_lot_attr_query
10523 || ') mln, cst_cost_groups ccg, '
10524 || table_required;
10525 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
10526 query_str := query_str || 'AND mln.lot_num = v.lot_number ';
10527 --BUG 7556505
10528 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10529 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10530 END IF;
10531 --BUG 7556505
10532 /* Bug 8396954 added below code for supplier_lot_number */
10533 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10534 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10535 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
10536 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
10537 END IF;
10538
10539 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10540 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
10541 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
10542 END IF;
10543
10544 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10545 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
10546 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
10547 END IF;
10548 /* End of Bug 8396954 */
10549 END IF;
10550
10551 query_str := query_str || 'AND ccg.cost_group_id = v.cost_group_id ';
10552
10553 --bug 6633612
10554 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
10555 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
10556 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
10557 || ' AND rt.organization_id = mmt.organization_id '
10558 || ' AND rt.transaction_type = ''DELIVER'''
10559 || ' AND rt.destination_type_code = ''INVENTORY'''
10560 || ' AND mmt.transaction_id = v.create_transaction_id '
10561 || ' AND mmt.organization_id = v.organization_id ';
10562
10563 END IF;
10564 --bug 6633612
10565
10566 --ER(3338592) Changes (If the user gives the value for the Qty then only
10567 --Group by clause comes in to effect)
10568
10569 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10570 group_str := ' GROUP BY v.organization_id ';
10571 END IF;
10572
10573 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
10574 query_str := query_str || 'AND v.subinventory_code = :sub ';
10575 --ER(3338592) Changes
10576 IF group_str IS NOT NULL THEN
10577 group_str := group_str || ' , v.subinventory_code ' ;
10578 END IF;
10579 END IF;
10580
10581 -- NSRIVAST, INVCONV, Start
10582 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10583 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
10584 END IF ;
10585 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
10586 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
10587 END IF ;
10588 -- NSRIVAST, INVCONV, End
10589
10590 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
10591 query_str := query_str || 'AND v.locator_id = :loc_id ';
10592 --ER(3338592) Changes
10593 IF group_str IS NOT NULL THEN
10594 group_str := group_str || ' , v.locator_id ' ;
10595 END IF;
10596 END IF;
10597
10598 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
10599 query_str := query_str || ' AND v.project_id = :pr_id ';
10600 --ER(3338592) Changes
10601 IF group_str IS NOT NULL THEN
10602 group_str := group_str || ' , v.project_id ' ;
10603 END IF;
10604 END IF;
10605
10606 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
10607 query_str := query_str || ' AND v.task_id = :ta_id ';
10608 --ER(3338592) Changes
10609 IF group_str IS NOT NULL THEN
10610 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
10611 END IF;
10612 END IF;
10613
10614 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10615 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
10616 END IF;
10617
10618 -- ER(9158529 client)
10619 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
10620 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
10621 END IF;
10622 -- ER(9158529 client)
10623
10624 -- ER(9158529)
10625 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
10626 query_str := query_str || ' AND v.inventory_item_id in '
10627 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
10628 || ' where organization_id = :organization_id '
10629 || ' and category_set_id = :category_set_id '
10630 || ' and category_id = nvl(:category_id, category_id)) ' ;
10631 END IF;
10632 -- ER(9158529)
10633
10634 --Bug # 3411938
10635 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10636 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
10637 END IF;
10638
10639 --ER(3338592) Changes
10640 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
10641 query_str := query_str || ' AND v.item_description LIKE :item_description ';
10642 END IF;
10643
10644 IF inv_mwb_globals.g_revision IS NOT NULL THEN
10645 query_str := query_str || 'AND v.revision = :rev ';
10646 --ER(3338592) Changes
10647 IF group_str IS NOT NULL THEN
10648 group_str := group_str || ' , v.revision ' ;
10649 END IF;
10650 END IF;
10651
10652 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
10653 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
10654 END IF;
10655
10656 --Bug #3405473
10657 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10658 group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
10659 END IF;
10660
10661 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
10662 query_str := query_str || 'AND v.lot_number >= :lot_f ';
10663 END IF;
10664
10665 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
10666 query_str := query_str || 'AND v.lot_number <= :lot_t ';
10667 END IF;
10668
10669 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
10670 -- from onhand table (MOQD)
10671 if (l_default_status_id is not null) then
10672 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10673 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
10674 END IF;
10675 else
10676 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10677 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or ';
10678 query_str := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
10679 END IF;
10680 end if;
10681
10682 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
10683 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
10684 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
10685 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
10686 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
10687 query_str := query_str || ' AND planning_organization_id in ';
10688 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
10689 query_str := query_str || ' where vendor_id = :vendor_id )';
10690 END IF;*/
10691
10692 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
10693 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
10694 query_str := query_str || ' AND v.planning_tp_type = 2 ';
10695 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
10696 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
10697 query_str := query_str || ' AND v.planning_tp_type = 1 ';
10698 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
10699 query_str := query_str || ' AND v.planning_tp_type = 1 ';
10700 END IF;
10701
10702 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
10703 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
10704 query_str := query_str || ' AND v.owning_tp_type = 2 ';
10705 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
10706 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
10707 query_str := query_str || ' AND v.owning_tp_type = 1 ';
10708 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
10709 query_str := query_str || ' AND v.owning_tp_type = 1 ';
10710 END IF;
10711
10712 --Bug #3411938
10713 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10714 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
10715 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
10716 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
10717 END IF;
10718
10719 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
10720 query_str := query_str || 'AND v.organization_id = :org_id ';
10721 ELSE
10722 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
10723 query_str := query_str || ' FROM org_access_view oav ' ;
10724 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
10725 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
10726 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
10727 END IF;
10728
10729 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
10730 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
10731 END IF;
10732
10733 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
10734 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
10735 END IF;
10736
10737 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10738 query_str := query_str || group_str || having_str || ' ' ;
10739 --Bug #3405473
10740 ELSE
10741 query_str := query_str || ' GROUP BY v.cost_group_id, ccg.cost_group ' ;
10742 END IF;
10743
10744 query_str := query_str || 'ORDER BY ccg.cost_group ';
10745
10746 ELSIF(
10747 (
10748 inv_mwb_globals.g_serial_from IS NOT NULL
10749 OR inv_mwb_globals.g_serial_from IS NOT NULL
10750 OR inv_mwb_globals.g_unit_number IS NOT NULL
10751 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
10752 )
10753 AND inv_mwb_globals.g_lpn_from IS NULL
10754 AND inv_mwb_globals.g_lpn_to IS NULL
10755 ) THEN
10756 IF (inv_mwb_globals.g_status_id IS NULL) THEN
10757 table_required := ' mtl_onhand_serial_mwb_v v ';
10758 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
10759 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
10760 END IF ; -- NSRIVAST, INVCONV
10761 ELSE
10762 table_required := ' mtl_onhand_serial_v v ';
10763 END IF;
10764
10765 --bug 6633612
10766 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
10767 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
10768 END IF;
10769 --bug 6633612
10770
10771 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
10772 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
10773 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
10774 query_str := 'SELECT DISTINCT v.cost_group_id, ccg.cost_group ';
10775 query_str := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
10776 query_str := query_str || 'WHERE ccg.cost_group_id = mos.cost_group_id ';
10777 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
10778 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
10779 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
10780 query_str :=
10781 query_str
10782 || 'SELECT DISTINCT v.cost_group_id, ccg.cost_group from'
10783 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
10784 || inv_mwb_globals.g_tree_serial_attr_query
10785 || ') msn, cst_cost_groups ccg, '
10786 || table_required;
10787 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
10788 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
10789 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
10790 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
10791 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
10792 query_str :=
10793 query_str
10794 || 'SELECT DISTINCT v.cost_group_id, ccg.cost_group from'
10795 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
10796 || inv_mwb_globals.g_tree_lot_attr_query
10797 || ') mln, cst_cost_groups ccg, '
10798 || table_required;
10799 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
10800 query_str := query_str || 'AND mln.lot_num = v.lot_number ';
10801 --BUG 7556505
10802 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10803 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10804 END IF;
10805 --BUG 7556505
10806 /* Bug 8396954 added below code for supplier_lot_number */
10807 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10808 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10809 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
10810 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
10811 END IF;
10812
10813 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10814 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
10815 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
10816 END IF;
10817
10818 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10819 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
10820 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
10821 END IF;
10822 /* End of Bug 8396954 */
10823 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
10824 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
10825 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
10826 query_str :=
10827 query_str
10828 || 'SELECT DISTINCT v.cost_group_id, ccg.cost_group from'
10829 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
10830 || inv_mwb_globals.g_tree_lot_attr_query
10831 || ') mln, '
10832 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
10833 || inv_mwb_globals.g_tree_serial_attr_query
10834 || ') msn, cst_cost_groups ccg, '
10835 || table_required;
10836 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
10837 query_str := query_str || 'AND mln.lot_num = v.lot_number ';
10838 --BUG 7556505
10839 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10840 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10841 END IF;
10842 --BUG 7556505
10843 /* Bug 8396954 added below code for supplier_lot_number */
10844 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10845 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10846 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
10847 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
10848 END IF;
10849
10850 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
10851 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
10852 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
10853 END IF;
10854
10855 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
10856 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
10857 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
10858 END IF;
10859 /* End of Bug 8396954 */
10860 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
10861 END IF;
10862
10863 --ER(3338592) Changes (If the user gives the value for the Qty then only
10864 --Group by clause comes in to effect)
10865
10866 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10867 group_str := ' GROUP BY v.organization_id ';
10868 END IF;
10869
10870 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
10871 query_str := query_str || 'AND v.subinventory_code = :sub ';
10872 --ER(3338592) Changes
10873 IF group_str IS NOT NULL THEN
10874 group_str := group_str || ' , v.subinventory_code ' ;
10875 END IF;
10876 END IF;
10877
10878 --bug 6633612
10879 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
10880 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
10881 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
10882 || ' AND rt.organization_id = mmt.organization_id '
10883 || ' AND rt.transaction_type = ''DELIVER'''
10884 || ' AND rt.destination_type_code = ''INVENTORY'''
10885 || ' AND mmt.transaction_id = v.last_transaction_id '
10886 || ' AND mmt.organization_id = v.organization_id ';
10887
10888 END IF;
10889 --bug 6633612
10890
10891 -- NSRIVAST, INVCONV, Start
10892 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10893 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
10894 END IF ;
10895 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
10896 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
10897 END IF ;
10898 -- NSRIVAST, INVCONV, End
10899
10900 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
10901 query_str := query_str || 'AND v.locator_id = :loc_id ';
10902 --ER(3338592) Changes
10903 IF group_str IS NOT NULL THEN
10904 group_str := group_str || ' , v.locator_id ' ;
10905 END IF;
10906 END IF;
10907
10908 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
10909 query_str := query_str || ' AND v.project_id = :pr_id ';
10910 --ER(3338592) Changes
10911 IF group_str IS NOT NULL THEN
10912 group_str := group_str || ' , v.project_id ' ;
10913 END IF;
10914 END IF;
10915
10916 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
10917 query_str := query_str || ' AND v.task_id = :ta_id ';
10918 --ER(3338592) Changes
10919 IF group_str IS NOT NULL THEN
10920 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
10921 END IF;
10922 END IF;
10923
10924 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10925 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
10926 END IF;
10927
10928 -- ER(9158529 client)
10929 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
10930 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
10931 END IF;
10932 -- ER(9158529 client)
10933
10934 -- ER(9158529)
10935 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
10936 query_str := query_str || ' AND v.inventory_item_id in '
10937 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
10938 || ' where organization_id = :organization_id '
10939 || ' and category_set_id = :category_set_id '
10940 || ' and category_id = nvl(:category_id, category_id)) ' ;
10941 END IF;
10942 -- ER(9158529)
10943
10944 --Bug # 3411938
10945 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10946 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
10947 END IF;
10948
10949 --ER(3338592) Changes
10950 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
10951 query_str := query_str || ' AND v.item_description LIKE :item_description ';
10952 END IF;
10953
10954 IF inv_mwb_globals.g_revision IS NOT NULL THEN
10955 query_str := query_str || 'AND v.revision = :rev ';
10956 --ER(3338592) Changes
10957 IF group_str IS NOT NULL THEN
10958 group_str := group_str || ' , v.revision ' ;
10959 END IF;
10960 END IF;
10961
10962 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
10963 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
10964 END IF;
10965
10966 --Bug #3405473
10967 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
10968 group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
10969 END IF;
10970
10971 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
10972 query_str := query_str || 'AND v.lot_number >= :lot_f ';
10973 END IF;
10974
10975 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
10976 query_str := query_str || 'AND v.lot_number <= :lot_t ';
10977 END IF;
10978
10979 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
10980 query_str := query_str || 'AND v.serial_number >= :serial_f ';
10981 END IF;
10982
10983 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
10984 query_str := query_str || 'AND v.serial_number <= :serial_t ';
10985 END IF;
10986
10987 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
10988 query_str := query_str || ' AND v.unit_number=:un_id ';
10989 END IF;
10990
10991 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
10992 -- from serial table (MSN)
10993 if (l_default_status_id is not null) then
10994 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10995 query_str := query_str || 'AND v.serial_status_id = :st_id ';
10996 END IF;
10997 else
10998 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10999 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
11000 query_str := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
11001 END IF;
11002 end if;
11003
11004 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
11005 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
11006 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
11007 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
11008 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
11009 query_str := query_str || ' AND planning_organization_id in ';
11010 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
11011 query_str := query_str || ' where vendor_id = :vendor_id )';
11012 END IF;*/
11013
11014 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
11015 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
11016 query_str := query_str || ' AND v.planning_tp_type = 2 ';
11017 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
11018 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
11019 query_str := query_str || ' AND v.planning_tp_type = 1 ';
11020 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
11021 query_str := query_str || ' AND v.planning_tp_type = 1 ';
11022 END IF;
11023
11024 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
11025 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
11026 query_str := query_str || ' AND v.owning_tp_type = 2 ';
11027 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
11028 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
11029 query_str := query_str || ' AND v.owning_tp_type = 1 ';
11030 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
11031 query_str := query_str || ' AND v.owning_tp_type = 1 ';
11032 END IF;
11033
11034 --Bug #3411938
11035 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11036 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
11037 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
11038 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
11039 END IF;
11040
11041 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11042 query_str := query_str || 'AND v.organization_id = :org_id ';
11043 ELSE
11044 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
11045 query_str := query_str || ' FROM org_access_view oav ' ;
11046 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
11047 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
11048 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
11049 END IF;
11050
11051 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
11052 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
11053 END IF;
11054
11055 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
11056 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
11057 END IF;
11058
11059 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11060 query_str := query_str || group_str || having_str || ' ' ;
11061 --Bug #3405473
11062 ELSE
11063 query_str := query_str || ' GROUP BY v.cost_group_id, ccg.cost_group ' ;
11064 END IF;
11065
11066 query_str := query_str || 'ORDER BY ccg.cost_group ';
11067
11068 -- Need to use both mtl_onhand_total_v and mtl_onhand_serial_v
11069 ELSIF(
11070 inv_mwb_globals.g_serial_from IS NULL
11071 AND inv_mwb_globals.g_serial_to IS NULL
11072 AND inv_mwb_globals.g_unit_number IS NULL
11073 AND inv_mwb_globals.g_status_id IS NOT NULL
11074 AND inv_mwb_globals.g_lpn_from IS NULL
11075 AND inv_mwb_globals.g_lpn_to IS NULL
11076 ) THEN
11077 IF (inv_mwb_globals.g_status_id IS NULL) THEN
11078 table_required := ' mtl_onhand_total_mwb_v v ';
11079 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
11080 -- table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
11081 ELSE
11082 table_required := ' mtl_onhand_total_v v ';
11083 END IF;
11084
11085 --bug 6633612
11086 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
11087 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
11088 END IF;
11089 --bug 6633612
11090
11091 query_str := 'SELECT DISTINCT cost_group_id, cost_group from (';
11092
11093 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
11094 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
11095 query_str := query_str || 'SELECT v.cost_group_id cost_group_id, ccg.cost_group cost_group ';
11096 query_str := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
11097 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
11098 ELSE
11099 query_str :=
11100 query_str
11101 || 'SELECT v.cost_group_id cost_group_id, ccg.cost_group cost_group FROM '
11102 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
11103 || inv_mwb_globals.g_tree_lot_attr_query
11104 || ') mln, cst_cost_groups ccg, '
11105 || table_required;
11106 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
11107 query_str := query_str || 'AND mln.lot_num = v.lot_number ';
11108 --BUG 7556505
11109 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
11110 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
11111 END IF;
11112 --BUG 7556505
11113 /* Bug 8396954 added below code for supplier_lot_number */
11114 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11115 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11116 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
11117 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
11118 END IF;
11119
11120 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11121 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
11122 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
11123 END IF;
11124
11125 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11126 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
11127 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
11128 END IF;
11129 /* End of Bug 8396954 */
11130 END IF;
11131
11132 --ER(3338592) Changes (If the user gives the value for the Qty then only
11133 --Group by clause comes in to effect)
11134
11135 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11136 group_str := ' GROUP BY v.organization_id ';
11137 END IF;
11138
11139 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
11140 query_str := query_str || 'AND v.subinventory_code = :sub ';
11141 --ER(3338592) Changes
11142 IF group_str IS NOT NULL THEN
11143 group_str := group_str || ' , v.subinventory_code ' ;
11144 END IF;
11145 END IF;
11146
11147 -- NSRIVAST, INVCONV, Start
11148 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
11149 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
11150 END IF ;
11151 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
11152 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
11153 END IF ;
11154 -- NSRIVAST, INVCONV, End
11155
11156 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
11157 query_str := query_str || 'AND v.locator_id = :loc_id ';
11158 --ER(3338592) Changes
11159 IF group_str IS NOT NULL THEN
11160 group_str := group_str || ' , v.locator_id ' ;
11161 END IF;
11162 END IF;
11163
11164 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
11165 query_str := query_str || ' AND v.project_id = :pr_id ';
11166 --ER(3338592) Changes
11167 IF group_str IS NOT NULL THEN
11168 group_str := group_str || ' , v.project_id ' ;
11169 END IF;
11170 END IF;
11171
11172 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
11173 query_str := query_str || ' AND v.task_id = :ta_id ';
11174 --ER(3338592) Changes
11175 IF group_str IS NOT NULL THEN
11176 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
11177 END IF;
11178 END IF;
11179
11180 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11181 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
11182 END IF;
11183
11184 -- ER(9158529 client)
11185 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
11186 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
11187 END IF;
11188 -- ER(9158529 client)
11189
11190 -- ER(9158529)
11191 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
11192 query_str := query_str || ' AND v.inventory_item_id in '
11193 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
11194 || ' where organization_id = :organization_id '
11195 || ' and category_set_id = :category_set_id '
11196 || ' and category_id = nvl(:category_id, category_id)) ' ;
11197 END IF;
11198 -- ER(9158529)
11199
11200 --Bug # 3411938
11201 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11202 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
11203 END IF;
11204
11205 --ER(3338592) Changes
11206 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
11207 query_str := query_str || ' AND v.item_description LIKE :item_description ';
11208 END IF;
11209
11210 IF inv_mwb_globals.g_revision IS NOT NULL THEN
11211 query_str := query_str || 'AND v.revision = :rev ';
11212 --ER(3338592) Changes
11213 IF group_str IS NOT NULL THEN
11214 group_str := group_str || ' , v.revision ' ;
11215 END IF;
11216 END IF;
11217
11218 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11219 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
11220 END IF;
11221
11222 --Bug #3405473
11223 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11224 group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
11225 END IF;
11226
11227 --bug 6633612
11228 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
11229 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
11230 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
11231 || ' AND rt.organization_id = mmt.organization_id '
11232 || ' AND rt.transaction_type = ''DELIVER'''
11233 || ' AND rt.destination_type_code = ''INVENTORY'''
11234 || ' AND mmt.transaction_id = v.create_transaction_id '
11235 || ' AND mmt.organization_id = v.organization_id ';
11236
11237 END IF;
11238 --bug 6633612
11239
11240 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11241 query_str := query_str || 'AND v.lot_number >= :lot_f ';
11242 END IF;
11243
11244 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11245 query_str := query_str || 'AND v.lot_number <= :lot_t ';
11246 END IF;
11247
11248 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
11249 query_str := query_str || ' AND v.unit_number=:un_id ';
11250 END IF;
11251
11252 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
11253 -- from onhand table (MOQD)
11254 if (l_default_status_id is not null) then
11255 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11256 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
11257 END IF;
11258 else
11259 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11260 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or ';
11261 query_str := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
11262 END IF;
11263 end if;
11264
11265 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
11266 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
11267 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
11268 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
11269 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
11270 query_str := query_str || ' AND planning_organization_id in ';
11271 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
11272 query_str := query_str || ' where vendor_id = :vendor_id )';
11273 END IF;*/
11274
11275 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
11276 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
11277 query_str := query_str || ' AND v.planning_tp_type = 2 ';
11278 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
11279 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
11280 query_str := query_str || ' AND v.planning_tp_type = 1 ';
11281 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
11282 query_str := query_str || ' AND v.planning_tp_type = 1 ';
11283 END IF;
11284
11285 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
11286 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
11287 query_str := query_str || ' AND v.owning_tp_type = 2 ';
11288 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
11289 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
11290 query_str := query_str || ' AND v.owning_tp_type = 1 ';
11291 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
11292 query_str := query_str || ' AND v.owning_tp_type = 1 ';
11293 END IF;
11294
11295 --Bug #3411938
11296 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11297 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
11298 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
11299 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
11300 END IF;
11301
11302 --query_str := query_str || 'AND mot.serial_number_control_code in (1,6) ';
11303 query_str := query_str || 'AND v.item_serial_control in (1,6) ';
11304
11305 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
11306 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
11307 END IF;
11308
11309 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
11310 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
11311 END IF;
11312
11313 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11314 query_str := query_str || group_str || having_str || ' ' ;
11315 --Bug #3405473
11316 ELSE
11317 query_str := query_str || ' GROUP BY v.cost_group_id, ccg.cost_group ' ;
11318 END IF;
11319
11320 query_str := query_str || 'UNION ';
11321
11322 --Reinitializing the variable
11323 having_str := ' HAVING 1=1 ' ;
11324 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
11325 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
11326 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
11327 query_str := query_str || 'SELECT v.cost_group_id, ccg.cost_group ';
11328 query_str := query_str || 'FROM cst_cost_groups ccg, mtl_onhand_serial_v v ';
11329 query_str := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
11330 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
11331 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
11332 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
11333 query_str :=
11334 query_str
11335 || 'SELECT v.cost_group_id, ccg.cost_group from'
11336 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
11337 || inv_mwb_globals.g_tree_lot_attr_query
11338 || ') mln, cst_cost_groups ccg, mtl_onhand_serial_v v ';
11339 --bug 6633612
11340 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
11341 query_str := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
11342 END IF;
11343 --bug 6633612
11344 query_str := query_str || 'WHERE ccg.cost_group_id = mos.cost_group_id ';
11345 query_str := query_str || 'AND mln.lot_num = v.lot_number ';
11346 --BUG 7556505
11347 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
11348 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
11349 END IF;
11350 --BUG 7556505
11351 /* Bug 8396954 added below code for supplier_lot_number */
11352 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11353 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11354 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
11355 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
11356 END IF;
11357
11358 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11359 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
11360 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
11361 END IF;
11362
11363 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11364 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
11365 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
11366 END IF;
11367 /* End of Bug 8396954 */
11368 END IF;
11369
11370 --ER(3338592) Changes (If the user gives the value for the Qty then only
11371 --Group by clause comes in to effect)
11372
11373 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11374 group_str := ' GROUP BY v.organization_id ';
11375 END IF;
11376
11377 --bug 6633612
11378 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
11379 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
11380 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
11381 || ' AND rt.organization_id = mmt.organization_id '
11382 || ' AND rt.transaction_type = ''DELIVER'''
11383 || ' AND rt.destination_type_code = ''INVENTORY'''
11384 || ' AND mmt.transaction_id = v.last_transaction_id '
11385 || ' AND mmt.organization_id = v.organization_id ';
11386
11387 END IF;
11388 --bug 6633612
11389
11390 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
11391 query_str := query_str || 'AND v.subinventory_code = :sub ';
11392 --ER(3338592) Changes
11393 IF group_str IS NOT NULL THEN
11394 group_str := group_str || ' , v.subinventory_code ' ;
11395 END IF;
11396 END IF;
11397
11398 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
11399 query_str := query_str || 'AND v.locator_id = :loc_id ';
11400 --ER(3338592) Changes
11401 IF group_str IS NOT NULL THEN
11402 group_str := group_str || ' , v.locator_id ' ;
11403 END IF;
11404 END IF;
11405
11406 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11407 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
11408 END IF;
11409
11410 -- ER(9158529 client)
11411 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
11412 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
11413 END IF;
11414 -- ER(9158529 client)
11415
11416 -- ER(9158529)
11417 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
11418 query_str := query_str || ' AND v.inventory_item_id in '
11419 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
11420 || ' where organization_id = :organization_id '
11421 || ' and category_set_id = :category_set_id '
11422 || ' and category_id = nvl(:category_id, category_id)) ' ;
11423 END IF;
11424 -- ER(9158529)
11425
11426 --Bug # 3411938
11427 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11428 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
11429 END IF;
11430
11431 --ER(3338592) Changes
11432 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
11433 query_str := query_str || ' AND v.item_description LIKE :item_description ';
11434 END IF;
11435
11436 IF inv_mwb_globals.g_revision IS NOT NULL THEN
11437 query_str := query_str || 'AND v.revision = :rev ';
11438 --ER(3338592) Changes
11439 IF group_str IS NOT NULL THEN
11440 group_str := group_str || ' , v.revision ' ;
11441 END IF;
11442 END IF;
11443
11444 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11445 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
11446 END IF;
11447
11448 --Bug #3405473
11449 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11450 group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
11451 END IF;
11452
11453 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11454 query_str := query_str || 'AND v.lot_number >= :lot_f ';
11455 END IF;
11456
11457 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11458 query_str := query_str || 'AND v.lot_number <= :lot_t ';
11459 END IF;
11460
11461 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11462 query_str := query_str || 'AND v.serial_number >= :serial_f ';
11463 END IF;
11464
11465 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11466 query_str := query_str || 'AND v.serial_number <= :serial_t ';
11467 END IF;
11468
11469 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11470 query_str := query_str || 'AND v.organization_id = :org_id ';
11471 ELSE
11472 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
11473 query_str := query_str || ' FROM org_access_view oav ' ;
11474 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
11475 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
11476 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
11477 END IF;
11478
11479 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
11480 -- from serial table (MSN)
11481 if (l_default_status_id is not null) then
11482 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11483 query_str := query_str || 'AND v.serial_status_id = :st_id ';
11484 END IF;
11485 else
11486 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11487 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
11488 query_str := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
11489 END IF;
11490 end if;
11491
11492 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
11493 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
11494 END IF;
11495
11496 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
11497 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
11498 END IF;
11499
11500 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11501 query_str := query_str || group_str || having_str || ' ' ;
11502 --Bug #3405473
11503 ELSE
11504 query_str := query_str || ' GROUP BY v.cost_group_id, ccg.cost_group ' ;
11505 END IF;
11506 --End of ER(3338592) Changes
11507
11508 query_str := query_str || ') GROUP BY cost_group_id, cost_group '; -- line was commented earlier, NSRIVAST
11509 query_str := query_str || 'ORDER BY cost_group ';
11510
11511 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
11512 OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
11513 IF (inv_mwb_globals.g_status_id IS NULL) THEN
11514 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
11515 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
11516 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
11517 END IF; -- NSRIVAST, INVCONV
11518 ELSE
11519 table_required := ' mtl_onhand_new_lpn_v mol ';
11520 END IF;
11521
11522 query_str := 'SELECT DISTINCT mol.cost_group_id, ccg.cost_group ';
11523 query_str := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
11524
11525 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
11526 OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
11527 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
11528 query_str := query_str || ' WHERE 1=1 ';
11529
11530 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
11531 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
11532 END IF;
11533
11534 -- NSRIVAST, INVCONV, Start
11535 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
11536 query_str := query_str || ' AND grade_code = :grade_f ' ;
11537 END IF ;
11538 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
11539 query_str := query_str || ' AND grade_code = :grade_c ' ;
11540 END IF ;
11541 -- NSRIVAST, INVCONV, End
11542
11543 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
11544 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
11545 END IF;
11546
11547 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11548 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
11549 END IF;
11550
11551 IF inv_mwb_globals.g_lpn_from IS NOT NULL
11552 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
11553 IF inv_mwb_globals.g_lpn_from IS NOT NULL
11554 AND inv_mwb_globals.g_lpn_to IS NULL THEN
11555 query_str := query_str || ' and license_plate_number >= :lpn_f ';
11556 ELSIF inv_mwb_globals.g_lpn_from IS NULL
11557 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
11558 query_str := query_str || ' and license_plate_number <= :lpn_t ';
11559 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
11560 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
11561 --bugfix#3646484
11562 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
11563 --User is querying for single LPN so converted the range query to equality query
11564 query_str := query_str || 'and license_plate_number = :lpn_f ';
11565 ELSE
11566 query_str := query_str || ' and license_plate_number >= :lpn_f ';
11567 query_str := query_str || ' and license_plate_number <= :lpn_t ';
11568 END IF;
11569 END IF;
11570 END IF;
11571
11572 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
11573 END IF;
11574
11575 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
11576 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
11577 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
11578 query_str := query_str || 'WHERE 1=1 ';
11579 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
11580 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
11581 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
11582 query_str :=
11583 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
11584 || ') msn ';
11585 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
11586 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
11587 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
11588 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
11589 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
11590 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
11591 --BUG 7556505
11592 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
11593 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
11594 END IF;
11595 --BUG 7556505
11596 /* Bug 8396954 added below code for supplier_lot_number */
11597 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11598 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11599 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
11600 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
11601 END IF;
11602
11603 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11604 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
11605 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
11606 END IF;
11607
11608 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11609 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
11610 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
11611 END IF;
11612 /* End of Bug 8396954 */
11613 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
11614 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
11615 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
11616 query_str :=
11617 query_str
11618 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
11619 || inv_mwb_globals.g_tree_lot_attr_query
11620 || ') mln '
11621 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
11622 || inv_mwb_globals.g_tree_serial_attr_query
11623 || ') msn ';
11624 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
11625 --BUG 7556505
11626 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
11627 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
11628 END IF;
11629 --BUG 7556505
11630 /* Bug 8396954 added below code for supplier_lot_number */
11631 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11632 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11633 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
11634 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
11635 END IF;
11636
11637 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11638 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
11639 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
11640 END IF;
11641
11642 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11643 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
11644 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
11645 END IF;
11646 /* End of Bug 8396954 */
11647 query_str := query_str || 'AND msn.serial_num = serial_number ';
11648 END IF;
11649
11650 query_str := query_str || 'AND ccg.cost_group_id = mol.cost_group_id ';
11651
11652 --ER(3338592) Changes (If the user gives the value for the Qty then only
11653 --Group by clause comes in to effect)
11654
11655 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11656 group_str := ' GROUP BY mol.organization_id ';
11657 END IF;
11658
11659 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
11660 query_str := query_str || 'AND subinventory_code = :sub ';
11661 --ER(3338592) Changes
11662 IF group_str IS NOT NULL THEN
11663 group_str := group_str || ' , subinventory_code ' ;
11664 END IF;
11665 END IF;
11666
11667 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
11668 query_str := query_str || 'AND locator_id = :loc_id ';
11669 --ER(3338592) Changes
11670 IF group_str IS NOT NULL THEN
11671 group_str := group_str || ' , locator_id ' ;
11672 END IF;
11673 END IF;
11674
11675 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
11676 query_str := query_str || ' AND project_id = :pr_id ';
11677 --ER(3338592) Changes
11678 IF group_str IS NOT NULL THEN
11679 group_str := group_str || ' , project_id ' ;
11680 END IF;
11681 END IF;
11682
11683 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
11684 query_str := query_str || ' AND task_id = :ta_id ';
11685 --ER(3338592) Changes
11686 IF group_str IS NOT NULL THEN
11687 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
11688 END IF;
11689 END IF;
11690
11691 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11692 query_str := query_str || 'AND inventory_item_id = :item_id ';
11693 END IF;
11694
11695 -- ER(9158529 client)
11696 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
11697 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
11698 END IF;
11699 -- ER(9158529 client)
11700
11701 -- ER(9158529)
11702 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
11703 query_str := query_str || ' AND inventory_item_id in '
11704 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
11705 || ' where organization_id = :organization_id '
11706 || ' and category_set_id = :category_set_id '
11707 || ' and category_id = nvl(:category_id, category_id)) ' ;
11708 END IF;
11709 -- ER(9158529)
11710
11711 --Bug # 3411938
11712 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11713 group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
11714 END IF;
11715
11716 --ER(3338592) Changes
11717 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
11718 query_str := query_str || ' AND item_description LIKE :item_description ';
11719 END IF;
11720
11721 IF inv_mwb_globals.g_revision IS NOT NULL THEN
11722 query_str := query_str || 'AND revision = :rev ';
11723 --ER(3338592) Changes
11724 IF group_str IS NOT NULL THEN
11725 group_str := group_str || ' , revision ' ;
11726 END IF;
11727 END IF;
11728
11729 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11730 query_str := query_str || 'AND mol.cost_group_id = :cg_id ';
11731 END IF;
11732
11733 --Bug #3405473
11734 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11735 group_str := group_str ||' , mol.cost_group_id, ccg.cost_group ';
11736 END IF;
11737
11738 IF inv_mwb_globals.g_lpn_from IS NOT NULL
11739 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
11740 query_str := query_str || ' AND mol.outermost_lpn_id = x.outermost_lpn_id ';
11741 END IF;
11742
11743 --ER(3338592) Changes
11744 IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
11745 IF group_str IS NOT NULL THEN
11746 group_str := group_str || ' , lpn ' ;
11747 END IF;
11748 END IF;
11749
11750 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11751 query_str := query_str || 'AND lot_number >= :lot_f ';
11752 END IF;
11753
11754 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11755 query_str := query_str || 'AND lot_number <= :lot_t ';
11756 END IF;
11757
11758 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11759 query_str := query_str || 'AND serial_number >= :serial_f ';
11760 END IF;
11761
11762 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11763 query_str := query_str || 'AND serial_number <= :serial_t ';
11764 END IF;
11765
11766 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
11767 query_str := query_str || ' AND unit_number=:un_id ';
11768 END IF;
11769
11770 /*LPN Status Project */
11771 IF (l_default_status_id IS NOT NULL) THEN
11772 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11773 query_str := query_str || 'AND onhand_status_id = :st_id ';
11774 END IF;
11775 ELSE
11776 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11777 query_str := query_str || 'AND (mol.subinventory_status_id = :st_id or mol.locator_status_id = :st_id or ';
11778 query_str := query_str || 'mol.lot_status_id = :st_id or mol.serial_status_id = :st_id) ';
11779 END IF;
11780 END IF;
11781 /*End of fix for LPN Status Project */
11782
11783 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
11784 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
11785 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
11786 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
11787 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
11788 query_str := query_str || ' AND planning_organization_id in ';
11789 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
11790 query_str := query_str || ' where vendor_id = :vendor_id )';
11791 END IF;*/
11792
11793 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
11794 query_str := query_str || ' AND planning_organization_id = :plan_org ';
11795 query_str := query_str || ' AND planning_tp_type = 2 ';
11796 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
11797 query_str := query_str || ' AND planning_organization_id = :plan_org ';
11798 query_str := query_str || ' AND planning_tp_type = 1 ';
11799 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
11800 query_str := query_str || ' AND planning_tp_type = 1 ';
11801 END IF;
11802
11803 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
11804 query_str := query_str || ' AND owning_organization_id = :own_org ';
11805 query_str := query_str || ' AND owning_tp_type = 2 ';
11806 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
11807 query_str := query_str || ' AND owning_organization_id = :own_org ';
11808 query_str := query_str || ' AND owning_tp_type = 1 ';
11809 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
11810 query_str := query_str || ' AND owning_tp_type = 1 ';
11811 END IF;
11812
11813 --Bug #3411938
11814 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11815 group_str := group_str || ' , planning_organization_id, planning_tp_type ';
11816 group_str := group_str || ' , owning_organization_id, owning_tp_type ';
11817 group_str := group_str || ' , item_lot_control, item_serial_control ';
11818 END IF;
11819
11820 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
11821 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
11822 END IF;
11823
11824 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
11825 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
11826 END IF;
11827
11828 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
11829 query_str := query_str || group_str || having_str || ' ' ;
11830 --Bug #3405473
11831 ELSE
11832 query_str := query_str || ' GROUP BY mol.cost_group_id, ccg.cost_group ' ;
11833 END IF;
11834
11835 --query_str := query_str || 'GROUP BY mol.cost_group_id, ccg.cost_group ';
11836 query_str := query_str || 'ORDER BY ccg.cost_group ';
11837
11838 END IF;
11839
11840 -- Enable this during debugging
11841 inv_trx_util_pub.trace(query_str, 'Add- Cgs Material Workbench', 9);
11842 --trace1(query_str, 'add_cgs', 9);
11843
11844 --RS
11845 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
11846
11847 inv_mwb_globals.g_last_query := query_str;
11848
11849 query_hdl := DBMS_SQL.open_cursor;
11850 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
11851
11852
11853 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11854 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
11855 END IF;
11856
11857 IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
11858 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
11859 END IF;
11860
11861 IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
11862 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
11863 END IF;
11864
11865 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11866 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
11867 END IF;
11868
11869 -- ER(9158529 client)
11870 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
11871 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
11872 END IF;
11873 -- ER(9158529 client)
11874
11875 -- ER(9158529)
11876 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
11877 DBMS_SQL.bind_variable(query_hdl, 'organization_id', inv_mwb_globals.g_organization_id);
11878 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
11879 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
11880 END IF;
11881 -- ER(9158529)
11882
11883 IF inv_mwb_globals.g_revision IS NOT NULL THEN
11884 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
11885 END IF;
11886
11887 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11888 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
11889 END IF;
11890
11891 --BUG 7556505
11892 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
11893 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
11894 END IF;
11895 --BUG 7556505
11896
11897 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11898 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
11899 END IF;
11900
11901 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11902 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
11903 END IF;
11904
11905 /* Bug 8396954 added below code for supplier_lot_number */
11906 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11907 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11908 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
11909 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
11910 END IF;
11911
11912 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
11913 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
11914 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
11915 END IF;
11916
11917 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
11918 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
11919 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
11920 END IF;
11921 /* End of Bug 8396954 */
11922
11923 --bug 6633612
11924 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
11925 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
11926 END IF;
11927 --bug 6633612
11928
11929 -- NSRIVAST, INVCONV, Start
11930 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
11931 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
11932 END IF;
11933 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
11934 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
11935 END IF;
11936 -- NSRIVAST, INVCONV, End
11937
11938 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11939 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
11940 END IF;
11941
11942 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11943 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
11944 END IF;
11945
11946 --bugfix#3646484
11947 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL) AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)) THEN
11948 --User is querying for single LPN so converted the range query to equality query
11949 --So it is enought to bind the from lpn alone
11950 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
11951 ELSE
11952 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
11953 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
11954 END IF;
11955
11956 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
11957 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
11958 END IF;
11959 END IF;
11960
11961 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11962 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
11963 END IF;
11964
11965 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
11966 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
11967 END IF;
11968
11969 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
11970 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
11971 END IF;
11972
11973 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
11974 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
11975 END IF;
11976
11977 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
11978 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
11979 END IF;
11980
11981 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
11982 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
11983 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
11984 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
11985 END IF;*/
11986 IF (inv_mwb_globals.g_owning_qry_mode = 4)
11987 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
11988 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
11989 END IF;
11990
11991 IF (inv_mwb_globals.g_planning_query_mode = 4)
11992 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
11993 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
11994 END IF;
11995
11996 --ER(3338592) Changes
11997 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
11998 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
11999 END IF;
12000
12001 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
12002 dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
12003 END IF;
12004
12005 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
12006 dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
12007 END IF;
12008 --End of ER(3338592) Changes
12009
12010 --Bug #3411938
12011 IF inv_mwb_globals.g_organization_id IS NULL THEN
12012 IF inv_mwb_globals.g_responsibility_id IS NOT NULL THEN
12013 dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
12014 END IF;
12015
12016 IF inv_mwb_globals.g_resp_application_id IS NOT NULL THEN
12017 dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
12018 END IF;
12019 END IF;
12020
12021
12022 DBMS_SQL.define_column(query_hdl, 1, cg_id);
12023 DBMS_SQL.define_column(query_hdl, 2, cg, 10);
12024 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
12025
12026 LOOP
12027 -- fetch a row
12028 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
12029 -- fetch columns from the row
12030 DBMS_SQL.column_value(query_hdl, 1, cg_id);
12031 DBMS_SQL.column_value(query_hdl, 2, cg);
12032
12033 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
12034 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
12035 x_node_tbl(i).DEPTH := 1;
12036 x_node_tbl(i).label := cg;
12037 x_node_tbl(i).icon := 'inv_cgrp';
12038 x_node_tbl(i).VALUE := TO_CHAR(cg_id);
12039 x_node_tbl(i).TYPE := 'COST_GROUP';
12040 i := i + 1;
12041 END IF;
12042
12043 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
12044 j := j + 1;
12045 ELSE
12046 EXIT;
12047 END IF;
12048 END LOOP;
12049
12050 DBMS_SQL.close_cursor(query_hdl); -- close cursor
12051 x_node_value := j;
12052 x_tbl_index := i;
12053 EXCEPTION
12054 WHEN NO_DATA_FOUND THEN
12055 NULL;
12056 WHEN OTHERS THEN
12057 RAISE;
12058 END add_cgs;
12059
12060 PROCEDURE add_lpns(
12061 /* , inv_mwb_globals.g_inserted_under_org IN VARCHAR2 DEFAULT 'N'*/
12062 x_node_value IN OUT NOCOPY NUMBER
12063 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
12064 , x_tbl_index IN OUT NOCOPY NUMBER
12065 ) IS
12066 query_str VARCHAR2(8000);
12067 query_hdl NUMBER;
12068 rows_processed NUMBER;
12069 lpn wms_license_plate_numbers.license_plate_number%TYPE;
12070 lpn_id wms_license_plate_numbers.lpn_id%TYPE;
12071 item_id wms_license_plate_numbers.inventory_item_id%TYPE;
12072 item mtl_system_items_kfv.concatenated_segments%TYPE;
12073 select_from_str VARCHAR2(4000);
12074 where_str VARCHAR2(4000);
12075 i NUMBER := x_tbl_index;
12076 j NUMBER := x_node_value;
12077 is_bind_required BOOLEAN := TRUE;
12078 table_required VARCHAR2(200);
12079 is_grade_t BOOLEAN DEFAULT FALSE; -- NSRIVAST, INVCONV
12080 receipt_source_code VARCHAR2(30);
12081 lpn_from_id wms_license_plate_numbers.lpn_id%TYPE;
12082 lpn_to_id wms_license_plate_numbers.lpn_id%TYPE;
12083
12084 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_LPNS';
12085
12086 l_default_status_id NUMBER; -- LPN Status Project
12087
12088 BEGIN
12089 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
12090 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered'||inv_mwb_globals.g_inserted_under_org);
12091
12092 /* LPN Status Project */
12093 IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
12094 IF (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) THEN
12095 l_default_status_id := inv_cache.org_rec.default_status_id;
12096 END IF;
12097 ELSIF (inv_mwb_globals.g_tree_organization_id IS NOT NULL) THEN
12098 IF (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) THEN
12099 l_default_status_id := inv_cache.org_rec.default_status_id;
12100 END IF;
12101 END IF;
12102
12103 IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN -- If add_lpn called from node_expanded of document number.
12104
12105 IF inv_mwb_globals.g_tree_doc_type_id = 1 THEN
12106 return;
12107 END IF;
12108
12109 select_from_str :=
12110 ' SELECT DISTINCT wlpn.license_plate_number
12111 , wlpn.lpn_id
12112 FROM rcv_shipment_lines rsl
12113 , mtl_system_items_kfv msik
12114 , wms_license_plate_numbers wlpn ';
12115
12116 where_str :=
12117 ' WHERE 1 = 1
12118 AND rsl.item_id = msik.inventory_item_id
12119 AND msik.organization_id = rsl.to_organization_id
12120 AND wlpn.lpn_id = rsl.asn_lpn_id
12121 AND rsl.to_organization_id = :to_org_id
12122 AND rsl.shipment_header_id = :shipment_header_id ';
12123
12124
12125 IF inv_mwb_globals.g_serial_from IS NOT NULL
12126 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
12127 select_from_str := select_from_str || ' , rcv_serials_supply rss ';
12128 where_str := where_str || ' AND rss.shipment_line_id = rsl.shipment_line_id ';
12129 END IF;
12130
12131 IF (inv_mwb_globals.g_lot_from is NOT NULL
12132 OR inv_mwb_globals.g_lot_to is NOT NULL) THEN
12133 -- for bug 8420783
12134 -- for bug 8414727
12135 --AND (inv_mwb_globals.g_serial_from IS NULL
12136 --OR inv_mwb_globals.g_serial_to IS NULL) THEN
12137 -- end of bug 8414727
12138 -- end of bug 8420783
12139 select_from_str := select_from_str || ' , rcv_lots_supply rls ';
12140 where_str := where_str || ' AND rls.shipment_line_id = rsl.shipment_line_id ';
12141 END IF;
12142
12143 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12144 where_str := where_str || ' AND msik.inventory_item_id = :item_id ';
12145 END IF;
12146
12147 -- ER(9158529 client)
12148 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
12149 where_str := where_str || ' AND msik.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
12150 END IF;
12151 -- ER(9158529 client)
12152
12153 -- ER(9158529)
12154 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
12155 where_str := where_str || ' AND msik.inventory_item_id in '
12156 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
12157 || ' where organization_id = :organization_id '
12158 || ' and category_set_id = :category_set_id '
12159 || ' and category_id = nvl(:category_id, category_id)) ' ;
12160 END IF;
12161 -- ER(9158529)
12162
12163 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
12164 where_str := where_str || ' AND rsl.asn_lpn_id = :tree_lpn_id ';
12165 END IF;
12166
12167 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
12168 inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
12169 inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
12170 where_str := where_str ||' AND rsl.asn_lpn_id = :inb_lpn_from_id';
12171 END IF;
12172
12173 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
12174 inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
12175 where_str := where_str ||' AND wlpn.license_plate_number >= :inb_lpn_from';
12176 END IF;
12177
12178 IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
12179 inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
12180 where_str := where_str ||' AND wlpn.license_plate_number <= :inb_lpn_to';
12181 END IF;
12182
12183 IF inv_mwb_globals.g_lot_from IS NOT NULL
12184 AND inv_mwb_globals.g_lot_to IS NOT NULL
12185 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
12186 where_str := where_str || ' AND rls.lot_num = :lot_from ';
12187 END IF;
12188
12189 IF inv_mwb_globals.g_lot_from IS NOT NULL
12190 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
12191 where_str := where_str || ' AND rls.lot_num >= :lot_from ';
12192 END IF;
12193
12194 IF inv_mwb_globals.g_lot_to IS NOT NULL
12195 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
12196 -- for the bug 9374342
12197 where_str := where_str || ' AND rls.lot_num <= :lot_to ';
12198 -- end of the bug 9374342
12199 END IF;
12200
12201 IF inv_mwb_globals.g_serial_from IS NOT NULL
12202 AND inv_mwb_globals.g_serial_to IS NOT NULL
12203 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
12204 where_str := where_str || ' AND rss.serial_num = :serial_from ';
12205 END IF;
12206
12207 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
12208 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
12209 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
12210 select_from_str := select_from_str || ', mtl_lot_numbers mln1 ';
12211 IF NOT ((inv_mwb_globals.g_lot_from IS NOT NULL
12212 OR inv_mwb_globals.g_lot_to IS NOT NULL )
12213 AND (inv_mwb_globals.g_serial_from IS NULL
12214 OR inv_mwb_globals.g_serial_to IS NULL)) THEN
12215 select_from_str := select_from_str || ' , rcv_lots_supply rls ';
12216 where_str := where_str || ' AND rls.shipment_line_id = rsl.shipment_line_id ';
12217 END IF;
12218
12219 where_str := where_str || ' AND rls.lot_num = mln1.lot_number';
12220
12221 /* Bug 8396954 added below code for supplier_lot_number */
12222 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12223 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12224 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
12225 where_str := where_str || ' AND mln1.supplier_lot_number = :supplier_lot_from ';
12226 END IF;
12227
12228 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12229 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
12230 where_str := where_str || ' AND mln1.supplier_lot_number >= :supplier_lot_from ';
12231 END IF;
12232
12233 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12234 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
12235 where_str := where_str || ' AND mln1.supplier_lot_number <= :supplier_lot_to ';
12236 END IF;
12237 /* End of Bug 8396954 */
12238 END IF;
12239 /* End of Bug 8396954 */
12240
12241 IF inv_mwb_globals.g_serial_from IS NOT NULL
12242 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
12243 where_str := where_str || ' AND rss.serial_num >= :serial_from ';
12244 END IF;
12245
12246 IF inv_mwb_globals.g_serial_to IS NOT NULL
12247 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
12248 where_str := where_str || ' AND rss.serial_num <= :serial_to ';
12249 END IF;
12250
12251 IF inv_mwb_globals.g_revision IS NOT NULL THEN
12252 where_str := where_str || ' AND rsl.item_revision = :item_revision ';
12253 END IF;
12254
12255 IF inv_mwb_globals.g_inventory_item_id IS NULL
12256 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
12257 where_str := where_str || ' AND msik.description like :item_description ';
12258 END IF;
12259
12260
12261 query_str := select_from_str || where_str;
12262
12263 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
12264 inv_mwb_globals.g_last_query := query_str;
12265
12266 query_hdl := DBMS_SQL.open_cursor;
12267 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
12268
12269 DBMS_SQL.bind_variable(query_hdl, 'to_org_id', NVL(inv_mwb_globals.g_organization_id
12270 , inv_mwb_globals.g_tree_organization_id));
12271 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
12272
12273 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12274 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
12275 END IF;
12276
12277 -- ER(9158529 client)
12278 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
12279 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
12280 END IF;
12281 -- ER(9158529 client)
12282
12283 -- ER(9158529)
12284 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
12285 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
12286 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
12287 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
12288 END IF;
12289 -- ER(9158529)
12290
12291 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
12292 DBMS_SQL.bind_variable(query_hdl, 'tree_lpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
12293 END IF;
12294
12295 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
12296 inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
12297 inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
12298 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
12299 END IF;
12300
12301 IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
12302 inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
12303 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
12304 END IF;
12305
12306 IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
12307 inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
12308 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
12309 END IF;
12310
12311 IF inv_mwb_globals.g_lot_from IS NOT NULL
12312 AND inv_mwb_globals.g_lot_to IS NOT NULL
12313 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
12314 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
12315 END IF;
12316
12317 IF inv_mwb_globals.g_lot_from IS NOT NULL
12318 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
12319 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
12320 END IF;
12321
12322 IF inv_mwb_globals.g_lot_to IS NOT NULL
12323 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
12324 DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
12325 END IF;
12326
12327 /* Bug 8396954 added below code for supplier_lot_number */
12328 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
12329 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
12330 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12331 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12332 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
12333 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
12334 END IF;
12335
12336 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12337 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
12338 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
12339 END IF;
12340
12341 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12342 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
12343 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
12344 END IF;
12345 END IF;
12346 /* End of Bug 8396954 */
12347
12348 IF inv_mwb_globals.g_serial_from IS NOT NULL
12349 AND inv_mwb_globals.g_serial_to IS NOT NULL
12350 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
12351 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
12352 END IF;
12353
12354 IF inv_mwb_globals.g_serial_from IS NOT NULL
12355 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
12356 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
12357 END IF;
12358
12359 IF inv_mwb_globals.g_serial_to IS NOT NULL
12360 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
12361 DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
12362 END IF;
12363
12364 IF inv_mwb_globals.g_revision IS NOT NULL THEN
12365 DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_revision);
12366 END IF;
12367
12368 IF inv_mwb_globals.g_inventory_item_id IS NULL
12369 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
12370 DBMS_SQL.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
12371 END IF;
12372
12373
12374 DBMS_SQL.define_column(query_hdl, 1, lpn, 30);
12375 DBMS_SQL.define_column(query_hdl, 2, lpn_id);
12376
12377 BEGIN
12378 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
12379 EXCEPTION
12380 WHEN NO_DATA_FOUND THEN
12381 NULL;
12382 RETURN;
12383 END;
12384
12385 LOOP
12386 -- fetch a row
12387 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
12388 -- fetch columns from the row
12389 DBMS_SQL.column_value(query_hdl, 1, lpn);
12390 DBMS_SQL.column_value(query_hdl, 2, lpn_id);
12391
12392 IF (inv_mwb_globals.g_tree_node_type = 'LPN'
12393 and inv_mwb_globals.g_tree_node_value = lpn_id) then
12394 return;
12395 END IF;
12396
12397 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
12398 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
12399 x_node_tbl(i).DEPTH := 1;
12400 x_node_tbl(i).label := lpn;
12401 x_node_tbl(i).icon := 'inv_licn';
12402 x_node_tbl(i).VALUE := TO_CHAR(lpn_id);
12403 x_node_tbl(i).TYPE := 'LPN';
12404 i := i + 1;
12405 END IF;
12406
12407 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
12408 j := j + 1;
12409 ELSE
12410 EXIT;
12411 END IF;
12412 END LOOP;
12413
12414 DBMS_SQL.close_cursor(query_hdl); -- close cursor
12415 x_node_value := j;
12416 x_tbl_index := i;
12417
12418 RETURN;
12419 END IF;
12420
12421
12422
12423
12424
12425
12426 -- NSRIVAST, INVCONV, Start
12427 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
12428 is_grade_t := TRUE ;
12429 END IF ;
12430 -- NSRIVAST, INVCONV, End
12431
12432 -- If attributes relating to contents of an LPN are not specified then
12433 -- display all the LPNs in that location with the appropriate from
12434 -- and to LPN criteria
12435 IF inv_mwb_globals.g_inventory_item_id IS NULL
12436 AND inv_mwb_globals.g_client_code IS NULL -- ER(9158529 client)
12437 AND inv_mwb_globals.g_revision IS NULL
12438 AND inv_mwb_globals.g_category_set_id IS NULL -- ER(9158529)
12439 AND inv_mwb_globals.g_category_id IS NULL -- ER(9158529)
12440 AND inv_mwb_globals.g_parent_lot IS NULL --BUG 7556505
12441 AND inv_mwb_globals.g_lot_from IS NULL
12442 AND inv_mwb_globals.g_lot_to IS NULL
12443 AND inv_mwb_globals.g_supplier_lot_from IS NULL -- Bug 8396954
12444 AND inv_mwb_globals.g_supplier_lot_to IS NULL -- Bug 8396954
12445 AND inv_mwb_globals.g_serial_from IS NULL
12446 AND inv_mwb_globals.g_serial_to IS NULL
12447 AND inv_mwb_globals.g_cost_group_id IS NULL
12448 AND inv_mwb_globals.g_status_id IS NULL
12449 AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
12450 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
12451 AND inv_mwb_globals.g_unit_number IS NULL
12452 AND inv_mwb_globals.g_project_id IS NULL
12453 AND inv_mwb_globals.g_task_id IS NULL
12454 AND inv_mwb_globals.g_planning_org IS NULL
12455 AND inv_mwb_globals.g_owning_org IS NULL
12456 AND(inv_mwb_globals.g_planning_query_mode IS NULL
12457 OR inv_mwb_globals.g_planning_query_mode = 1)
12458 AND(inv_mwb_globals.g_owning_qry_mode IS NULL
12459 OR inv_mwb_globals.g_owning_qry_mode = 1)
12460 --ER(3338592) Changes
12461 AND inv_mwb_globals.g_item_description IS NULL THEN
12462 --ER(3338592) Changes
12463
12464 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12465 query_str := 'SELECT license_plate_number lpn, lpn_id, inventory_item_id ';
12466 query_str := query_str || ' from wms_license_plate_numbers wln where lpn_id in ';
12467 query_str := query_str || ' (select outermost_lpn_id ';
12468 query_str := query_str || ' FROM wms_license_plate_numbers mol WHERE 1=1 ';
12469
12470 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12471 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12472 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12473 query_str := query_str || ' AND mol.subinventory_code is null AND mol.locator_id is null ';
12474 END IF;
12475 --Bug#3191526
12476 query_str := query_str || ' AND lpn_context = 3 ';
12477 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
12478 query_str := query_str || ' AND (mol.lpn_context=1 OR mol.lpn_context=9 OR mol.lpn_context=11 OR mol.lpn_context=8 ) '; --12984304
12479 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
12480 query_str := query_str || 'AND mol.lpn_context = 1 ';
12481 ELSIF inv_mwb_globals.g_prepacked <> 1
12482 AND inv_mwb_globals.g_prepacked <> 999 THEN
12483 query_str := query_str || 'AND mol.lpn_context = :prepacked ';
12484 END IF;
12485
12486 IF inv_mwb_globals.g_locator_controlled = 2 THEN
12487 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12488 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12489 --don't add the below locator id not null check
12490 NULL;
12491 ELSE
12492 query_str := query_str || 'AND mol.locator_id IS NOT NULL ';
12493 END IF;
12494 ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
12495 query_str := query_str || 'AND mol.locator_id IS NULL ';
12496 END IF;
12497
12498
12499 -- NSRIVAST, INVCONV, Start
12500 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12501 query_str := query_str || ' AND grade_code = :grade_f ' ;
12502 END IF ;
12503 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
12504 query_str := query_str || ' AND grade_code = :grade_c ' ;
12505 END IF ;
12506 -- NSRIVAST, INVCONV, End
12507
12508 IF inv_mwb_globals.g_locator_id IS NOT NULL
12509 OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
12510 query_str := query_str || 'AND mol.locator_id = :loc_id ';
12511 END IF;
12512
12513 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
12514 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
12515 query_str := query_str || 'AND mol.subinventory_code = :sub ';
12516 END IF;
12517
12518 IF inv_mwb_globals.g_organization_id IS NOT NULL
12519 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12520 query_str := query_str || 'AND mol.organization_id = :org_id ';
12521 END IF;
12522
12523 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
12524 --bugfix#3646484 help CBO to pick the index on parent_lpn_id
12525 query_str := query_str || 'and mol.parent_lpn_id is not null ';
12526 query_str := query_str || 'and mol.parent_lpn_id = :plpn_id ';
12527 END IF;
12528
12529 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12530 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12531 -- AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12532 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12533 AND inv_mwb_globals.g_lpn_to IS NULL THEN
12534 query_str := query_str || 'and mol.license_plate_number >= :lpn_f ';
12535 ELSIF inv_mwb_globals.g_lpn_from IS NULL
12536 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12537 query_str := query_str || 'and mol.license_plate_number <= :lpn_t ';
12538 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
12539 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12540 --bugfix#3646484
12541 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
12542 --User is querying for single LPN so converted the range query to equality query
12543 query_str := query_str || 'and mol.license_plate_number = :lpn_f ';
12544 ELSE
12545 query_str := query_str || 'and mol.license_plate_number >= :lpn_f ';
12546 query_str := query_str || 'and mol.license_plate_number <= :lpn_t ';
12547 END IF;
12548 END IF;
12549 END IF;
12550
12551 query_str := query_str || ') GROUP BY wln.license_plate_number, wln.lpn_id, wln.inventory_item_id ';
12552 query_str := query_str || 'ORDER BY wln.license_plate_number ';
12553 ELSE -- PARENT LPN ID IS NOT NULL -- ELSE FOR IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12554 query_str := 'SELECT license_plate_number lpn, lpn_id, inventory_item_id ';
12555 query_str := query_str || 'from wms_license_plate_numbers mol where 1=1 ';
12556
12557 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12558 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12559 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12560 query_str := query_str || ' AND mol.subinventory_code is null AND mol.locator_id is null ';
12561 END IF;
12562 --Bug#3191526
12563 query_str := query_str || ' AND lpn_context = 3 ';
12564 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
12565 query_str := query_str || ' AND (mol.lpn_context=1 OR mol.lpn_context=9 OR mol.lpn_context=11 ) ';
12566 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
12567 query_str := query_str || ' AND mol.lpn_context = 1 ';
12568 ELSIF inv_mwb_globals.g_prepacked <> 1
12569 AND inv_mwb_globals.g_prepacked <> 999 THEN
12570 query_str := query_str || ' AND mol.lpn_context = :prepacked ';
12571 END IF;
12572
12573 IF inv_mwb_globals.g_locator_controlled = 2 THEN
12574 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12575 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12576 --don't add the below locator id not null check
12577 NULL;
12578 ELSE
12579 query_str := query_str || 'AND mol.locator_id IS NOT NULL ';
12580 END IF;
12581 ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
12582 query_str := query_str || 'AND mol.locator_id IS NULL ';
12583 END IF;
12584
12585 IF inv_mwb_globals.g_locator_id IS NOT NULL
12586 OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
12587 query_str := query_str || 'AND mol.locator_id = :loc_id ';
12588 END IF;
12589
12590 -- NSRIVAST, INVCONV, Start
12591 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12592 query_str := query_str || ' AND grade_code = :grade_f ' ;
12593 END IF ;
12594 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
12595 query_str := query_str || ' AND grade_code = :grade_c ' ;
12596 END IF ;
12597 -- NSRIVAST, INVCONV, End
12598
12599 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
12600 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
12601 query_str := query_str || 'AND mol.subinventory_code = :sub ';
12602 END IF;
12603
12604 IF inv_mwb_globals.g_organization_id IS NOT NULL
12605 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12606 query_str := query_str || 'AND mol.organization_id = :org_id ';
12607 END IF;
12608
12609 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
12610 --bugfix#3646484 help CBO to pick the index on parent_lpn_id
12611 query_str := query_str || 'and mol.parent_lpn_id is not null ';
12612 query_str := query_str || 'and mol.parent_lpn_id = :plpn_id ';
12613 END IF;
12614
12615 inv_mwb_globals.print_msg(g_pkg_name, l_procedure_name, 'parent lpn id : ' ||inv_mwb_globals.g_tree_parent_lpn_id);
12616
12617 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
12618 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
12619 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12620 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12621 AND inv_mwb_globals.g_lpn_to IS NULL THEN
12622 query_str := query_str || ' and mol.license_plate_number >= :lpn_f ';
12623 ELSIF inv_mwb_globals.g_lpn_from IS NULL
12624 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12625 query_str := query_str || ' and mol.license_plate_number <= :lpn_t ';
12626 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
12627 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12628 --bugfix#3646484
12629 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
12630 --User is querying for single LPN so converted the range query to equality query
12631 query_str := query_str || 'and mol.license_plate_number = :lpn_f ';
12632 ELSE
12633 query_str := query_str || ' and mol.license_plate_number >= :lpn_f ';
12634 query_str := query_str || 'and mol.license_plate_number <= :lpn_t ';
12635 END IF;
12636 END IF;
12637 END IF;
12638
12639 query_str := query_str || ' GROUP BY mol.license_plate_number, mol.lpn_id, mol.inventory_item_id ';
12640 query_str := query_str || ' ORDER BY mol.license_plate_number ';
12641 END IF; -- FOR IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12642 ELSE -- some of the query criteria like item etc are not null. Else For IF inv_mwb_globals.g_inventory_item_id IS NULL AND inv_mwb_globals.g_revision IS NULL AND ETC.
12643 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12644 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12645 table_required := ' mtl_onhand_lpn_mwb_v mol ';
12646 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
12647 IF (inv_mwb_globals.g_prepacked <> 1) AND
12648 (inv_mwb_globals.g_prepacked <> 9) AND
12649 (inv_mwb_globals.g_prepacked <> 11) THEN
12650 table_required := ' mtl_onhand_lpn_mwb_v mol ';
12651 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
12652 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
12653 END IF; -- NSRIVAST, INVCONV
12654 ELSE
12655 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
12656 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
12657 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
12658 END IF; -- NSRIVAST, INVCONV
12659 END IF;
12660 ELSE
12661 IF (inv_mwb_globals.g_prepacked <> 1) AND
12662 (inv_mwb_globals.g_prepacked <> 9) AND
12663 (inv_mwb_globals.g_prepacked <> 11) THEN
12664 table_required := ' mtl_onhand_lpn_v mol ';
12665 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
12666 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
12667 END IF; -- NSRIVAST, INVCONV
12668 ELSE
12669 table_required := ' mtl_onhand_new_lpn_v mol ';
12670 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
12671 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
12672 END IF; -- NSRIVAST, INVCONV
12673 END IF;
12674 END IF;
12675
12676 query_str := 'SELECT license_plate_number lpn, lpn_id, inventory_item_id ';
12677 query_str := query_str || ' from wms_license_plate_numbers where lpn_id in ';
12678 query_str := query_str || ' (select MOL.outermost_lpn_id ';
12679 query_str := query_str || ' FROM ' || table_required;
12680
12681 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12682 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12683 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
12684 query_str := query_str || ' WHERE 1=1 ';
12685
12686 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12687 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12688 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12689 query_str := query_str || ' AND wlpn.subinventory_code is null AND wlpn.locator_id is null ';
12690 END IF;
12691 --Bug#3191526
12692 query_str := query_str || ' AND lpn_context = 3 ';
12693 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
12694 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
12695 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
12696 query_str := query_str || 'AND lpn_context = 1 ';
12697 ELSIF inv_mwb_globals.g_prepacked <> 1
12698 AND inv_mwb_globals.g_prepacked <> 999 THEN
12699 query_str := query_str || 'AND lpn_context = :prepacked ';
12700 END IF;
12701
12702 IF inv_mwb_globals.g_locator_controlled = 2 THEN
12703 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12704 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12705 --don't add the below locator id not null check
12706 NULL;
12707 ELSE
12708 query_str := query_str || 'AND wlpn.locator_id IS NOT NULL ';
12709 END IF;
12710 ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
12711 query_str := query_str || 'AND wlpn.locator_id IS NULL ';
12712 END IF;
12713
12714 IF inv_mwb_globals.g_locator_id IS NOT NULL
12715 OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
12716 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
12717 END IF;
12718
12719 -- NSRIVAST, INVCONV, Start
12720 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12721 query_str := query_str || ' AND grade_code = :grade_f ' ;
12722 END IF ;
12723 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
12724 query_str := query_str || ' AND grade_code = :grade_c ' ;
12725 END IF ;
12726 -- NSRIVAST, INVCONV, End
12727
12728 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
12729 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
12730 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
12731 END IF;
12732
12733 IF inv_mwb_globals.g_organization_id IS NOT NULL
12734 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12735 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
12736 END IF;
12737
12738 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12739 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12740 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12741 AND inv_mwb_globals.g_lpn_to IS NULL THEN
12742 query_str := query_str || ' and license_plate_number >= :lpn_f ';
12743 ELSIF inv_mwb_globals.g_lpn_from IS NULL
12744 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12745 query_str := query_str || ' and license_plate_number <= :lpn_t ';
12746 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
12747 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12748 --bugfix#3646484
12749 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
12750 --User is querying for single LPN so converted the range query to equality query
12751 query_str := query_str || 'and license_plate_number = :lpn_f ';
12752 ELSE
12753 query_str := query_str || ' and license_plate_number >= :lpn_f ';
12754 query_str := query_str || ' and license_plate_number <= :lpn_t ';
12755 END IF;
12756 END IF;
12757 END IF;
12758
12759 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
12760 END IF;
12761
12762 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
12763 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
12764 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
12765 query_str := query_str || 'WHERE 1=1 ';
12766 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
12767 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
12768 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
12769 query_str :=
12770 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
12771 || ') msn ';
12772 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
12773 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
12774 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
12775 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
12776 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
12777 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
12778 --BUG 7556505
12779 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
12780 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
12781 END IF;
12782 --BUG 7556505
12783 /* Bug 8396954 added below code for supplier_lot_number */
12784 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12785 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12786 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
12787 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
12788 END IF;
12789
12790 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12791 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
12792 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
12793 END IF;
12794
12795 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12796 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
12797 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
12798 END IF;
12799 /* End of Bug 8396954 */
12800 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
12801 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
12802 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
12803 query_str :=
12804 query_str
12805 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
12806 || inv_mwb_globals.g_tree_lot_attr_query
12807 || ') mln '
12808 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
12809 || inv_mwb_globals.g_tree_serial_attr_query
12810 || ') msn ';
12811 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
12812 --BUG 7556505
12813 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
12814 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
12815 END IF;
12816 --BUG 7556505
12817 /* Bug 8396954 added below code for supplier_lot_number */
12818 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12819 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12820 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
12821 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
12822 END IF;
12823
12824 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
12825 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
12826 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
12827 END IF;
12828
12829 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
12830 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
12831 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
12832 END IF;
12833 /* End of Bug 8396954 */
12834 query_str := query_str || 'AND msn.serial_num = serial_number ';
12835 END IF;
12836
12837 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
12838 query_str := query_str || ' AND project_id = :pr_id ';
12839 END IF;
12840
12841 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
12842 query_str := query_str || ' AND task_id = :ta_id ';
12843 END IF;
12844
12845 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
12846 query_str := query_str || ' AND unit_number=:un_id ';
12847 END IF;
12848
12849 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
12850 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
12851 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
12852 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
12853 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
12854 query_str := query_str || ' AND planning_organization_id in ';
12855 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
12856 query_str := query_str || ' where vendor_id = :vendor_id )';
12857 END IF;*/
12858 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
12859 query_str := query_str || ' AND owning_organization_id = :own_org ';
12860 query_str := query_str || ' AND owning_tp_type = 2 ';
12861 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
12862 query_str := query_str || ' AND owning_organization_id = :own_org ';
12863 query_str := query_str || ' AND owning_tp_type = 1 ';
12864 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
12865 query_str := query_str || ' AND owning_tp_type = 1 ';
12866 END IF;
12867
12868 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
12869 query_str := query_str || ' AND planning_organization_id = :plan_org ';
12870 query_str := query_str || ' AND planning_tp_type = 2 ';
12871 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
12872 query_str := query_str || ' AND planning_organization_id = :plan_org ';
12873 query_str := query_str || ' AND planning_tp_type = 1 ';
12874 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
12875 query_str := query_str || ' AND planning_tp_type = 1 ';
12876 END IF;
12877
12878 IF inv_mwb_globals.g_locator_id IS NOT NULL
12879 OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
12880 query_str := query_str || 'AND mol.locator_id = :loc_id ';
12881 END IF;
12882
12883 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
12884 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
12885 query_str := query_str || 'AND mol.subinventory_code = :sub ';
12886 END IF;
12887
12888 IF inv_mwb_globals.g_organization_id IS NOT NULL
12889 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12890 query_str := query_str || 'AND mol.organization_id = :org_id ';
12891 END IF;
12892
12893 /*LPN Status Project */
12894 IF (l_default_status_id is not null) THEN
12895 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12896 query_str := query_str || 'AND onhand_status_id = :st_id ';
12897 END IF;
12898 ELSE
12899 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12900 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
12901 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
12902 END IF;
12903 END IF;
12904 /*End of fix for LPN Status Project */
12905
12906 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
12907 query_str := query_str || 'AND lot_number >= :lot_f ';
12908 END IF;
12909
12910 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
12911 query_str := query_str || 'AND lot_number <= :lot_t ';
12912 END IF;
12913
12914 -- NSRIVAST, INVCONV, Start
12915 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12916 query_str := query_str || ' AND grade_code = :grade_f ' ;
12917 END IF ;
12918 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
12919 query_str := query_str || ' AND grade_code = :grade_c ' ;
12920 END IF ;
12921 -- NSRIVAST, INVCONV, End
12922
12923 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
12924 query_str := query_str || 'AND cost_group_id = :cg_id ';
12925 END IF;
12926
12927 IF inv_mwb_globals.g_revision IS NOT NULL THEN
12928 query_str := query_str || 'AND revision = :rev ';
12929 END IF;
12930
12931 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
12932 query_str := query_str || 'AND serial_number >= :serial_f ';
12933 END IF;
12934
12935 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
12936 query_str := query_str || 'AND serial_number <= :serial_t ';
12937 END IF;
12938
12939 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12940 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12941 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12942 query_str := query_str || ' AND subinventory_code is null AND locator_id is null ';
12943 END IF;
12944 --Bug#3191526
12945 query_str := query_str || ' AND lpn_context = 3 ';
12946 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
12947 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 ) ';
12948 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
12949 query_str := query_str || 'AND lpn_context = 1 ';
12950 ELSIF inv_mwb_globals.g_prepacked <> 1
12951 AND inv_mwb_globals.g_prepacked <> 999 THEN
12952 query_str := query_str || 'AND lpn_context = :prepacked ';
12953 END IF;
12954
12955 IF inv_mwb_globals.g_lpn_from IS NOT NULL
12956 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
12957 query_str := query_str || 'AND MOL.outermost_lpn_id= X.outermost_lpn_id ';
12958 END IF;
12959
12960 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12961 query_str := query_str || 'AND mol.inventory_item_id = :item_id ';
12962 END IF;
12963
12964 -- ER(9158529 client)
12965 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
12966 query_str := query_str || ' AND mol.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
12967 END IF;
12968 -- ER(9158529 client)
12969
12970 -- ER(9158529)
12971 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
12972 query_str := query_str || ' AND mol.inventory_item_id in '
12973 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
12974 || ' where organization_id = :organization_id '
12975 || ' and category_set_id = :category_set_id '
12976 || ' and category_id = nvl(:category_id, category_id)) ' ;
12977 END IF;
12978 -- ER(9158529)
12979
12980 IF inv_mwb_globals.g_locator_controlled = 2 THEN
12981 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12982 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12983 --don't add the below locator id not null check
12984 NULL;
12985 ELSE
12986 query_str := query_str || 'AND locator_id IS NOT NULL ';
12987 END IF;
12988 ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
12989 query_str := query_str || 'AND locator_id IS NULL ';
12990 END IF;
12991
12992 IF inv_mwb_globals.g_locator_id IS NOT NULL
12993 OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
12994 query_str := query_str || 'AND locator_id = :loc_id ';
12995 END IF;
12996
12997 --ER(3338592) Changes
12998 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
12999 query_str := query_str || ' AND item_description LIKE :item_description ';
13000 END IF;
13001 --ER(3338592) Changes
13002
13003 IF inv_mwb_globals.g_subinventory_code IS NOT NULL
13004 OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
13005 query_str := query_str || 'AND subinventory_code = :sub ';
13006 END IF;
13007
13008 IF inv_mwb_globals.g_organization_id IS NOT NULL
13009 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
13010 query_str := query_str || 'AND organization_id = :org_id ';
13011 END IF;
13012
13013 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
13014 query_str := query_str || ') GROUP BY license_plate_number, lpn_id, inventory_item_id ';
13015 query_str := query_str || 'ORDER BY license_plate_number ';
13016 ELSE
13017 query_str := query_str || 'GROUP BY lpn, MOL.lpn_id, X.inventory_item_id ';
13018 query_str := query_str || 'ORDER BY lpn ';
13019 END IF;
13020 ELSE -- comes here if query criteria contains item serial and parent lpn is there.
13021 -- connect by is delibarately removed from here as it is affecting performance.
13022 -- For details see Material workbech performance hld doc
13023 query_str := query_str || ' select license_plate_number lpn, lpn_id, inventory_item_id from wms_license_plate_numbers ';
13024 query_str := query_str || ' WHERE parent_lpn_id = :plpn_id ';
13025
13026 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
13027 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
13028 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
13029 query_str := query_str || ' AND subinventory_code is null AND locator_id is null ';
13030 END IF;
13031 --Bug#3191526
13032 query_str := query_str || ' AND lpn_context = 3 ';
13033 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
13034 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 or lpn_context=8) ';--12984304
13035 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
13036 query_str := query_str || 'AND lpn_context = 1 ';
13037 ELSIF inv_mwb_globals.g_prepacked <> 1
13038 AND inv_mwb_globals.g_prepacked <> 999 THEN
13039 query_str := query_str || 'AND lpn_context = :prepacked ';
13040 END IF;
13041
13042 inv_trx_util_pub.trace(query_str, 'Material Workbench :- ADD LPNs', 9);
13043 --trace1('QUERY STR ' || query_str, 'add_lpns', 9);
13044 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13045 inv_mwb_globals.g_last_query := query_str;
13046 query_hdl := DBMS_SQL.open_cursor;
13047 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
13048 DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
13049
13050 IF inv_mwb_globals.g_prepacked <> 1
13051 AND inv_mwb_globals.g_prepacked <> 999
13052 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
13053 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
13054 END IF;
13055
13056 is_bind_required := FALSE;
13057 END IF;
13058 END IF;
13059
13060 IF (is_bind_required = TRUE) THEN
13061 -- Enable this during debugging
13062 -- inv_trx_util_pub.trace(query_str, 'ADD LPNs Material Workbench :', 9);
13063 --trace1(query_str, 'add_lpns', 9);
13064
13065 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13066 inv_mwb_globals.g_last_query := query_str;
13067 query_hdl := DBMS_SQL.open_cursor;
13068 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
13069
13070
13071 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
13072 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
13073 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
13074 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
13075 END IF;
13076
13077 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
13078 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
13079 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
13080 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
13081 END IF;
13082
13083 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
13084 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
13085 ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
13086 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
13087 END IF;
13088
13089 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13090 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
13091 END IF;
13092
13093 -- ER(9158529 client)
13094 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
13095 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
13096 END IF;
13097 -- ER(9158529 client)
13098
13099 -- ER(9158529)
13100 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
13101 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
13102 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
13103 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
13104 END IF;
13105 -- ER(9158529)
13106
13107 IF inv_mwb_globals.g_revision IS NOT NULL THEN
13108 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
13109 END IF;
13110
13111 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13112 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
13113 END IF;
13114
13115 --BUG 7556505
13116 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
13117 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
13118 END IF;
13119 --BUG 7556505
13120
13121 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
13122 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
13123 END IF;
13124
13125 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
13126 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
13127 END IF;
13128
13129 /* Bug 8396954 added below code for supplier_lot_number */
13130 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
13131 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
13132 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
13133 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
13134 END IF;
13135
13136 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
13137 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
13138 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
13139 END IF;
13140
13141 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
13142 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
13143 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
13144 END IF;
13145 /* End of Bug 8396954 */
13146
13147 -- NSRIVAST, INVCONV, Start
13148 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
13149 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
13150 END IF;
13151 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
13152 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
13153 END IF;
13154 -- NSRIVAST, INVCONV, End
13155
13156 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
13157 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
13158 END IF;
13159
13160 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
13161 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
13162 END IF;
13163
13164 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13165 DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
13166 END IF;
13167
13168 --bugfix#3646484
13169 IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL)
13170 AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to))
13171 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
13172 --User is querying for single LPN so converted the range query to equality query
13173 --So it is enought to bind the from lpn alone
13174 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
13175 ELSE
13176 IF inv_mwb_globals.g_lpn_from IS NOT NULL
13177 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
13178 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
13179 END IF;
13180
13181 IF inv_mwb_globals.g_lpn_to IS NOT NULL
13182 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
13183 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
13184 END IF;
13185 END IF;
13186
13187 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
13188 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
13189 END IF;
13190
13191 IF inv_mwb_globals.g_prepacked <> 1
13192 AND inv_mwb_globals.g_prepacked <> 999
13193 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
13194 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
13195 END IF;
13196
13197 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
13198 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
13199 END IF;
13200
13201 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
13202 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
13203 END IF;
13204
13205 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
13206 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
13207 END IF;
13208
13209 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
13210 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
13211 END IF;
13212
13213 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
13214 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
13215 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
13216 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
13217 END IF;*/
13218 IF (inv_mwb_globals.g_owning_qry_mode = 4)
13219 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
13220 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
13221 END IF;
13222
13223 IF (inv_mwb_globals.g_planning_query_mode = 4)
13224 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
13225 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
13226 END IF;
13227
13228 --ER(3338592) Changes
13229 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
13230 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
13231 END IF;
13232
13233 IF receipt_source_code IS NOT NULL THEN
13234 dbms_sql.bind_variable(query_hdl, 'receipt_source_code', receipt_source_code);
13235 END IF;
13236
13237 END IF;
13238
13239 DBMS_SQL.define_column(query_hdl, 1, lpn, 30);
13240 DBMS_SQL.define_column(query_hdl, 2, lpn_id);
13241 DBMS_SQL.define_column(query_hdl, 3, item_id);
13242 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
13243
13244 LOOP
13245 -- fetch a row
13246 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
13247 -- fetch columns from the row
13248 DBMS_SQL.column_value(query_hdl, 1, lpn);
13249 DBMS_SQL.column_value(query_hdl, 2, lpn_id);
13250 DBMS_SQL.column_value(query_hdl, 3, item_id);
13251 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'outside if loop to add lpns before query' );
13252 IF item_id IS NOT NULL
13253 AND item_id <> 0 THEN
13254 item := ' (' || inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id ))|| ')'; -- Bug 6350236
13255 ELSE
13256 item := '';
13257 END IF;
13258 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'outside if loop to add lpns' );
13259 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
13260 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'inside if loop to add lpns' );
13261 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn:'||lpn );
13262 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
13263 x_node_tbl(i).DEPTH := 1;
13264 x_node_tbl(i).label := lpn || item;
13265 x_node_tbl(i).icon := 'inv_licn';
13266 x_node_tbl(i).VALUE := TO_CHAR(lpn_id);
13267 x_node_tbl(i).TYPE := 'LPN';
13268 i := i + 1;
13269 END IF;
13270
13271 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
13272 j := j + 1;
13273 ELSE
13274 EXIT;
13275 END IF;
13276 END LOOP;
13277
13278 DBMS_SQL.close_cursor(query_hdl); -- close cursor
13279 x_node_value := j;
13280 x_tbl_index := i;
13281 EXCEPTION
13282 WHEN NO_DATA_FOUND THEN
13283 NULL;
13284 WHEN OTHERS THEN
13285 RAISE;
13286 END add_lpns;
13287
13288 PROCEDURE add_items(
13289 /*, inv_mwb_globals.g_inserted_under_org IN VARCHAR2 DEFAULT 'N'*/
13290 x_node_value IN OUT NOCOPY NUMBER
13291 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
13292 , x_tbl_index IN OUT NOCOPY NUMBER
13293 ) IS
13294 query_str VARCHAR2(10000);
13295 subquery_str varchar2(3000);
13296 query_hdl NUMBER;
13297 rows_processed NUMBER;
13298 item_id mtl_system_items_kfv.inventory_item_id%TYPE;
13299 item mtl_system_items_kfv.concatenated_segments%TYPE;
13300 i NUMBER := x_tbl_index;
13301 j NUMBER := x_node_value;
13302 table_required VARCHAR2(300);
13303 receipt_source_code VARCHAR2(30);
13304
13305 group_str VARCHAR2(10000) ;
13306 having_str VARCHAR2(10000) := ' HAVING 1=1 ';
13307
13308 select_str VARCHAR2(10000) ;
13309 where_str VARCHAR2(10000) ;
13310
13311 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
13312 lpn_from_id wms_license_plate_numbers.lpn_id%TYPE;
13313 lpn_to_id wms_license_plate_numbers.lpn_id%TYPE;
13314
13315 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_ITEMS';
13316
13317 l_default_status_id NUMBER; -- Onhand Material Status Support
13318
13319 BEGIN
13320
13321 IF inv_mwb_globals.g_view_by IN ('SERIAL','LOT') THEN
13322 inv_mwb_globals.g_containerized := NULL;
13323 END IF;
13324
13325 -- Onhand Material Status Support
13326 if (inv_mwb_globals.g_organization_id is not null) then
13327 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
13328 l_default_status_id := inv_cache.org_rec.default_status_id;
13329 end if;
13330 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
13331 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
13332 l_default_status_id := inv_cache.org_rec.default_status_id;
13333 end if;
13334 end if;
13335
13336 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered with node type : '||inv_mwb_globals.g_tree_node_type );
13337 /*
13338 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
13339 inv_mwb_globals.g_prepacked := NULL;
13340 inv_mwb_globals.g_inserted_under_org := 1;
13341 inv_mwb_globals.g_containerized := 1;
13342 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
13343 inv_mwb_globals.g_locator_controlled := 2;
13344 ELSE
13345 inv_mwb_globals.g_locator_controlled := 1;
13346 END IF;
13347 END IF;
13348
13349
13350 IF inv_mwb_globals.g_tree_node_type = 'SUB'
13351 AND inv_mwb_globals.g_tree_mat_loc_id = 1 THEN
13352 inv_mwb_globals.g_locator_controlled := 1;
13353 ELSE
13354 inv_mwb_globals.g_locator_controlled := 2;
13355 END IF;
13356 */
13357 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
13358
13359 IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN
13360 IF inv_mwb_globals.g_tree_doc_type_id = 1 -- Purchase Order
13361 AND inv_mwb_globals.g_source_org_id IS NULL
13362 AND inv_mwb_globals.g_internal_order_id IS NULL
13363 AND inv_mwb_globals.g_shipment_header_id_interorg IS NULL
13364 AND inv_mwb_globals.g_req_header_id IS NULL THEN
13365
13366 -- CLM project, bug 9403291
13367 query_str := ' SELECT distinct msik.concatenated_segments
13368 , msik.inventory_item_id
13369 FROM po_headers_trx_v pha
13370 , po_lines_trx_v pla
13371 , mtl_supply ms
13372 , mtl_system_items_kfv msik
13373 WHERE pha.po_header_id(+) = ms.po_header_id
13374 AND pla.po_line_id(+) = ms.po_line_id
13375 AND ms.destination_type_code = ''INVENTORY''
13376 AND ms.item_id = msik.inventory_item_id
13377 AND ms.to_organization_id = msik.organization_id
13378 AND ms.supply_type_code IN (''PO'',''SHIPMENT'')
13379 AND pha.segment1 IS NOT NULL';
13380
13381
13382 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
13383 query_str := query_str || ' AND pla.vendor_product_num = :inb_vendor_item ';
13384 END IF;
13385
13386 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13387
13388 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13389 query_str := query_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
13390 END IF;
13391
13392 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
13393 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
13394 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
13395 query_str := query_str || ' AND ms.expected_delivery_date = :inb_from_date';
13396 END IF;
13397
13398 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
13399 query_str := query_str || ' AND ms.expected_delivery_date >= :inb_from_date';
13400 END IF;
13401
13402 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
13403 query_str := query_str || ' AND ms.expected_delivery_date <= :inb_to_date';
13404 END IF;
13405
13406 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13407
13408 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
13409 query_str := query_str || ' AND ms.to_organization_id = :inb_to_org_id ';
13410 END IF;
13411
13412 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13413 query_str := query_str || ' AND ms.item_id = :inb_item_id ';
13414 END IF;
13415
13416 -- ER(9158529 client)
13417 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
13418 query_str := query_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
13419 END IF;
13420 -- ER(9158529 client)
13421
13422 -- ER(9158529)
13423 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
13424 query_str := query_str || ' AND ms.item_id in '
13425 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
13426 || ' where organization_id = :inb_to_organization_id '
13427 || ' and category_set_id = :inb_category_set_id '
13428 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
13429 END IF;
13430 -- ER(9158529)
13431
13432 IF inv_mwb_globals.g_inventory_item_id IS NULL
13433 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
13434 query_str := query_str || ' AND msik.description like :inb_item_description ';
13435 END IF;
13436
13437 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
13438 query_str := query_str || ' AND pha.po_header_id = :inb_po_header_id ';
13439 END IF;
13440
13441 IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
13442 query_str := query_str || ' AND pha.po_header_id = :inb_doc_header_id ';
13443 END IF;
13444
13445 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13446
13447 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
13448 query_str := query_str || ' AND ms.po_release_id = :inb_po_release_id ';
13449 END IF;
13450
13451 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
13452 query_str := query_str || ' AND pha.vendor_id = :inb_vendor_id ';
13453 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
13454 query_str := query_str || ' AND pha.vendor_site_id = :inb_vendor_site_id ';
13455 END IF;
13456 END IF;
13457
13458 query_str := query_str || ' ORDER BY msik.concatenated_segments ';
13459
13460 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13461
13462 query_hdl := DBMS_SQL.open_cursor;
13463 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
13464
13465 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
13466 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
13467 END IF;
13468
13469 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13470 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
13471 END IF;
13472
13473 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
13474 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
13475 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
13476 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
13477 END IF;
13478
13479 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
13480 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
13481 END IF;
13482
13483 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
13484 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
13485 END IF;
13486
13487 IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
13488 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
13489 END IF;
13490
13491 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13492 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
13493 END IF;
13494
13495 -- ER(9158529 client)
13496 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
13497 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
13498 END IF;
13499 -- ER(9158529 client)
13500
13501 -- ER(9158529)
13502 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
13503 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
13504 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
13505 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
13506 END IF;
13507 -- ER(9158529)
13508
13509 IF inv_mwb_globals.g_inventory_item_id IS NULL
13510 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
13511 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
13512 END IF;
13513
13514 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
13515 DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
13516 END IF;
13517
13518 IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
13519 DBMS_SQL.bind_variable(query_hdl, 'inb_doc_header_id', inv_mwb_globals.g_tree_doc_header_id);
13520 END IF;
13521
13522 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
13523 DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
13524 END IF;
13525
13526 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
13527 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
13528 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
13529 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
13530 END IF;
13531 END IF;
13532
13533 DBMS_SQL.define_column(query_hdl, 1, item, 30);
13534 DBMS_SQL.define_column(query_hdl, 2, item_id);
13535
13536 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
13537
13538 LOOP
13539 -- fetch a row
13540 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
13541 -- fetch columns from the row
13542 DBMS_SQL.column_value(query_hdl, 1, item);
13543 DBMS_SQL.column_value(query_hdl, 2, item_id);
13544
13545 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
13546 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
13547 x_node_tbl(i).DEPTH := 1;
13548 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )); -- Bug 6350236
13549 x_node_tbl(i).icon := 'inv_item';
13550 x_node_tbl(i).VALUE := TO_CHAR(item_id);
13551 x_node_tbl(i).TYPE := 'ITEM';
13552 i := i + 1;
13553 END IF;
13554
13555 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
13556 j := j + 1;
13557 ELSE
13558 EXIT;
13559 END IF;
13560 END LOOP;
13561
13562 END IF; -- Purchase Order
13563
13564
13565 IF inv_mwb_globals.g_tree_doc_type_id = 4 THEN -- ASN
13566
13567 select_str := ' SELECT distinct msik.concatenated_segments
13568 , msik.inventory_item_id
13569 FROM mtl_supply ms
13570 , rcv_shipment_lines rsl
13571 , rcv_shipment_headers rsh
13572 , mtl_system_items_kfv msik ';
13573
13574
13575 where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id
13576 AND ms.shipment_line_id = rsl.shipment_line_id
13577 AND ms.supply_type_code = ''SHIPMENT''
13578 AND ms.destination_type_code = ''INVENTORY''
13579 AND rsh.asn_type IS NOT NULL
13580 AND ms.item_id = msik.inventory_item_id
13581 AND ms.to_organization_id = msik.organization_id ';
13582
13583 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
13584 where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
13585 END IF;
13586
13587 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13588 where_str := where_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
13589 END IF;
13590
13591 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
13592 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
13593 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
13594 where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
13595 END IF;
13596
13597 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
13598 where_str := where_str || ' AND ms.expected_delivery_date >= :inb_from_date';
13599 END IF;
13600
13601 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
13602 where_str := where_str || ' AND ms.expected_delivery_date <= :inb_to_date';
13603 END IF;
13604
13605 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
13606 where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
13607 END IF;
13608
13609 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13610 where_str := where_str || ' AND ms.item_id = :inb_item_id ';
13611 END IF;
13612
13613 -- ER(9158529 client)
13614 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
13615 where_str := where_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
13616 END IF;
13617 -- ER(9158529 client)
13618
13619 -- ER(9158529)
13620 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
13621 where_str := where_str || ' AND ms.item_id in '
13622 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
13623 || ' where organization_id = :inb_to_organization_id '
13624 || ' and category_set_id = :inb_category_set_id '
13625 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
13626 END IF;
13627 -- ER(9158529)
13628
13629 IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
13630 where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
13631 END IF;
13632
13633 IF inv_mwb_globals.g_inventory_item_id IS NULL
13634 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
13635 where_str := where_str || ' AND msik.description like :inb_item_description ';
13636 END IF;
13637
13638 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
13639 where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
13640 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
13641 where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
13642 END IF;
13643 END IF;
13644
13645 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
13646 where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
13647 ELSE
13648 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
13649 where_str := where_str || ' AND rsl.asn_lpn_id >= :inb_lpn_from_id ';
13650 END IF;
13651
13652 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
13653 where_str := where_str || ' AND rsl.asn_lpn_id <= :inb_lpn_to_id ';
13654 END IF;
13655 END IF;
13656
13657 IF inv_mwb_globals.g_tree_node_type = 'DOCNUM' THEN
13658 where_str := where_str || ' AND rsl.asn_lpn_id IS NULL ';
13659 END IF;
13660
13661 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13662 where_str := where_str || ' AND rsl.asn_lpn_id = :inb_tree_lpn_id ';
13663 END IF;
13664
13665
13666 IF inv_mwb_globals.g_serial_from IS NOT NULL
13667 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
13668 select_str := select_str || ', rcv_serials_supply rss ';
13669 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id ';
13670 END IF;
13671
13672 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
13673 where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
13674 ELSE
13675 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
13676 where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
13677 END IF;
13678
13679 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
13680 where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
13681 END IF;
13682 END IF;
13683
13684 IF (inv_mwb_globals.g_lot_from IS NOT NULL
13685 OR inv_mwb_globals.g_lot_to IS NOT NULL)
13686 AND (inv_mwb_globals.g_serial_from IS NULL
13687 AND inv_mwb_globals.g_serial_to IS NULL) THEN
13688 select_str := select_str || ', rcv_lots_supply rss ';
13689 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id ';
13690 END IF;
13691
13692 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
13693 where_str := where_str || ' AND rss.lot_num = :inb_lot_from ';
13694 ELSE
13695 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
13696 where_str := where_str || ' AND rss.lot_num >= :inb_lot_from ';
13697 END IF;
13698
13699 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
13700 where_str := where_str || ' AND rss.lot_num <= :inb_lot_to ';
13701 END IF;
13702 END IF;
13703
13704 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
13705 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
13706 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
13707 select_str := select_str || ', mtl_lot_numbers mln1 ';
13708 select_str := select_str || ' , rcv_lots_supply rls1 ';
13709 where_str := where_str || ' AND rls1.shipment_line_id = rsl.shipment_line_id ';
13710
13711 where_str := where_str || ' AND rls1.lot_num = mln1.lot_number';
13712
13713 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
13714 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
13715 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
13716 where_str := where_str || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
13717 END IF;
13718
13719 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
13720 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
13721 where_str := where_str || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
13722 END IF;
13723
13724 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
13725 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
13726 where_str := where_str || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
13727 END IF;
13728 END IF;
13729 /* End of Bug 8396954 */
13730
13731 where_str := where_str || ' ORDER BY msik.concatenated_segments ';
13732
13733 query_str := select_str || where_str;
13734
13735
13736 /* delete from rtest2;
13737 insert into rtest2 values (query_str);
13738 commit;
13739 */
13740 query_hdl := DBMS_SQL.open_cursor;
13741 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
13742
13743 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
13744 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
13745 END IF;
13746
13747 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13748 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
13749 END IF;
13750
13751 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
13752 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
13753 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
13754 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
13755 END IF;
13756
13757 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
13758 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
13759 END IF;
13760
13761 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
13762 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
13763 END IF;
13764
13765 IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
13766 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
13767 END IF;
13768
13769 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13770 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
13771 END IF;
13772
13773 -- ER(9158529 client)
13774 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
13775 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
13776 END IF;
13777 -- ER(9158529 client)
13778
13779 -- ER(9158529)
13780 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
13781 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
13782 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
13783 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
13784 END IF;
13785 -- ER(9158529)
13786
13787 IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
13788 DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
13789 END IF;
13790
13791 IF inv_mwb_globals.g_inventory_item_id IS NULL
13792 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
13793 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
13794 END IF;
13795
13796 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
13797 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
13798 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
13799 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
13800 END IF;
13801 END IF;
13802
13803 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
13804 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
13805 ELSE
13806 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
13807 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
13808 END IF;
13809
13810 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
13811 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to_id', inv_mwb_globals.g_lpn_to_id);
13812 END IF;
13813 END IF;
13814
13815 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13816 DBMS_SQL.bind_variable(query_hdl, 'inb_tree_lpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
13817 END IF;
13818
13819 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
13820 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
13821 ELSE
13822 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
13823 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
13824 END IF;
13825
13826 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
13827 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
13828 END IF;
13829 END IF;
13830
13831 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
13832 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
13833 ELSE
13834 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
13835 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
13836 END IF;
13837
13838 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
13839 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
13840 END IF;
13841 END IF;
13842
13843 /* Bug 8396954 added below code for supplier_lot_number */
13844 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
13845 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
13846 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
13847 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
13848 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
13849 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
13850 END IF;
13851
13852 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
13853 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
13854 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
13855 END IF;
13856
13857 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
13858 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
13859 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
13860 END IF;
13861 END IF;
13862 /* End of Bug 8396954 */
13863
13864 DBMS_SQL.define_column(query_hdl, 1, item, 30);
13865 DBMS_SQL.define_column(query_hdl, 2, item_id);
13866
13867 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
13868
13869 LOOP
13870 -- fetch a row
13871 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
13872 -- fetch columns from the row
13873 DBMS_SQL.column_value(query_hdl, 1, item);
13874 DBMS_SQL.column_value(query_hdl, 2, item_id);
13875
13876
13877 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
13878 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
13879 x_node_tbl(i).DEPTH := 1;
13880 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )); -- Bug 6350236
13881 x_node_tbl(i).icon := 'inv_item';
13882 x_node_tbl(i).VALUE := TO_CHAR(item_id);
13883 x_node_tbl(i).TYPE := 'ITEM';
13884 i := i + 1;
13885 END IF;
13886
13887 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
13888 j := j + 1;
13889 ELSE
13890 EXIT;
13891 END IF;
13892 END LOOP;
13893
13894 END IF; -- ASN
13895
13896 IF inv_mwb_globals.g_tree_doc_type_id = 3 THEN -- INTERORG
13897
13898 select_str := ' SELECT distinct msik.concatenated_segments
13899 , msik.inventory_item_id
13900 FROM mtl_supply ms
13901 , rcv_shipment_lines rsl
13902 , rcv_shipment_headers rsh
13903 , mtl_system_items_kfv msik ';
13904
13905 where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id (+)
13906 AND ms.shipment_line_id = rsl.shipment_line_id (+)
13907 AND ms.supply_type_code = ''SHIPMENT''
13908 AND ms.destination_type_code = ''INVENTORY''
13909 AND rsh.asn_type IS NULL
13910 AND ms.item_id = msik.inventory_item_id
13911 AND ms.to_organization_id = msik.organization_id ';
13912
13913
13914 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
13915 where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
13916 END IF;
13917
13918 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13919 where_str := where_str || ' AND rsl.cost_group_id = :inb_cost_group_id ';
13920 END IF;
13921
13922 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
13923 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
13924 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
13925 where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
13926 END IF;
13927
13928 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
13929 where_str := where_str || ' AND ms.expected_delivery_date >= :inb_from_date';
13930 END IF;
13931
13932 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
13933 where_str := where_str || ' AND ms.expected_delivery_date <= :inb_to_date';
13934 END IF;
13935
13936 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
13937 where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
13938 END IF;
13939
13940 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
13941 where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
13942 END IF;
13943
13944 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13945 where_str := where_str || ' AND ms.item_id = :inb_item_id ';
13946 END IF;
13947
13948 -- ER(9158529 client)
13949 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
13950 where_str := where_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
13951 END IF;
13952 -- ER(9158529 client)
13953
13954 -- ER(9158529)
13955 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
13956 where_str := where_str || ' AND ms.item_id in '
13957 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
13958 || ' where organization_id = :inb_to_organization_id '
13959 || ' and category_set_id = :inb_category_set_id '
13960 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
13961 END IF;
13962 -- ER(9158529)
13963
13964 IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
13965 OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
13966 where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
13967 END IF;
13968
13969 IF inv_mwb_globals.g_inventory_item_id IS NULL
13970 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
13971 where_str := ' AND msik.description like :inb_item_description ';
13972 END IF;
13973
13974 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
13975 where_str := where_str || ' AND ms.po_header_id = :inb_po_header_id ';
13976 END IF;
13977
13978 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
13979 where_str := where_str || ' AND ms.po_release_id = :inb_po_release_id ';
13980 END IF;
13981
13982 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
13983 where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
13984 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
13985 where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
13986 END IF;
13987 END IF;
13988
13989 IF inv_mwb_globals.g_serial_from IS NOT NULL
13990 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
13991 select_str := select_str || ', rcv_serials_supply rss ';
13992 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
13993 END IF;
13994
13995
13996 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
13997 where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
13998 ELSE
13999 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
14000 where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
14001 END IF;
14002
14003 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
14004 where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
14005 END IF;
14006 END IF;
14007
14008 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
14009 where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
14010 ELSE
14011 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
14012 where_str := where_str || ' AND rsl.asn_lpn_id >= :inb_lpn_from_id ';
14013 END IF;
14014
14015 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
14016 where_str := where_str || ' AND rsl.asn_lpn_id <= :inb_lpn_to_id ';
14017 END IF;
14018 END IF;
14019
14020 IF inv_mwb_globals.g_tree_node_type = 'DOCNUM' THEN
14021 where_str := where_str || ' AND rsl.asn_lpn_id IS NULL ';
14022 END IF;
14023
14024 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
14025 where_str := where_str || ' AND rsl.asn_lpn_id = :inb_tree_lpn_id ';
14026 END IF;
14027
14028 IF inv_mwb_globals.g_lot_from IS NOT NULL
14029 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
14030 select_str := select_str || ', rcv_lots_supply rls ';
14031 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
14032 END IF;
14033
14034 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
14035 where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
14036 ELSE
14037 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14038 where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
14039 END IF;
14040
14041 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14042 where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
14043 END IF;
14044 END IF;
14045
14046 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
14047 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
14048 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
14049 select_str := select_str || ', mtl_lot_numbers mln1 ';
14050 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
14051 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
14052 select_str := select_str || ' , rcv_lots_supply rls ';
14053 where_str := where_str || ' AND rls.shipment_line_id = ms.shipment_line_id ';
14054 END IF;
14055
14056 where_str := where_str || ' AND rls.lot_num = mln1.lot_number';
14057
14058 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14059 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14060 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14061 where_str := where_str || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
14062 END IF;
14063
14064 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14065 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14066 where_str := where_str || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
14067 END IF;
14068
14069 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14070 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14071 where_str := where_str || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
14072 END IF;
14073 END IF;
14074 /* End of Bug 8396954 */
14075
14076 where_str := where_str || ' ORDER BY msik.concatenated_segments ';
14077
14078 query_str := select_str || where_str;
14079
14080 /* delete from rtest2;
14081 insert into rtest2 values (query_str);
14082 commit;
14083 */
14084 query_hdl := DBMS_SQL.open_cursor;
14085 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
14086
14087 IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
14088 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
14089 END IF;
14090
14091 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14092 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
14093 END IF;
14094
14095 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
14096 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
14097 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
14098 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
14099 END IF;
14100
14101 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
14102 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
14103 END IF;
14104
14105 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
14106 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
14107 END IF;
14108
14109 IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
14110 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
14111 END IF;
14112
14113 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
14114 DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
14115 END IF;
14116
14117 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
14118 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
14119 END IF;
14120
14121 -- ER(9158529 client)
14122 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
14123 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
14124 END IF;
14125 -- ER(9158529 client)
14126
14127 -- ER(9158529)
14128 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
14129 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
14130 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
14131 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
14132 END IF;
14133 -- ER(9158529)
14134
14135 IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
14136 OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
14137 DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', NVL(inv_mwb_globals.g_shipment_header_id_interorg
14138 ,inv_mwb_globals.g_tree_doc_header_id));
14139 END IF;
14140
14141 IF inv_mwb_globals.g_inventory_item_id IS NULL
14142 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
14143 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
14144 END IF;
14145
14146 IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
14147 DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
14148 END IF;
14149
14150 IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
14151 DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
14152 END IF;
14153
14154 IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
14155 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
14156 IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
14157 DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
14158 END IF;
14159 END IF;
14160
14161
14162 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
14163 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
14164 ELSE
14165 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
14166 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
14167 END IF;
14168
14169 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
14170 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
14171 END IF;
14172 END IF;
14173
14174 IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
14175 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
14176 ELSE
14177 IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
14178 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
14179 END IF;
14180
14181 IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
14182 DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to_id', inv_mwb_globals.g_lpn_to_id);
14183 END IF;
14184 END IF;
14185
14186 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
14187 DBMS_SQL.bind_variable(query_hdl, 'inb_tree_lpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
14188 END IF;
14189
14190 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
14191 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
14192 ELSE
14193 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14194 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
14195 END IF;
14196
14197 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14198 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
14199 END IF;
14200 END IF;
14201
14202 /* Bug 8396954 added below code for supplier_lot_number */
14203 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
14204 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
14205 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14206 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14207 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14208 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
14209 END IF;
14210
14211 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14212 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14213 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
14214 END IF;
14215
14216 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14217 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14218 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
14219 END IF;
14220 END IF;
14221 /* End of Bug 8396954 */
14222
14223 DBMS_SQL.define_column(query_hdl, 1, item, 30);
14224 DBMS_SQL.define_column(query_hdl, 2, item_id);
14225
14226 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
14227
14228 LOOP
14229 -- fetch a row
14230 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
14231 -- fetch columns from the row
14232 DBMS_SQL.column_value(query_hdl, 1, item);
14233 DBMS_SQL.column_value(query_hdl, 2, item_id);
14234
14235 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
14236 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
14237 x_node_tbl(i).DEPTH := 1;
14238 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )); -- Bug 6350236
14239 x_node_tbl(i).icon := 'inv_item';
14240 x_node_tbl(i).VALUE := TO_CHAR(item_id);
14241 x_node_tbl(i).TYPE := 'ITEM';
14242 i := i + 1;
14243 END IF;
14244
14245 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
14246 j := j + 1;
14247 ELSE
14248 EXIT;
14249 END IF;
14250 END LOOP;
14251
14252 END IF; -- INTERORG
14253
14254
14255 IF inv_mwb_globals.g_tree_doc_type_id = 2 THEN -- REQUISITION
14256
14257 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Inside req.code');
14258 -- CLM project, bug 9403291
14259 select_str := ' SELECT distinct msik.concatenated_segments
14260 , msik.inventory_item_id
14261 FROM mtl_supply ms
14262 , po_req_headers_trx_v prha
14263 , po_req_lines_trx_v prla
14264 , mtl_system_items_kfv msik ';
14265
14266 where_str := 'WHERE ms.req_header_id = prha.requisition_header_id (+)
14267 AND ms.req_line_id = prla.requisition_line_id (+)
14268 AND ms.supply_type_code = ''REQ''
14269 AND ms.destination_type_code = ''INVENTORY''
14270 AND ms.item_id = msik.inventory_item_id
14271 AND ms.to_organization_id = msik.organization_id ';
14272
14273
14274
14275
14276 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14277 where_str := where_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
14278 END IF;
14279
14280 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
14281 inv_mwb_globals.g_expected_to_date IS NOT NULL AND
14282 inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
14283 where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
14284 END IF;
14285
14286 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
14287 where_str := where_str || ' AND ms.expected_delivery_date >= :inb_from_date';
14288 END IF;
14289
14290 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
14291 where_str := where_str || ' AND ms.expected_delivery_date <= :inb_to_date';
14292 END IF;
14293
14294 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
14295 where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
14296 END IF;
14297
14298 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
14299 where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
14300 END IF;
14301
14302 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
14303 where_str := where_str || ' AND ms.item_id = :inb_item_id ';
14304 END IF;
14305
14306 -- ER(9158529 client)
14307 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
14308 where_str := where_str || ' AND ms.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :inb_client_code) ';
14309 END IF;
14310 -- ER(9158529 client)
14311
14312 -- ER(9158529)
14313 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
14314 where_str := where_str || ' AND ms.item_id in '
14315 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
14316 || ' where organization_id = :inb_to_organization_id '
14317 || ' and category_set_id = :inb_category_set_id '
14318 || ' and category_id = nvl(:inb_category_id, category_id)) ' ;
14319 END IF;
14320 -- ER(9158529)
14321
14322 IF inv_mwb_globals.g_req_header_id IS NOT NULL
14323 OR (inv_mwb_globals.g_tree_node_type = 'DOCNUM'
14324 AND inv_mwb_globals.g_tree_doc_type_id = 2
14325 AND inv_mwb_globals.g_tree_node_value IS NOT NULL) THEN
14326 where_str := where_str || ' AND ms.req_header_id = :inb_req_header_id ';
14327 END IF;
14328
14329 IF inv_mwb_globals.g_inventory_item_id IS NULL
14330 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
14331 where_str := where_str || ' AND msik.description like :inb_item_description ';
14332 END IF;
14333
14334 IF inv_mwb_globals.g_serial_from IS NOT NULL
14335 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
14336 select_str := select_str || ', rcv_serials_supply rss ';
14337 where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id ';
14338 END IF;
14339
14340
14341 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
14342 where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
14343 ELSE
14344 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
14345 where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
14346 END IF;
14347
14348 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
14349 where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
14350 END IF;
14351 END IF;
14352
14353
14354 IF inv_mwb_globals.g_lot_from IS NOT NULL
14355 OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
14356 select_str := select_str || ', rcv_lots_supply rls ';
14357 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
14358 END IF;
14359
14360 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
14361 where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
14362 ELSE
14363 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14364 where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
14365 END IF;
14366
14367 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14368 where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
14369 END IF;
14370 END IF;
14371
14372 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
14373 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
14374 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
14375 select_str := select_str || ', mtl_lot_numbers mln1 ';
14376 IF NOT (inv_mwb_globals.g_lot_from IS NOT NULL
14377 OR inv_mwb_globals.g_lot_to IS NOT NULL ) THEN
14378 select_str := select_str || ' , rcv_lots_supply rls ';
14379 where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
14380 END IF;
14381
14382 where_str := where_str || ' AND rls.lot_num = mln1.lot_number';
14383
14384 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14385 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14386 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14387 where_str := where_str || ' AND mln1.supplier_lot_number = :inb_supplier_lot_from ';
14388 END IF;
14389
14390 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14391 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14392 where_str := where_str || ' AND mln1.supplier_lot_number >= :inb_supplier_lot_from ';
14393 END IF;
14394
14395 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14396 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14397 where_str := where_str || ' AND mln1.supplier_lot_number <= :inb_supplier_lot_to ';
14398 END IF;
14399 END IF;
14400 /* End of Bug 8396954 */
14401
14402 where_str := where_str || ' ORDER BY msik.concatenated_segments ';
14403
14404 query_str := select_str || where_str;
14405
14406
14407 /* delete from rtest2;
14408 insert into rtest2 values (query_str);
14409 commit;
14410 */
14411 query_hdl := DBMS_SQL.open_cursor;
14412 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
14413
14414 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14415 DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
14416 END IF;
14417
14418 IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
14419 AND inv_mwb_globals.g_expected_to_date IS NOT NULL
14420 AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
14421 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
14422 END IF;
14423
14424 IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
14425 DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
14426 END IF;
14427
14428 IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
14429 DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
14430 END IF;
14431
14432 IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
14433 DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
14434 END IF;
14435
14436 IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
14437 DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
14438 END IF;
14439
14440 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
14441 DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
14442 END IF;
14443
14444 -- ER(9158529 client)
14445 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
14446 DBMS_SQL.bind_variable(query_hdl, 'inb_client_code', inv_mwb_globals.g_client_code);
14447 END IF;
14448 -- ER(9158529 client)
14449
14450 -- ER(9158529)
14451 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
14452 DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
14453 DBMS_SQL.bind_variable(query_hdl, 'inb_category_set_id', inv_mwb_globals.g_category_set_id);
14454 DBMS_SQL.bind_variable(query_hdl, 'inb_category_id', inv_mwb_globals.g_category_id);
14455 END IF;
14456 -- ER(9158529)
14457
14458 IF inv_mwb_globals.g_req_header_id IS NOT NULL
14459 OR (inv_mwb_globals.g_tree_node_type = 'DOCNUM'
14460 AND inv_mwb_globals.g_tree_doc_type_id = 2
14461 AND inv_mwb_globals.g_tree_node_value IS NOT NULL) THEN
14462 DBMS_SQL.bind_variable(query_hdl, 'inb_req_header_id', NVL(inv_mwb_globals.g_req_header_id, inv_mwb_globals.g_tree_node_value));
14463 END IF;
14464
14465
14466 IF inv_mwb_globals.g_inventory_item_id IS NULL
14467 AND inv_mwb_globals.g_item_description IS NOT NULL THEN
14468 DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
14469 END IF;
14470
14471 IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
14472 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
14473 ELSE
14474 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
14475 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
14476 END IF;
14477
14478 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
14479 DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
14480 END IF;
14481 END IF;
14482
14483 IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
14484 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
14485 ELSE
14486 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14487 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
14488 END IF;
14489
14490 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14491 DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
14492 END IF;
14493 END IF;
14494
14495 /* Bug 8396954 added below code for supplier_lot_number */
14496 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
14497 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
14498 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14499 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14500 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14501 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
14502 END IF;
14503
14504 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14505 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14506 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
14507 END IF;
14508
14509 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14510 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14511 DBMS_SQL.bind_variable(query_hdl, 'inb_supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
14512 END IF;
14513 END IF;
14514 /* End of Bug 8396954 */
14515
14516 DBMS_SQL.define_column(query_hdl, 1, item, 30);
14517 DBMS_SQL.define_column(query_hdl, 2, item_id);
14518
14519 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
14520
14521 LOOP
14522 -- fetch a row
14523 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
14524 -- fetch columns from the row
14525 DBMS_SQL.column_value(query_hdl, 1, item);
14526 DBMS_SQL.column_value(query_hdl, 2, item_id);
14527
14528 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
14529 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
14530 x_node_tbl(i).DEPTH := 1;
14531 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )); -- Bug 6350236
14532 x_node_tbl(i).icon := 'inv_item';
14533 x_node_tbl(i).VALUE := TO_CHAR(item_id);
14534 x_node_tbl(i).TYPE := 'ITEM';
14535 i := i + 1;
14536 END IF;
14537
14538 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
14539 j := j + 1;
14540 ELSE
14541 EXIT;
14542 END IF;
14543 END LOOP;
14544
14545 END IF; -- REQUISITION
14546
14547 DBMS_SQL.close_cursor(query_hdl); -- close cursor
14548 x_node_value := j;
14549 x_tbl_index := i;
14550 RETURN;
14551 END IF; -- g_tree_doc_type_id is not null
14552
14553
14554
14555
14556
14557 -- NSRIVAST, INVCONV, Start
14558 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
14559 is_grade_t := TRUE ;
14560 END IF ;
14561 -- NSRIVAST, INVCONV, End
14562 IF (
14563 inv_mwb_globals.g_serial_from IS NULL
14564 AND inv_mwb_globals.g_serial_to IS NULL
14565 AND inv_mwb_globals.g_tree_serial_number IS NULL
14566 AND inv_mwb_globals.g_unit_number IS NULL
14567 AND inv_mwb_globals.g_status_id IS NULL
14568 AND inv_mwb_globals.g_lpn_from IS NULL
14569 AND inv_mwb_globals.g_lpn_to IS NULL
14570 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
14571 AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
14572 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
14573 ) THEN
14574 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14575 table_required := ' mtl_rcv_mwb_onhand_v v ';
14576 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
14577 table_required := ' mtl_onhand_total_mwb_v v ';
14578 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
14579 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
14580 END IF; -- NSRIVAST, INVCONV
14581 ELSE
14582 table_required := ' mtl_onhand_total_v v ';
14583 END IF;
14584
14585 --bug 6633612
14586 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14587 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
14588 END IF;
14589 --bug 6633612
14590
14591 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
14592 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
14593 query_str := query_str || 'SELECT DISTINCT v.inventory_item_id, v.item from ' || table_required;
14594 query_str := query_str || 'WHERE 1=1 ';
14595 ELSE
14596 query_str :=
14597 query_str
14598 || 'SELECT DISTINCT v.inventory_item_id, v.item from'
14599 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14600 || inv_mwb_globals.g_tree_lot_attr_query
14601 || ') mln, '
14602 || table_required;
14603 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
14604 --BUG 7556505
14605 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14606 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14607 END IF;
14608 --BUG 7556505
14609 /* Bug 8396954 added below code for supplier_lot_number */
14610 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14611 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14612 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14613 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
14614 END IF;
14615
14616 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14617 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14618 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
14619 END IF;
14620
14621 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14622 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14623 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
14624 END IF;
14625 /* End of Bug 8396954 */
14626 END IF;
14627
14628 --Bug # 3539766 (Group by and having clause have been added)
14629 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
14630 group_str := ' GROUP BY v.organization_id ';
14631 END IF;
14632
14633 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14634 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14635 query_str := query_str || ' AND v.subinventory_code = :sub ';
14636 IF group_str IS NOT NULL THEN
14637 group_str := group_str || ' , v.subinventory_code ' ;
14638 END IF;
14639 END IF;
14640
14641 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14642 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14643 query_str := query_str || ' AND v.locator_id = :loc_id ';
14644 IF group_str IS NOT NULL THEN
14645 group_str := group_str || ' , v.locator_id ' ;
14646 END IF;
14647 END IF;
14648
14649 --bug 6633612
14650 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14651 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
14652 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
14653 || ' AND rt.organization_id = mmt.organization_id '
14654 || ' AND rt.transaction_type = ''DELIVER'''
14655 || ' AND rt.destination_type_code = ''INVENTORY'''
14656 || ' AND mmt.transaction_id = v.create_transaction_id '
14657 || ' AND mmt.organization_id = v.organization_id ';
14658
14659 END IF;
14660 --bug 6633612
14661
14662 -- NSRIVAST, INVCONV, Start
14663 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
14664 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
14665 END IF ;
14666 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
14667 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
14668 END IF ;
14669 -- NSRIVAST, INVCONV, End
14670
14671 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
14672 query_str := query_str || ' AND v.project_id = :pr_id ';
14673 IF group_str IS NOT NULL THEN
14674 group_str := group_str || ' , v.project_id ' ;
14675 END IF;
14676 END IF;
14677
14678 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
14679 query_str := query_str || ' AND v.task_id = :ta_id ';
14680 IF group_str IS NOT NULL THEN
14681 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
14682 END IF;
14683 END IF;
14684
14685 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
14686 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
14687 END IF;
14688
14689 -- ER(9158529 client)
14690 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
14691 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
14692 END IF;
14693 -- ER(9158529 client)
14694
14695 -- ER(9158529)
14696 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
14697 query_str := query_str || ' AND v.inventory_item_id in '
14698 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
14699 || ' where organization_id = :organization_id '
14700 || ' and category_set_id = :category_set_id '
14701 || ' and category_id = nvl(:category_id, category_id)) ' ;
14702 END IF;
14703 -- ER(9158529)
14704
14705 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
14706 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
14707 END IF;
14708
14709 --ER(3338592) Changes
14710 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
14711 query_str := query_str || ' AND v.item_description LIKE :item_description ';
14712 END IF;
14713
14714 IF inv_mwb_globals.g_revision IS NOT NULL THEN
14715 query_str := query_str || 'AND v.revision = :rev ';
14716 IF group_str IS NOT NULL THEN
14717 group_str := group_str || ' , v.revision ' ;
14718 END IF;
14719 END IF;
14720
14721 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14722 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
14723 IF group_str IS NOT NULL THEN
14724 group_str := group_str || ' , v.cost_group_id ' ;
14725 END IF;
14726 END IF;
14727
14728 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
14729 query_str := query_str || 'AND v.lot_number = :lot_n ';
14730 IF group_str IS NOT NULL THEN
14731 group_str := group_str || ' , v.lot_number ' ;
14732 END IF;
14733 END IF;
14734
14735 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14736 query_str := query_str || 'AND v.lot_number >= :lot_f ';
14737 END IF;
14738
14739 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14740 query_str := query_str || 'AND v.lot_number <= :lot_t ';
14741 END IF;
14742
14743 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
14744 -- from onhand table (MOQD)
14745 if (l_default_status_id is not null) then
14746 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14747 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
14748 END IF;
14749 else
14750 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14751 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
14752 query_str := query_str || 'v.lot_status_id = :st_id) ';
14753 END IF;
14754 end if;
14755
14756 IF inv_mwb_globals.g_containerized = 1 THEN
14757 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
14758 ELSIF inv_mwb_globals.g_containerized = 2 THEN
14759 query_str := query_str || 'AND v.containerized_flag = 1 ';
14760 END IF;
14761
14762
14763 /* IF inv_mwb_globals.g_view_by NOT IN ('SERIAL','LOT') THEN
14764 IF (inv_mwb_globals.g_lpn_from IS NULL
14765 AND inv_mwb_globals.g_lpn_to IS NULL)
14766 OR inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
14767 query_str := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
14768 ELSE
14769 query_str := query_str || 'AND containerized_flag = 1 ';
14770 END IF;
14771 END IF;
14772 */
14773
14774
14775 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
14776 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14777 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
14778 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
14779 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14780 query_str := query_str || ' AND planning_organization_id in ';
14781 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
14782 query_str := query_str || ' where vendor_id = :vendor_id )';
14783 END IF;*/
14784
14785 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
14786 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
14787 query_str := query_str || ' AND v.planning_tp_type = 2 ';
14788 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
14789 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
14790 query_str := query_str || ' AND v.planning_tp_type = 1 ';
14791 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
14792 query_str := query_str || ' AND v.planning_tp_type = 1 ';
14793 END IF;
14794
14795 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14796 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
14797 query_str := query_str || ' AND v.owning_tp_type = 2 ';
14798 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
14799 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
14800 query_str := query_str || ' AND v.owning_tp_type = 1 ';
14801 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
14802 query_str := query_str || ' AND v.owning_tp_type = 1 ';
14803 END IF;
14804
14805 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
14806 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
14807 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
14808 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
14809 END IF;
14810
14811 IF (inv_mwb_globals.g_locator_controlled = 2) THEN
14812 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
14813 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
14814 --don't add the below locator id not null check
14815 NULL;
14816 ELSE
14817 query_str := query_str || 'AND v.locator_id IS not NULL ';
14818 END IF;
14819 ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
14820 query_str := query_str || 'AND v.locator_id IS NULL ';
14821 END IF;
14822
14823
14824 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14825 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
14826 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
14827 query_str := query_str || ' AND v.subinventory_code is null AND v.locator_id is null ';
14828 END IF;
14829 --Bug#3191526
14830 END IF;
14831
14832 IF inv_mwb_globals.g_organization_id IS NOT NULL
14833 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
14834 query_str := query_str || 'AND v.organization_id = :org_id ';
14835 --Bug # 3411938
14836 ELSE
14837 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
14838 query_str := query_str || ' FROM org_access_view oav ' ;
14839 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
14840 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
14841 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
14842 END IF;
14843
14844 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
14845 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
14846 END IF;
14847
14848 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
14849 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
14850 END IF;
14851
14852 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
14853 query_str := query_str || group_str || having_str ;
14854 ELSE
14855 query_str := query_str || 'GROUP BY v.inventory_item_id, v.item ';
14856 END IF;
14857
14858 query_str := query_str || 'ORDER BY v.item ';
14859
14860 ELSIF(
14861 (
14862 inv_mwb_globals.g_serial_from IS NOT NULL
14863 OR inv_mwb_globals.g_serial_to IS NOT NULL
14864 OR inv_mwb_globals.g_tree_serial_number IS NOT NULL
14865 OR inv_mwb_globals.g_unit_number IS NOT NULL
14866 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
14867 )
14868 AND inv_mwb_globals.g_lpn_from IS NULL
14869 AND inv_mwb_globals.g_lpn_to IS NULL
14870 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
14871 AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
14872 ) THEN
14873 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14874 table_required := ' mtl_rcv_serial_oh_v v ';
14875 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
14876 table_required := ' mtl_onhand_serial_mwb_v v ';
14877 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
14878 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
14879 END IF; -- NSRIVAST, INVCONV
14880 ELSE
14881 table_required := ' mtl_onhand_serial_v v ';
14882 END IF;
14883
14884 --bug 6633612
14885 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14886 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
14887 END IF;
14888 --bug 6633612
14889
14890 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
14891 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
14892 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14893 query_str := query_str || 'SELECT DISTINCT v.inventory_item_id, v.item from ' || table_required;
14894 query_str := query_str || 'WHERE 1=1 ';
14895 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
14896 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
14897 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
14898 query_str :=
14899 query_str
14900 || 'SELECT DISTINCT v.inventory_item_id, v.item from'
14901 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
14902 || inv_mwb_globals.g_tree_serial_attr_query
14903 || ') msn, '
14904 || table_required;
14905 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
14906 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
14907 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
14908 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14909 query_str :=
14910 query_str
14911 || 'SELECT DISTINCT v.inventory_item_id, v.item from'
14912 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14913 || inv_mwb_globals.g_tree_lot_attr_query
14914 || ') mln, '
14915 || table_required;
14916 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
14917 --BUG 7556505
14918 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14919 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14920 END IF;
14921 --BUG 7556505
14922 /* Bug 8396954 added below code for supplier_lot_number */
14923 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14924 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14925 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14926 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
14927 END IF;
14928
14929 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14930 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14931 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
14932 END IF;
14933
14934 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14935 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14936 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
14937 END IF;
14938 /* End of Bug 8396954 */
14939 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
14940 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
14941 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
14942 query_str :=
14943 query_str
14944 || 'SELECT DISTINCT v.inventory_item_id, v.item from'
14945 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14946 || inv_mwb_globals.g_tree_lot_attr_query
14947 || ') mln, '
14948 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
14949 || inv_mwb_globals.g_tree_serial_attr_query
14950 || ') msn, '
14951 || table_required;
14952 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
14953 --BUG 7556505
14954 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14955 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14956 END IF;
14957 --BUG 7556505
14958 /* Bug 8396954 added below code for supplier_lot_number */
14959 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14960 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14961 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
14962 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
14963 END IF;
14964
14965 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
14966 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
14967 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
14968 END IF;
14969
14970 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
14971 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
14972 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
14973 END IF;
14974 /* End of Bug 8396954 */
14975 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
14976 END IF;
14977
14978 --Bug # 3539766 (Group By and Having clause have been added)
14979 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
14980 group_str := ' GROUP BY v.organization_id ';
14981 END IF;
14982
14983 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14984 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14985 query_str := query_str || 'AND v.subinventory_code = :sub ';
14986 IF group_str IS NOT NULL THEN
14987 group_str := group_str || ' , v.subinventory_code ' ;
14988 END IF;
14989 END IF;
14990
14991 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14992 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14993 query_str := query_str || 'AND v.locator_id = :loc_id ';
14994 IF group_str IS NOT NULL THEN
14995 group_str := group_str || ' , v.locator_id ' ;
14996 END IF;
14997 END IF;
14998 --bug 6633612
14999 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15000 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
15001 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
15002 || ' AND rt.organization_id = mmt.organization_id '
15003 || ' AND rt.transaction_type = ''DELIVER'''
15004 || ' AND rt.destination_type_code = ''INVENTORY'''
15005 || ' AND mmt.transaction_id = v.last_transaction_id '
15006 || ' AND mmt.organization_id = v.organization_id ';
15007
15008 END IF;
15009 --bug 6633612
15010
15011 -- NSRIVAST, INVCONV, Start
15012 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15013 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
15014 END IF ;
15015 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
15016 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
15017 END IF ;
15018 -- NSRIVAST, INVCONV, End
15019
15020 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15021 query_str := query_str || ' AND v.project_id = :pr_id ';
15022 IF group_str IS NOT NULL THEN
15023 group_str := group_str || ' , v.project_id ' ;
15024 END IF;
15025 END IF;
15026
15027 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15028 query_str := query_str || ' AND v.task_id = :ta_id ';
15029 IF group_str IS NOT NULL THEN
15030 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
15031 END IF;
15032 END IF;
15033
15034 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
15035 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
15036 END IF;
15037
15038 -- ER(9158529 client)
15039 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
15040 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
15041 END IF;
15042 -- ER(9158529 client)
15043
15044 -- ER(9158529)
15045 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
15046 query_str := query_str || ' AND v.inventory_item_id in '
15047 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
15048 || ' where organization_id = :organization_id '
15049 || ' and category_set_id = :category_set_id '
15050 || ' and category_id = nvl(:category_id, category_id)) ' ;
15051 END IF;
15052 -- ER(9158529)
15053
15054 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15055 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
15056 END IF;
15057
15058 --ER(3338592) Changes
15059 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15060 query_str := query_str || ' AND v.item_description LIKE :item_description ';
15061 END IF;
15062
15063 IF inv_mwb_globals.g_revision IS NOT NULL THEN
15064 query_str := query_str || ' AND v.revision = :rev ';
15065 IF group_str IS NOT NULL THEN
15066 group_str := group_str || ' , v.revision ' ;
15067 END IF;
15068 END IF;
15069
15070 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15071 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
15072 IF group_str IS NOT NULL THEN
15073 group_str := group_str || ' , v.cost_group_id ' ;
15074 END IF;
15075 END IF;
15076
15077 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
15078 query_str := query_str || ' AND v.lot_number = :lot_n ';
15079 IF group_str IS NOT NULL THEN
15080 group_str := group_str || ' , v.lot_number ' ;
15081 END IF;
15082 END IF;
15083
15084 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15085 query_str := query_str || ' AND v.lot_number >= :lot_f ';
15086 END IF;
15087
15088 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15089 query_str := query_str || ' AND v.lot_number <= :lot_t ';
15090 END IF;
15091
15092 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
15093 query_str := query_str || ' AND v.serial_number = :serial_n ';
15094 IF group_str IS NOT NULL THEN
15095 group_str := group_str || ' , v.serial_number ' ;
15096 END IF;
15097 END IF;
15098
15099 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
15100 query_str := query_str || ' AND v.serial_number >= :serial_f ';
15101 END IF;
15102
15103 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
15104 query_str := query_str || ' AND v.serial_number <= :serial_t ';
15105 END IF;
15106
15107 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
15108 query_str := query_str || ' AND v.unit_number = :un_id ';
15109 IF group_str IS NOT NULL THEN
15110 group_str := group_str || ' , v.unit_number ' ;
15111 END IF;
15112 END IF;
15113
15114 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
15115 -- from serial table (MSN)
15116 if (l_default_status_id is not null) then
15117 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15118 query_str := query_str || 'AND v.serial_status_id = :st_id ';
15119 END IF;
15120 else
15121 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15122 query_str := query_str || ' AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
15123 query_str := query_str || ' v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
15124 END IF;
15125 end if;
15126
15127 IF inv_mwb_globals.g_containerized = 1 THEN
15128 query_str := query_str || 'AND v.lpn_id IS NULL ';
15129 ELSIF inv_mwb_globals.g_containerized = 2 THEN
15130 query_str := query_str || 'AND v.lpn_id IS NOT NULL ';
15131 END IF;
15132
15133
15134 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
15135 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
15136 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
15137 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
15138 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
15139 query_str := query_str || ' AND planning_organization_id in ';
15140 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
15141 query_str := query_str || ' where vendor_id = :vendor_id )';
15142 END IF;*/
15143
15144 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
15145 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
15146 query_str := query_str || ' AND v.planning_tp_type = 2 ';
15147 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
15148 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
15149 query_str := query_str || ' AND v.planning_tp_type = 1 ';
15150 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
15151 query_str := query_str || ' AND v.planning_tp_type = 1 ';
15152 END IF;
15153
15154 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
15155 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
15156 query_str := query_str || ' AND v.owning_tp_type = 2 ';
15157 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15158 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
15159 query_str := query_str || ' AND v.owning_tp_type = 1 ';
15160 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
15161 query_str := query_str || ' AND v.owning_tp_type = 1 ';
15162 END IF;
15163
15164 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15165 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
15166 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
15167 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
15168 END IF;
15169
15170 IF (inv_mwb_globals.g_locator_controlled = 2) THEN
15171 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
15172 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
15173 --don't add the below locator id not null check
15174 NULL;
15175 ELSE
15176 query_str := query_str || 'AND v.locator_id IS not NULL ';
15177 END IF;
15178 ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
15179 query_str := query_str || 'AND v.locator_id IS NULL ';
15180 END IF;
15181
15182 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
15183 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
15184 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
15185 query_str := query_str || ' AND v.subinventory_code is null AND v.locator_id is null ';
15186 END IF;
15187 --Bug#3191526
15188 END IF;
15189
15190 IF inv_mwb_globals.g_organization_id IS NOT NULL
15191 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15192 query_str := query_str || 'AND v.organization_id = :org_id ';
15193 --Bug # 3411938
15194 ELSE
15195 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
15196 query_str := query_str || ' FROM org_access_view oav ' ;
15197 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
15198 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
15199 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
15200 END IF;
15201
15202 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
15203 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
15204 END IF;
15205
15206 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
15207 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
15208 END IF;
15209
15210 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15211 query_str := query_str || group_str || having_str ;
15212 ELSE
15213 query_str := query_str || 'GROUP BY v.inventory_item_id, v.item ';
15214 END IF;
15215
15216 query_str := query_str || 'ORDER BY v.item ';
15217
15218 -- Need to use both mtl_onhand_total_v and mtl_onhand_serial_v
15219 ELSIF(
15220 inv_mwb_globals.g_serial_from IS NULL
15221 AND inv_mwb_globals.g_serial_to IS NULL
15222 AND inv_mwb_globals.g_tree_serial_number IS NULL
15223 AND inv_mwb_globals.g_status_id IS NOT NULL
15224 AND inv_mwb_globals.g_unit_number IS NULL
15225 AND inv_mwb_globals.g_lpn_from IS NULL
15226 AND inv_mwb_globals.g_lpn_to IS NULL
15227 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
15228 AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
15229 ) THEN
15230 query_str := 'SELECT DISTINCT inventory_item_id, item from( ';
15231
15232 IF (inv_mwb_globals.g_status_id IS NULL) THEN
15233 table_required := ' mtl_onhand_total_mwb_v v ';
15234 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
15235 -- table_required := ' mtl_onhand_new_lpn_v mot '; -- NSRIVAST, INVCONV
15236 ELSE
15237 table_required := ' mtl_onhand_total_v v ';
15238 END IF;
15239 --bug 6633612
15240 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15241 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
15242 END IF;
15243 --bug 6633612
15244
15245 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
15246 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
15247 query_str := query_str || 'SELECT v.inventory_item_id inventory_item_id, v.item item from ' || table_required;
15248 query_str := query_str || 'WHERE 1=1 ';
15249 ELSE
15250 query_str :=
15251 query_str
15252 || 'SELECT v.inventory_item_id inventory_item_id, v.item item from'
15253 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
15254 || inv_mwb_globals.g_tree_lot_attr_query
15255 || ') mln, mtl_onhand_total_v v ';
15256 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
15257 --BUG 7556505
15258 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15259 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15260 END IF;
15261 --BUG 7556505
15262 /* Bug 8396954 added below code for supplier_lot_number */
15263 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15264 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15265 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
15266 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
15267 END IF;
15268
15269 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15270 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
15271 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
15272 END IF;
15273
15274 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15275 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
15276 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
15277 END IF;
15278 /* End of Bug 8396954 */
15279 END IF;
15280
15281 -- Bug #3539766 (Group By and Having Clause have been added)
15282 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15283 group_str := ' GROUP BY v.organization_id ';
15284 END IF;
15285
15286 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
15287 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15288 query_str := query_str || 'AND v.subinventory_code = :sub ';
15289 IF group_str IS NOT NULL THEN
15290 group_str := group_str || ' , v.subinventory_code ' ;
15291 END IF;
15292 END IF;
15293
15294 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
15295 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
15296 query_str := query_str || 'AND v.locator_id = :loc_id ';
15297 IF group_str IS NOT NULL THEN
15298 group_str := group_str || ' , v.locator_id ' ;
15299 END IF;
15300 END IF;
15301
15302 --bug 6633612
15303 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15304 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
15305 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
15306 || ' AND rt.organization_id = mmt.organization_id '
15307 || ' AND rt.transaction_type = ''DELIVER'''
15308 || ' AND rt.destination_type_code = ''INVENTORY'''
15309 || ' AND mmt.transaction_id = v.create_transaction_id '
15310 || ' AND mmt.organization_id = v.organization_id ';
15311
15312 END IF;
15313 --bug 6633612
15314
15315 -- NSRIVAST, INVCONV, Start
15316 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15317 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
15318 END IF ;
15319 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
15320 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
15321 END IF ;
15322 -- NSRIVAST, INVCONV, End
15323
15324 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15325 query_str := query_str || ' AND v.project_id = :pr_id ';
15326 IF group_str IS NOT NULL THEN
15327 group_str := group_str || ' , v.project_id ' ;
15328 END IF;
15329 END IF;
15330
15331 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15332 query_str := query_str || ' AND v.task_id = :ta_id ';
15333 IF group_str IS NOT NULL THEN
15334 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
15335 END IF;
15336 END IF;
15337
15338 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
15339 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
15340 END IF;
15341
15342 -- ER(9158529 client)
15343 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
15344 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
15345 END IF;
15346 -- ER(9158529 client)
15347
15348 -- ER(9158529)
15349 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
15350 query_str := query_str || ' AND v.inventory_item_id in '
15351 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
15352 || ' where organization_id = :organization_id '
15353 || ' and category_set_id = :category_set_id '
15354 || ' and category_id = nvl(:category_id, category_id)) ' ;
15355 END IF;
15356 -- ER(9158529)
15357
15358 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15359 group_str := group_str || ' ,v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
15360 END IF;
15361
15362 --ER(3335892) Changes
15363 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15364 query_str := query_str || ' AND v.item_description LIKE :item_description ';
15365 END IF;
15366
15367 IF inv_mwb_globals.g_revision IS NOT NULL THEN
15368 query_str := query_str || 'AND v.revision = :rev ';
15369 IF group_str IS NOT NULL THEN
15370 group_str := group_str || ' , v.revision ' ;
15371 END IF;
15372 END IF;
15373
15374 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15375 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
15376 IF group_str IS NOT NULL THEN
15377 group_str := group_str || ' , v.cost_group_id ' ;
15378 END IF;
15379 END IF;
15380
15381 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
15382 query_str := query_str || 'AND v.lot_number = :lot_n ';
15383 IF group_str IS NOT NULL THEN
15384 group_str := group_str || ' , v.lot_number ' ;
15385 END IF;
15386 END IF;
15387
15388 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15389 query_str := query_str || 'AND v.lot_number >= :lot_f ';
15390 END IF;
15391
15392 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15393 query_str := query_str || 'AND v.lot_number <= :lot_t ';
15394 END IF;
15395
15396 -- Onhand Material Status Support: Status needs to be checked from the onhand table
15397 if (l_default_status_id is not null) then
15398 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15399 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
15400 END IF;
15401 else
15402 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15403 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or ';
15404 query_str := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
15405 END IF;
15406 end if;
15407
15408 IF inv_mwb_globals.g_containerized = 1 THEN
15409 query_str := query_str || 'AND v.lpn_id IS NOT NULL ';
15410 ELSIF inv_mwb_globals.g_containerized = 2 THEN
15411 query_str := query_str || 'AND v.lpn_id IS NULL ';
15412 END IF;
15413
15414 /*query_str := query_str || ' AND eixsts ';
15415 || ' ( select null from mtl_system_items msi WHERE ';
15416 || ' moq.organization_id = msi.organization_id and ';
15417 || ' moq.inventory_item_id = msi.inventory_item_id) and ';
15418 || ' serial_number_control_code in (1,6) ) ';*/
15419
15420 --query_str := query_str || 'AND serial_number_control_code in (1,6) ';
15421 query_str := query_str || 'AND v.item_serial_control in (1,6) ';
15422
15423 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
15424 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
15425 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
15426 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
15427 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
15428 query_str := query_str || ' AND planning_organization_id in ';
15429 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
15430 query_str := query_str || ' where vendor_id = :vendor_id )';
15431 END IF;*/
15432
15433 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
15434 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
15435 query_str := query_str || ' AND v.planning_tp_type = 2 ';
15436 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
15437 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
15438 query_str := query_str || ' AND v.planning_tp_type = 1 ';
15439 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
15440 query_str := query_str || ' AND v.planning_tp_type = 1 ';
15441 END IF;
15442
15443 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
15444 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
15445 query_str := query_str || ' AND v.owning_tp_type = 2 ';
15446 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15447 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
15448 query_str := query_str || ' AND v.owning_tp_type = 1 ';
15449 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
15450 query_str := query_str || ' AND v.owning_tp_type = 1 ';
15451 END IF;
15452
15453 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15454 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
15455 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
15456 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
15457 END IF;
15458
15459 IF (inv_mwb_globals.g_locator_controlled = 2) THEN
15460 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
15461 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
15462 --don't add the below locator id not null check
15463 NULL;
15464 ELSE
15465 query_str := query_str || 'AND v.locator_id IS not NULL ';
15466 END IF;
15467 ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
15468 query_str := query_str || 'AND v.locator_id IS NULL ';
15469 END IF;
15470
15471 IF inv_mwb_globals.g_organization_id IS NOT NULL
15472 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15473 query_str := query_str || 'AND v.organization_id = :org_id ';
15474 ELSE
15475 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
15476 query_str := query_str || ' FROM org_access_view oav ' ;
15477 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
15478 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
15479 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
15480 END IF;
15481
15482 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
15483 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
15484 END IF;
15485
15486 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
15487 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
15488 END IF;
15489
15490 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15491 query_str := query_str || group_str || having_str ;
15492 ELSE
15493 query_str := query_str || 'GROUP BY v.inventory_item_id, v.item ';
15494 END IF;
15495
15496 query_str := query_str || 'UNION ';
15497
15498 --Reinitializing the variable
15499 having_str := ' HAVING 1=1 ' ;
15500
15501 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
15502 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
15503 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
15504 query_str := query_str || 'SELECT v.inventory_item_id inventory_item_id, v.item item from mtl_onhand_serial_v v ';
15505 query_str := query_str || 'WHERE 1=1 ';
15506 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
15507 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
15508 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
15509 query_str :=
15510 query_str
15511 || 'SELECT v.inventory_item_id inventory_item_id, v.item item from'
15512 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
15513 || inv_mwb_globals.g_tree_lot_attr_query
15514 || ') mln, mtl_onhand_serial_v v ';
15515 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
15516 --BUG 7556505
15517 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15518 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15519 END IF;
15520 --BUG 7556505
15521 /* Bug 8396954 added below code for supplier_lot_number */
15522 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15523 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15524 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
15525 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
15526 END IF;
15527
15528 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15529 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
15530 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
15531 END IF;
15532
15533 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15534 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
15535 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
15536 END IF;
15537 /* End of Bug 8396954 */
15538 END IF;
15539
15540 --Bug #3539766 (Group By and Having clause have been added)
15541 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15542 group_str := ' GROUP BY v.organization_id ';
15543 END IF;
15544
15545 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
15546 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15547 query_str := query_str || 'AND v.subinventory_code = :sub ';
15548 IF group_str IS NOT NULL THEN
15549 group_str := group_str || ' , v.subinventory_code ' ;
15550 END IF;
15551 END IF;
15552
15553 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
15554 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
15555 query_str := query_str || 'AND v.locator_id = :loc_id ';
15556 IF group_str IS NOT NULL THEN
15557 group_str := group_str || ' , v.locator_id ' ;
15558 END IF;
15559 END IF;
15560
15561 --bug 6633612
15562 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15563 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
15564 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
15565 || ' AND rt.organization_id = mmt.organization_id '
15566 || ' AND rt.transaction_type = ''DELIVER'''
15567 || ' AND rt.destination_type_code = ''INVENTORY'''
15568 || ' AND mmt.transaction_id = v.last_transaction_id '
15569 || ' AND mmt.organization_id = v.organization_id ';
15570
15571 END IF;
15572 --bug 6633612
15573
15574 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15575 query_str := query_str || ' AND v.project_id = :pr_id ';
15576 IF group_str IS NOT NULL THEN
15577 group_str := group_str || ' , v.project_id ' ;
15578 END IF;
15579 END IF;
15580
15581 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15582 query_str := query_str || ' AND v.task_id = :ta_id ';
15583 IF group_str IS NOT NULL THEN
15584 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
15585 END IF;
15586 END IF;
15587
15588 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
15589 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
15590 END IF;
15591
15592 -- ER(9158529 client)
15593 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
15594 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
15595 END IF;
15596 -- ER(9158529 client)
15597
15598 -- ER(9158529)
15599 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
15600 query_str := query_str || ' AND v.inventory_item_id in '
15601 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
15602 || ' where organization_id = :organization_id '
15603 || ' and category_set_id = :category_set_id '
15604 || ' and category_id = nvl(:category_id, category_id)) ' ;
15605 END IF;
15606 -- ER(9158529)
15607
15608 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15609 group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
15610 END IF;
15611
15612 --ER(3338592) Changes
15613 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15614 query_str := query_str || ' AND v.item_description LIKE :item_description ';
15615 END IF;
15616
15617 IF inv_mwb_globals.g_revision IS NOT NULL THEN
15618 query_str := query_str || 'AND v.revision = :rev ';
15619 IF group_str IS NOT NULL THEN
15620 group_str := group_str || ' , v.revision ' ;
15621 END IF;
15622 END IF;
15623
15624 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15625 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
15626 IF group_str IS NOT NULL THEN
15627 group_str := group_str || ' , v.cost_group_id ' ;
15628 END IF;
15629 END IF;
15630
15631 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
15632 query_str := query_str || 'AND v.lot_number = :lot_n ';
15633 IF group_str IS NOT NULL THEN
15634 group_str := group_str || ' , v.lot_number ' ;
15635 END IF;
15636 END IF;
15637
15638 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15639 query_str := query_str || 'AND v.lot_number >= :lot_f ';
15640 END IF;
15641
15642 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15643 query_str := query_str || 'AND v.lot_number <= :lot_t ';
15644 END IF;
15645
15646 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
15647 query_str := query_str || 'AND v.serial_number >= :serial_f ';
15648 END IF;
15649
15650 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
15651 query_str := query_str || 'AND v.serial_number <= :serial_t ';
15652 END IF;
15653
15654 -- Onhand Material Status Support: Status needs to be checked from the serial table (MSN)
15655 if (l_default_status_id is not null) then
15656 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15657 query_str := query_str || 'AND v.serial_status_id = :st_id ';
15658 END IF;
15659 else
15660 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15661 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
15662 query_str := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
15663 END IF;
15664 end if;
15665
15666 /*IF(inv_mwb_globals.g_vendor_id IS NULL AND inv_mwb_globals.g_site_id IS NULL) THEN
15667 IF inv_mwb_globals.g_containerized = 1 THEN
15668 query_str := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
15669 ELSIF inv_mwb_globals.g_containerized = 2 THEN
15670 query_str := query_str || 'AND containerized_flag = 1 ';
15671 END IF;
15672 END IF;*/
15673
15674 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
15675 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
15676 query_str := query_str || ' AND v.planning_tp_type = 2 ';
15677 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
15678 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
15679 query_str := query_str || ' AND v.planning_tp_type = 1 ';
15680 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
15681 query_str := query_str || ' AND v.planning_tp_type = 1 ';
15682 END IF;
15683
15684 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
15685 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
15686 query_str := query_str || ' AND v.owning_tp_type = 2 ';
15687 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15688 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
15689 query_str := query_str || ' AND v.owning_tp_type = 1 ';
15690 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
15691 query_str := query_str || ' AND v.owning_tp_type = 1 ';
15692 END IF;
15693
15694 IF (inv_mwb_globals.g_locator_controlled = 2) THEN
15695 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
15696 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
15697 --don't add the below locator id not null check
15698 NULL;
15699 ELSE
15700 query_str := query_str || 'AND v.locator_id IS not NULL ';
15701 END IF;
15702 ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
15703 query_str := query_str || 'AND v.locator_id IS NULL ';
15704 END IF;
15705
15706 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15707 group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
15708 group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
15709 group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
15710 END IF;
15711
15712 IF inv_mwb_globals.g_organization_id IS NOT NULL
15713 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15714 query_str := query_str || 'AND v.organization_id = :org_id ';
15715 --Bug # 3411938
15716 ELSE
15717 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
15718 query_str := query_str || ' FROM org_access_view oav ' ;
15719 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
15720 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
15721 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
15722 END IF;
15723
15724 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
15725 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
15726 END IF;
15727
15728 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
15729 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
15730 END IF;
15731
15732 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15733 query_str := query_str || group_str || having_str ;
15734 ELSE
15735 query_str := query_str || ' GROUP BY v.inventory_item_id, v.item ';
15736 END IF;
15737
15738 query_str := query_str || ') GROUP BY inventory_item_id, item ';
15739 query_str := query_str || ' ORDER BY item ';
15740
15741 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
15742 OR inv_mwb_globals.g_lpn_to IS NOT NULL
15743 OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
15744 OR(NVL(inv_mwb_globals.g_prepacked, 1) <> 1)) THEN
15745 IF (inv_mwb_globals.g_status_id IS NULL) THEN
15746 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
15747 table_required := ' mtl_onhand_lpn_mwb_v mol ';
15748 ELSIF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
15749 table_required := ' mtl_onhand_lpn_mwb_v mol ';
15750 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
15751 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
15752 END IF; -- NSRIVAST, INVCONV
15753 ELSE
15754 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
15755 IF is_grade_t = TRUE THEN -- %NSRIVAST, INVCONV
15756 table_required := ' mtl_onhand_new_lpn_v mol '; -- %NSRIVAST, INVCONV
15757 END IF;
15758 END IF;
15759 ELSE
15760 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
15761 table_required := ' mtl_onhand_lpn_v mol ';
15762 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
15763 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
15764 END IF; -- NSRIVAST, INVCONV
15765 ELSE
15766 table_required := ' mtl_onhand_new_lpn_v mol ';
15767 END IF;
15768 END IF;
15769
15770 query_str := 'SELECT DISTINCT inventory_item_id, item ';
15771 query_str := query_str || 'FROM ' || table_required;
15772
15773 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
15774 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
15775 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
15776 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
15777 query_str := query_str || ' WHERE 1=1 ';
15778
15779 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
15780 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
15781 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
15782 query_str := query_str || ' AND wlpn.subinventory_code is null AND wlpn.locator_id is null ';
15783 END IF;
15784 --Bug#3191526
15785 query_str := query_str || ' AND lpn_context = 3 ';
15786 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
15787 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 or lpn_context=8)';--12984304
15788 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
15789 query_str := query_str || 'AND lpn_context = 1 ';
15790 ELSIF inv_mwb_globals.g_prepacked <> 1
15791 AND inv_mwb_globals.g_prepacked <> 999 THEN
15792 query_str := query_str || 'AND lpn_context = :prepacked ';
15793 END IF;
15794
15795 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
15796 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
15797 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
15798 END IF;
15799
15800 -- NSRIVAST, INVCONV, Start
15801 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15802 query_str := query_str || ' AND grade_code = :grade_f ' ;
15803 END IF ;
15804 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
15805 query_str := query_str || ' AND grade_code = :grade_c ' ;
15806 END IF ;
15807 -- NSRIVAST, INVCONV, End
15808
15809 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
15810 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15811 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
15812 END IF;
15813
15814 IF inv_mwb_globals.g_organization_id IS NOT NULL
15815 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15816 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
15817 END IF;
15818
15819
15820
15821 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
15822 query_str := query_str || ' and license_plate_number = :lpn_f ';
15823 ELSE
15824 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
15825 query_str := query_str || ' and license_plate_number >= :lpn_f ';
15826 END IF;
15827 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
15828 query_str := query_str || ' and license_plate_number >= :lpn_t ';
15829 END IF;
15830 END IF;
15831
15832
15833 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
15834 END IF;
15835
15836 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
15837 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
15838 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
15839 query_str := query_str || 'WHERE 1=1 ';
15840 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
15841 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
15842 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
15843 query_str :=
15844 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
15845 || ') msn ';
15846 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
15847 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
15848 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
15849 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
15850 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
15851 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
15852 --BUG 7556505
15853 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15854 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15855 END IF;
15856 --BUG 7556505
15857 /* Bug 8396954 added below code for supplier_lot_number */
15858 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15859 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15860 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
15861 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
15862 END IF;
15863
15864 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15865 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
15866 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
15867 END IF;
15868
15869 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15870 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
15871 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
15872 END IF;
15873 /* End of Bug 8396954 */
15874 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
15875 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
15876 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
15877 query_str :=
15878 query_str
15879 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
15880 || inv_mwb_globals.g_tree_lot_attr_query
15881 || ') mln '
15882 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
15883 || inv_mwb_globals.g_tree_serial_attr_query
15884 || ') msn ';
15885 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
15886 --BUG 7556505
15887 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15888 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15889 END IF;
15890 --BUG 7556505
15891 /* Bug 8396954 added below code for supplier_lot_number */
15892 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15893 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15894 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
15895 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
15896 END IF;
15897
15898 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
15899 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
15900 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
15901 END IF;
15902
15903 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
15904 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
15905 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
15906 END IF;
15907 /* End of Bug 8396954 */
15908 query_str := query_str || 'AND msn.serial_num = serial_number ';
15909 END IF;
15910
15911 --Bug # 3411938 (Group By and Having clause have been added)
15912 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15913 group_str := ' GROUP BY organization_id ';
15914 END IF;
15915
15916 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
15917 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15918 query_str := query_str || 'AND subinventory_code = :sub ';
15919 IF group_str IS NOT NULL THEN
15920 group_str := group_str || ' , subinventory_code ' ;
15921 END IF;
15922 END IF;
15923
15924 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
15925 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
15926 query_str := query_str || 'AND locator_id = :loc_id ';
15927 IF group_str IS NOT NULL THEN
15928 group_str := group_str || ' , locator_id ' ;
15929 END IF;
15930 END IF;
15931
15932 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15933 query_str := query_str || ' AND project_id = :pr_id ';
15934 IF group_str IS NOT NULL THEN
15935 group_str := group_str || ' , project_id ' ;
15936 END IF;
15937 END IF;
15938
15939 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15940 query_str := query_str || ' AND task_id = :ta_id ';
15941 IF group_str IS NOT NULL THEN
15942 group_str := group_str || ' , inv_mwb_globals.g_task_id ' ;
15943 END IF;
15944 END IF;
15945
15946 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
15947 query_str := query_str || 'AND inventory_item_id = :item_id ';
15948 END IF;
15949
15950 -- ER(9158529 client)
15951 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
15952 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
15953 END IF;
15954 -- ER(9158529 client)
15955
15956 -- ER(9158529)
15957 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
15958 query_str := query_str || ' AND inventory_item_id in '
15959 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
15960 || ' where organization_id = :organization_id '
15961 || ' and category_set_id = :category_set_id '
15962 || ' and category_id = nvl(:category_id, category_id)) ' ;
15963 END IF;
15964 -- ER(9158529)
15965
15966 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
15967 group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
15968 END IF;
15969
15970 --ER(3338592) Changes
15971 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15972 query_str := query_str || ' AND item_description LIKE :item_description ';
15973 END IF;
15974
15975 -- %NSRIVAST, INVCONV, Start
15976 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15977 query_str := query_str || ' AND grade_code = :grade_f ' ;
15978 END IF ;
15979 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
15980 query_str := query_str || ' AND grade_code = :grade_c ' ;
15981 END IF ;
15982 -- %NSRIVAST, INVCONV, End
15983
15984 IF inv_mwb_globals.g_revision IS NOT NULL THEN
15985 query_str := query_str || 'AND revision = :rev ';
15986 IF group_str IS NOT NULL THEN
15987 group_str := group_str || ' , revision ' ;
15988 END IF;
15989 END IF;
15990
15991 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15992 query_str := query_str || 'AND cost_group_id = :cg_id ';
15993 IF group_str IS NOT NULL THEN
15994 group_str := group_str || ' , cost_group_id ' ;
15995 END IF;
15996 END IF;
15997
15998 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
15999 query_str := query_str || 'AND lot_number = :lot_n ';
16000 IF group_str IS NOT NULL THEN
16001 group_str := group_str || ' , lot_number ' ;
16002 END IF;
16003 END IF;
16004
16005 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16006 query_str := query_str || 'AND lot_number >= :lot_f ';
16007 END IF;
16008
16009 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16010 query_str := query_str || 'AND lot_number <= :lot_t ';
16011 END IF;
16012
16013 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
16014 query_str := query_str || 'AND serial_number = :serial_n ';
16015 IF group_str IS NOT NULL THEN
16016 group_str := group_str || ' , serial_number ' ;
16017 END IF;
16018 END IF;
16019
16020 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
16021 query_str := query_str || 'AND serial_number >= :serial_f ';
16022 END IF;
16023
16024 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
16025 query_str := query_str || 'AND serial_number <= :serial_t ';
16026 END IF;
16027
16028 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
16029 query_str := query_str || ' AND unit_number = :un_id ';
16030 IF group_str IS NOT NULL THEN
16031 group_str := group_str || ' , unit_number ' ;
16032 END IF;
16033 END IF;
16034
16035 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
16036 query_str := query_str || 'AND MOL.lpn_id = :plpn_id ';
16037 IF group_str IS NOT NULL THEN
16038 group_str := group_str || ' , MOL.lpn_id ' ;
16039 END IF;
16040 END IF;
16041
16042 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
16043 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
16044 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
16045 query_str := query_str || ' AND mol.subinventory_code is null AND mol.locator_id is null ';
16046 END IF;
16047 --Bug#3191526
16048 query_str := query_str || ' AND lpn_context = 3 ';
16049 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
16050 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 or lpn_context=8 ) ';--12984304
16051 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
16052 query_str := query_str || 'AND lpn_context = 1 ';
16053 ELSIF inv_mwb_globals.g_prepacked <> 1
16054 AND inv_mwb_globals.g_prepacked <> 999 THEN
16055 query_str := query_str || 'AND lpn_context = :prepacked ';
16056 END IF;
16057
16058 /*
16059 IF inv_mwb_globals.g_lpn_from IS NOT NULL
16060 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
16061 query_str := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
16062 END IF;
16063 */
16064 /*LPN Status Project */
16065 IF l_default_status_id IS NOT NULL THEN
16066 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16067 query_str := query_str || ' AND onhand_status_id = :st_id ';
16068 END IF;
16069 ELSE
16070 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16071 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
16072 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id OR :st_id IS NULL) ';
16073 END IF;
16074 END IF;
16075 /* End of fix for LPN Status Project */
16076
16077 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
16078 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
16079 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
16080 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
16081 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
16082 query_str := query_str || ' AND planning_organization_id in ';
16083 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
16084 query_str := query_str || ' where vendor_id = :vendor_id )';
16085 END IF;*/
16086
16087 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
16088 query_str := query_str || ' AND planning_organization_id = :plan_org ';
16089 query_str := query_str || ' AND planning_tp_type = 2 ';
16090 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
16091 query_str := query_str || ' AND planning_organization_id = :plan_org ';
16092 query_str := query_str || ' AND planning_tp_type = 1 ';
16093 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
16094 query_str := query_str || ' AND planning_tp_type = 1 ';
16095 END IF;
16096
16097 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
16098 query_str := query_str || ' AND owning_organization_id = :own_org ';
16099 query_str := query_str || ' AND owning_tp_type = 2 ';
16100 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
16101 query_str := query_str || ' AND owning_organization_id = :own_org ';
16102 query_str := query_str || ' AND owning_tp_type = 1 ';
16103 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
16104 query_str := query_str || ' AND owning_tp_type = 1 ';
16105 END IF;
16106
16107 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
16108 group_str := group_str || ' , planning_organization_id, planning_tp_type ';
16109 group_str := group_str || ' , owning_organization_id, owning_tp_type ';
16110 group_str := group_str || ' , item_lot_control, item_serial_control ';
16111 END IF;
16112
16113 IF (inv_mwb_globals.g_locator_controlled = 2) THEN
16114 --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
16115 IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
16116 --don't add the below locator id not null check
16117 NULL;
16118 ELSE
16119 query_str := query_str || 'AND locator_id IS not NULL ';
16120 END IF;
16121 ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
16122 query_str := query_str || 'AND locator_id IS NULL ';
16123 END IF;
16124
16125
16126 IF inv_mwb_globals.g_organization_id IS NOT NULL
16127 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16128 query_str := query_str || 'AND organization_id = :org_id ';
16129 ELSE
16130 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
16131 query_str := query_str || ' FROM org_access_view oav ' ;
16132 query_str := query_str || ' WHERE oav.organization_id = mol.organization_id ' ;
16133 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
16134 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
16135 END IF;
16136
16137 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
16138 having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
16139 END IF;
16140
16141 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
16142 having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
16143 END IF;
16144
16145 IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
16146 query_str := query_str || group_str || having_str ;
16147 ELSE
16148 query_str := query_str || ' GROUP BY inventory_item_id, item ';
16149 END IF;
16150
16151 query_str := query_str || ' ORDER BY item ';
16152
16153 END IF;
16154
16155
16156 -- Enable this during debugging
16157 inv_trx_util_pub.trace(query_str, 'Material Workbench - Add Items : ', 9);
16158 --trace1(query_str, 'add_items', 9);
16159 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
16160 inv_mwb_globals.g_last_query := query_str;
16161 query_hdl := DBMS_SQL.open_cursor;
16162 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
16163
16164
16165 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16166 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -1 ');
16167 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
16168 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
16169 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -2 ');
16170 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
16171 END IF;
16172 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' After -1 ');
16173 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
16174 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -3 ');
16175 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
16176 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16177 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -4 ');
16178 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
16179 END IF;
16180
16181 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
16182 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -5 ');
16183 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
16184 ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
16185 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -6 ');
16186 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
16187 END IF;
16188
16189 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
16190 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -7 ');
16191 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
16192 END IF;
16193
16194 -- ER(9158529 client)
16195 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
16196 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -7.2 ');
16197 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
16198 END IF;
16199 -- ER(9158529 client)
16200
16201 -- ER(9158529)
16202 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
16203 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -7.1 ');
16204 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
16205 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
16206 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
16207 END IF;
16208 -- ER(9158529)
16209
16210 IF inv_mwb_globals.g_revision IS NOT NULL THEN
16211 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -8 ');
16212 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
16213 END IF;
16214
16215 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16216 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -10 ');
16217 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
16218 END IF;
16219
16220 --BUG 7556505
16221 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16222 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -11.11 ');
16223 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
16224 END IF;
16225 --BUG 7556505
16226
16227 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16228 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -11 ');
16229 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
16230 END IF;
16231
16232 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16233 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -12 ');
16234 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
16235 END IF;
16236
16237 /* Bug 8396954 added below code for supplier_lot_number */
16238 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16239 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16240 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
16241 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -13.1 ');
16242 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
16243 END IF;
16244
16245 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16246 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
16247 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -13.2 ');
16248 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
16249 END IF;
16250
16251 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16252 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
16253 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -13.3 ');
16254 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
16255 END IF;
16256 /* End of Bug 8396954 */
16257
16258 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
16259 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -13 ');
16260 DBMS_SQL.bind_variable(query_hdl, 'lot_n', inv_mwb_globals.g_tree_lot_number);
16261 END IF;
16262
16263 -- NSRIVAST, INVCONV, Start
16264 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
16265 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -14');
16266 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
16267 END IF;
16268 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
16269 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -15 ');
16270 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
16271 END IF;
16272 -- NSRIVAST, INVCONV, End
16273
16274 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
16275 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -16 ');
16276 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
16277 END IF;
16278
16279 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
16280 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -17');
16281 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
16282 END IF;
16283
16284 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
16285 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -18 ');
16286 DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
16287 END IF;
16288
16289 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
16290 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
16291 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -19 ');
16292 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
16293 ELSE
16294 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
16295 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -20 ');
16296 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
16297 END IF;
16298 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
16299 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -21 ');
16300 dbms_sql.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
16301 END IF;
16302 END IF;
16303 END IF;
16304 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
16305 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -22');
16306 DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
16307 END IF;
16308
16309 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16310 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -23 ');
16311 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
16312 END IF;
16313
16314 IF inv_mwb_globals.g_prepacked <> 1
16315 AND inv_mwb_globals.g_prepacked <> 999
16316 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
16317 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -24 ');
16318 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
16319 END IF;
16320
16321 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
16322 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
16323 END IF;
16324
16325 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
16326 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
16327 END IF;
16328
16329 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
16330 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
16331 END IF;
16332
16333 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
16334 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
16335 END IF;
16336
16337 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
16338 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
16339 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
16340 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
16341 END IF;*/
16342 IF (inv_mwb_globals.g_owning_qry_mode = 4)
16343 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
16344 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
16345 END IF;
16346
16347 IF (inv_mwb_globals.g_planning_query_mode = 4)
16348 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
16349 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
16350 END IF;
16351
16352 --bug 6633612
16353 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
16354 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
16355 END IF;
16356 --bug 6633612
16357
16358 --ER(3338592) Changes
16359 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16360 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -25 ');
16361 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
16362 END IF;
16363
16364 --Bug #3411938
16365 IF inv_mwb_globals.g_organization_id IS NULL
16366 AND inv_mwb_globals.g_tree_organization_id IS NULL THEN
16367 IF inv_mwb_globals.g_responsibility_id IS NOT NULL THEN
16368 dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
16369 END IF;
16370
16371 IF inv_mwb_globals.g_resp_application_id IS NOT NULL THEN
16372 dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
16373 END IF;
16374 END IF;
16375
16376
16377 --Bug # 3539766
16378 IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
16379 dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
16380 END IF;
16381
16382 IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
16383 dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
16384 END IF;
16385
16386
16387 DBMS_SQL.define_column(query_hdl, 1, item_id);
16388 DBMS_SQL.define_column(query_hdl, 2, item, 40);
16389 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
16390
16391 LOOP
16392 -- fetch a row
16393 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
16394 -- fetch columns from the row
16395 DBMS_SQL.column_value(query_hdl, 1, item_id);
16396 DBMS_SQL.column_value(query_hdl, 2, item);
16397
16398 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
16399 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
16400 x_node_tbl(i).DEPTH := 1;
16401 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )); -- Bug 6350236
16402 x_node_tbl(i).icon := 'inv_item';
16403 x_node_tbl(i).VALUE := TO_CHAR(item_id);
16404 x_node_tbl(i).TYPE := 'ITEM';
16405 i := i + 1;
16406 END IF;
16407
16408 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
16409 j := j + 1;
16410 ELSE
16411 EXIT;
16412 END IF;
16413 END LOOP;
16414
16415 DBMS_SQL.close_cursor(query_hdl); -- close cursor
16416 x_node_value := j;
16417 x_tbl_index := i;
16418 EXCEPTION
16419 WHEN NO_DATA_FOUND THEN
16420 NULL;
16421 WHEN OTHERS THEN
16422 RAISE;
16423 END add_items;
16424
16425 PROCEDURE add_revs(
16426 x_node_value IN OUT NOCOPY NUMBER
16427 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
16428 , x_tbl_index IN OUT NOCOPY NUMBER
16429 ) IS
16430 query_str VARCHAR2(10000);
16431 query_hdl NUMBER;
16432 rows_processed NUMBER;
16433 item mtl_system_items_kfv.concatenated_segments%TYPE;
16434 rev mtl_onhand_quantities.revision%TYPE;
16435 rev_control NUMBER;
16436 i NUMBER := x_tbl_index;
16437 j NUMBER := x_node_value;
16438 table_required VARCHAR2(300);
16439 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
16440 select_from_str VARCHAR2(1000);
16441 from_str VARCHAR2(1000);
16442 where_str VARCHAR2(3000);
16443 lpn_from_id wms_license_plate_numbers.lpn_id%type;
16444 lpn_to_id wms_license_plate_numbers.lpn_id%type;
16445 l_item_id mtl_system_items_kfv.inventory_item_id%TYPE; -- Bug 6350236
16446
16447 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_REVS';
16448 l_default_status_id NUMBER; -- Onhand Material Status Support
16449 BEGIN
16450 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
16451
16452 -- Onhand Material Status Support
16453 if (inv_mwb_globals.g_organization_id is not null) then
16454 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
16455 l_default_status_id := inv_cache.org_rec.default_status_id;
16456 end if;
16457 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
16458 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
16459 l_default_status_id := inv_cache.org_rec.default_status_id;
16460 end if;
16461 end if;
16462
16463 IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN -- If add_item called from node_expanded of inbound lpn number.
16464
16465 IF (inv_mwb_globals.g_organization_id IS NOT NULL
16466 OR inv_mwb_globals.g_organization_id IS NOT NULL)
16467 AND (inv_mwb_globals.g_inventory_item_id IS NOT NULL
16468 OR inv_mwb_globals.g_tree_item_id IS NOT NULL) THEN
16469 SELECT revision_qty_control_code
16470 INTO rev_control
16471 FROM mtl_system_items
16472 WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id
16473 , inv_mwb_globals.g_organization_id)
16474 AND inventory_item_id = NVL(inv_mwb_globals.g_tree_item_id
16475 , inv_mwb_globals.g_inventory_item_id);
16476
16477 IF rev_control = 1 THEN
16478 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Not revision controlled, returning' );
16479 RETURN;
16480 END IF;
16481 END IF;
16482
16483
16484 select_from_str :=
16485 ' SELECT DISTINCT rsl.item_revision
16486 , msik.concatenated_segments
16487 , msik.inventory_item_id -- Bug 6350236
16488 FROM rcv_shipment_lines rsl
16489 , mtl_system_items_kfv msik ';
16490
16491
16492 where_str :=
16493 ' WHERE 1 = 1
16494 AND rsl.item_id = msik.inventory_item_id
16495 AND msik.organization_id = rsl.to_organization_id
16496 AND rsl.to_organization_id = :to_org_id
16497 AND rsl.shipment_header_id = :shipment_header_id
16498 AND rsl.item_id = :item_id ';
16499
16500 -- ER(9158529 client)
16501 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
16502 where_str := where_str || ' AND rsl.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
16503 END IF;
16504 -- ER(9158529 client)
16505
16506 -- ER(9158529)
16507 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
16508 where_str := where_str || ' AND rsl.item_id in '
16509 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
16510 || ' where organization_id = :organization_id '
16511 || ' and category_set_id = :category_set_id '
16512 || ' and category_id = nvl(:category_id, category_id)) ' ;
16513 END IF;
16514 -- ER(9158529)
16515
16516 IF inv_mwb_globals.g_serial_from IS NOT NULL
16517 OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
16518 select_from_str := select_from_str || ' , rcv_serials_supply rss ';
16519 where_str := where_str || ' AND rss.shipment_line_id = rsl.shipment_line_id ';
16520 END IF;
16521
16522 IF (inv_mwb_globals.g_lot_from is NOT NULL
16523 OR inv_mwb_globals.g_lot_to is NOT NULL)
16524 AND (inv_mwb_globals.g_serial_from IS NULL
16525 OR inv_mwb_globals.g_serial_to IS NULL) THEN
16526 select_from_str := select_from_str || ' , rcv_lots_supply rls ';
16527 where_str := where_str || ' AND rls.shipment_line_id = rsl.shipment_line_id ';
16528 END IF;
16529
16530 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
16531 where_str := where_str || ' AND rsl.asn_lpn_id = :lpn_from_id ';
16532 END IF;
16533
16534 IF inv_mwb_globals.g_lot_from IS NOT NULL
16535 AND inv_mwb_globals.g_lot_to IS NOT NULL
16536 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
16537 where_str := where_str || ' AND rls.lot_num = :lot_from ';
16538 END IF;
16539
16540 IF inv_mwb_globals.g_lot_from IS NOT NULL
16541 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
16542 where_str := where_str || ' AND rls.lot_num >= :lot_from ';
16543 END IF;
16544
16545 IF inv_mwb_globals.g_lot_to IS NOT NULL
16546 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
16547 -- for the bug 9374342
16548 where_str := where_str || ' AND rls.lot_num <= :lot_to ';
16549 -- end the bug 9374342
16550 END IF;
16551
16552 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
16553 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
16554 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
16555 select_from_str := select_from_str || ', mtl_lot_numbers mln1 ';
16556 select_from_str := select_from_str || ' , rcv_lots_supply rls1 ';
16557 where_str := where_str || ' AND rls1.shipment_line_id = rsl.shipment_line_id ';
16558
16559 where_str := where_str || ' AND rls1.lot_num = mln1.lot_number';
16560
16561 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16562 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16563 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
16564 where_str := where_str || ' AND mln1.supplier_lot_number = :supplier_lot_from ';
16565 END IF;
16566
16567 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16568 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
16569 where_str := where_str || ' AND mln1.supplier_lot_number >= :supplier_lot_from ';
16570 END IF;
16571
16572 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16573 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
16574 where_str := where_str || ' AND mln1.supplier_lot_number <= :supplier_lot_to ';
16575 END IF;
16576 END IF;
16577 /* End of Bug 8396954 */
16578
16579 IF inv_mwb_globals.g_serial_from IS NOT NULL
16580 AND inv_mwb_globals.g_serial_to IS NOT NULL
16581 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
16582 where_str := where_str || ' AND rss.serial_num = :serial_from ';
16583 END IF;
16584
16585 IF inv_mwb_globals.g_serial_from IS NOT NULL
16586 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
16587 where_str := where_str || ' AND rss.serial_num >= :serial_from ';
16588 END IF;
16589
16590 IF inv_mwb_globals.g_serial_to IS NOT NULL
16591 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
16592 where_str := where_str || ' AND rss.serial_num <= :serial_to ';
16593 END IF;
16594
16595 IF inv_mwb_globals.g_revision IS NOT NULL THEN
16596 where_str := where_str || ' AND rsl.item_revision = :item_revision ';
16597 END IF;
16598
16599
16600 query_str := select_from_str || where_str;
16601
16602 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
16603 inv_mwb_globals.g_last_query := query_str;
16604
16605 query_hdl := DBMS_SQL.open_cursor;
16606 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
16607
16608 DBMS_SQL.bind_variable(query_hdl, 'to_org_id', NVL(inv_mwb_globals.g_organization_id
16609 , inv_mwb_globals.g_tree_organization_id));
16610 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
16611 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
16612
16613 -- ER(9158529 client)
16614 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
16615 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
16616 END IF;
16617 -- ER(9158529 client)
16618
16619 -- ER(9158529)
16620 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
16621 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
16622 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
16623 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
16624 END IF;
16625 -- ER(9158529)
16626
16627 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
16628 DBMS_SQL.bind_variable(query_hdl, 'lpn_from_id', inv_mwb_globals.g_tree_parent_lpn_id);
16629 END IF;
16630
16631 IF inv_mwb_globals.g_lot_from IS NOT NULL
16632 AND inv_mwb_globals.g_lot_to IS NOT NULL
16633 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
16634 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
16635 END IF;
16636
16637 IF inv_mwb_globals.g_lot_from IS NOT NULL
16638 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
16639 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
16640 END IF;
16641
16642 IF inv_mwb_globals.g_lot_to IS NOT NULL
16643 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
16644 DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
16645 END IF;
16646
16647 /* Bug 8396954 added below code for supplier_lot_number */
16648 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
16649 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
16650 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16651 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16652 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
16653 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
16654 END IF;
16655
16656 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16657 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
16658 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
16659 END IF;
16660
16661 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16662 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
16663 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
16664 END IF;
16665 END IF;
16666 /* End of Bug 8396954 */
16667
16668 IF inv_mwb_globals.g_serial_from IS NOT NULL
16669 AND inv_mwb_globals.g_serial_to IS NOT NULL
16670 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
16671 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
16672 END IF;
16673
16674 IF inv_mwb_globals.g_serial_from IS NOT NULL
16675 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
16676 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
16677 END IF;
16678
16679 IF inv_mwb_globals.g_serial_to IS NOT NULL
16680 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
16681 DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
16682 END IF;
16683
16684 IF inv_mwb_globals.g_revision IS NOT NULL THEN
16685 DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_revision);
16686 END IF;
16687
16688 DBMS_SQL.define_column(query_hdl, 1, rev, 100);
16689 DBMS_SQL.define_column(query_hdl, 2, item, 240);
16690 DBMS_SQL.define_column(query_hdl, 3, l_item_id); -- Bug 6350236
16691
16692 BEGIN
16693 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
16694 EXCEPTION
16695 WHEN NO_DATA_FOUND THEN
16696 NULL;
16697 RETURN;
16698 WHEN OTHERS THEN
16699 RAISE;
16700 END;
16701
16702
16703 LOOP
16704 -- fetch a row
16705 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
16706 -- fetch columns from the row
16707 DBMS_SQL.column_value(query_hdl, 1, rev);
16708 DBMS_SQL.column_value(query_hdl, 2, item);
16709 DBMS_SQL.column_value(query_hdl, 3, l_item_id); -- Bug 6350236
16710
16711 IF j >= inv_mwb_globals.g_tree_node_low_value AND
16712 rev IS NOT NULL THEN
16713 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
16714 x_node_tbl(i).DEPTH := 1;
16715 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(l_item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )) || '-' || rev; -- Bug 6350236
16716 x_node_tbl(i).icon := 'inv_revi';
16717 x_node_tbl(i).VALUE := rev;
16718 x_node_tbl(i).TYPE := 'REV';
16719 i := i + 1;
16720 END IF;
16721
16722 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
16723 j := j + 1;
16724 ELSE
16725 EXIT;
16726 END IF;
16727 END LOOP;
16728
16729
16730 DBMS_SQL.close_cursor(query_hdl); -- close cursor
16731 x_node_value := j;
16732 x_tbl_index := i;
16733
16734 RETURN;
16735 END IF;
16736
16737 -- For the receiving and onhand
16738 -- NSRIVAST, INVCONV, Start
16739
16740
16741 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
16742 is_grade_t := TRUE ;
16743 END IF ;
16744 -- NSRIVAST, INVCONV, End
16745 -- Exit out of the procedure if the item is not revision controlled
16746 IF (inv_mwb_globals.g_organization_id IS NOT NULL
16747 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
16748 AND (inv_mwb_globals.g_inventory_item_id IS NOT NULL
16749 OR inv_mwb_globals.g_tree_item_id IS NOT NULL) THEN
16750
16751 SELECT revision_qty_control_code
16752 INTO rev_control
16753 FROM mtl_system_items
16754 WHERE organization_id = inv_mwb_globals.g_tree_organization_id
16755 AND inventory_item_id = inv_mwb_globals.g_tree_item_id;
16756
16757 IF rev_control = 1 THEN
16758 RETURN;
16759 END IF;
16760 END IF;
16761
16762 IF (
16763 inv_mwb_globals.g_serial_from IS NULL
16764 AND inv_mwb_globals.g_serial_to IS NULL
16765 AND inv_mwb_globals.g_tree_serial_number IS NULL
16766 AND inv_mwb_globals.g_status_id IS NULL
16767 AND inv_mwb_globals.g_lpn_from IS NULL
16768 AND inv_mwb_globals.g_lpn_to IS NULL
16769 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
16770 AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
16771 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
16772 ) THEN
16773 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
16774 table_required := ' mtl_rcv_mwb_onhand_v v ';
16775 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
16776 table_required := ' mtl_onhand_total_mwb_v v ';
16777 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
16778 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
16779 END IF;
16780 ELSE
16781 table_required := ' mtl_onhand_total_v v ';
16782 END IF;
16783 --bug 6633612
16784 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
16785 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
16786 END IF;
16787 --bug 6633612
16788
16789 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
16790 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
16791 query_str := query_str || 'SELECT v.item, v.inventory_item_id, v.revision from ' || table_required; -- Bug 6350236
16792 query_str := query_str || 'WHERE 1=1 ';
16793 ELSE
16794 query_str :=
16795 query_str
16796 || 'SELECT v.item, v.inventory_item_id, v.revision from' -- Bug 6350236
16797 || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
16798 || inv_mwb_globals.g_tree_lot_attr_query
16799 || ') mln, '
16800 || table_required;
16801 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
16802 --BUG 7556505
16803 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16804 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
16805 END IF;
16806 --BUG 7556505
16807 /* Bug 8396954 added below code for supplier_lot_number */
16808 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16809 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16810 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
16811 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
16812 END IF;
16813
16814 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
16815 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
16816 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
16817 END IF;
16818
16819 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
16820 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
16821 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
16822 END IF;
16823 /* End of Bug 8396954 */
16824 END IF;
16825
16826 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
16827 -- from onhand table (MOQD)
16828 if (l_default_status_id is not null) then
16829 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16830 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
16831 END IF;
16832 else
16833 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16834 query_str := query_str || 'AND (v.subinventory_status_id = :st_id OR ';
16835 query_str := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
16836 END IF;
16837 end if;
16838
16839 --bug 6633612
16840 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
16841 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
16842 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
16843 || ' AND rt.organization_id = mmt.organization_id '
16844 || ' AND rt.transaction_type = ''DELIVER'''
16845 || ' AND rt.destination_type_code = ''INVENTORY'''
16846 || ' AND mmt.transaction_id = v.create_transaction_id '
16847 || ' AND mmt.organization_id = v.organization_id ';
16848
16849 END IF;
16850 --bug 6633612
16851
16852 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
16853 query_str := query_str || 'AND v.lot_number = :lot_n ';
16854 END IF;
16855
16856 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16857 query_str := query_str || 'AND v.lot_number >= :lot_f ';
16858 END IF;
16859
16860 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16861 query_str := query_str || 'AND v.lot_number <= :lot_t ';
16862 END IF;
16863
16864 -- NSRIVAST, INVCONV, Start
16865 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
16866 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
16867 END IF ;
16868 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
16869 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
16870 END IF ;
16871 -- NSRIVAST, INVCONV, End
16872
16873 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16874 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
16875 END IF;
16876
16877 IF inv_mwb_globals.g_revision IS NOT NULL THEN
16878 query_str := query_str || 'AND v.revision = :rev ';
16879 END IF;
16880
16881 IF inv_mwb_globals.g_containerized = 1 THEN
16882 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
16883 ELSIF inv_mwb_globals.g_containerized = 2 THEN
16884 query_str := query_str || 'AND v.containerized_flag = 1 ';
16885 END IF;
16886
16887 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
16888 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
16889 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
16890 END IF;
16891
16892 -- ER(9158529 client)
16893 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
16894 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
16895 END IF;
16896 -- ER(9158529 client)
16897
16898 -- ER(9158529)
16899 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
16900 query_str := query_str || ' AND v.inventory_item_id in '
16901 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
16902 || ' where organization_id = :organization_id '
16903 || ' and category_set_id = :category_set_id '
16904 || ' and category_id = nvl(:category_id, category_id)) ' ;
16905 END IF;
16906 -- ER(9158529)
16907
16908 IF inv_mwb_globals.g_locator_controlled = 1 THEN
16909 query_str := query_str || 'AND v.locator_id IS NULL ';
16910 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
16911 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
16912 END IF;
16913
16914 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
16915 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
16916 query_str := query_str || 'AND v.locator_id = :loc_id ';
16917 END IF;
16918
16919 --ER(3338592) Changes
16920 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16921 query_str := query_str || ' AND v.item_description LIKE :item_description ';
16922 END IF;
16923 --ER(3338592) Changes
16924
16925 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
16926 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16927 query_str := query_str || 'AND v.subinventory_code = :sub ';
16928 END IF;
16929
16930 IF inv_mwb_globals.g_organization_id IS NOT NULL
16931 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16932 query_str := query_str || 'AND v.organization_id = :org_id ';
16933 END IF;
16934
16935 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
16936 query_str := query_str || ' AND v.project_id = :pr_id ';
16937 END IF;
16938
16939 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
16940 query_str := query_str || ' AND v.task_id = :ta_id ';
16941 END IF;
16942
16943 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
16944 query_str := query_str || ' AND v.unit_number=:un_id ';
16945 END IF;
16946
16947 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
16948 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
16949 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
16950 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
16951 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
16952 query_str := query_str || ' AND planning_organization_id in ';
16953 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
16954 query_str := query_str || ' where vendor_id = :vendor_id )';
16955 END IF;*/
16956 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
16957 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
16958 query_str := query_str || ' AND v.owning_tp_type = 2 ';
16959 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
16960 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
16961 query_str := query_str || ' AND v.owning_tp_type = 1 ';
16962 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
16963 query_str := query_str || ' AND v.owning_tp_type = 1 ';
16964 END IF;
16965
16966 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
16967 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
16968 query_str := query_str || ' AND v.planning_tp_type = 2 ';
16969 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
16970 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
16971 query_str := query_str || ' AND v.planning_tp_type = 1 ';
16972 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
16973 query_str := query_str || ' AND v.planning_tp_type = 1 ';
16974 END IF;
16975
16976 query_str := query_str || 'GROUP BY v.item, v.inventory_item_id, v.revision '; -- Bug 6350236
16977 query_str := query_str || 'ORDER BY v.revision ';
16978 ELSIF(
16979 (
16980 inv_mwb_globals.g_serial_from IS NOT NULL
16981 OR inv_mwb_globals.g_serial_from IS NOT NULL
16982 OR inv_mwb_globals.g_tree_serial_number IS NOT NULL
16983 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
16984 )
16985 AND inv_mwb_globals.g_lpn_from IS NULL
16986 AND inv_mwb_globals.g_lpn_to IS NULL
16987 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
16988 AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
16989 ) THEN
16990 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
16991 table_required := ' mtl_rcv_serial_oh_v v ';
16992 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
16993 table_required := ' mtl_onhand_serial_mwb_v v ';
16994 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
16995 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
16996 END IF; -- NSRIVAST, INVCONV
16997 ELSE
16998 table_required := ' mtl_onhand_serial_v v ';
16999 END IF;
17000
17001 --bug 6633612
17002 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17003 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
17004 END IF;
17005 --bug 6633612
17006
17007 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
17008 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
17009 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17010 query_str := query_str || 'SELECT v.item, v.inventory_item_id, v.revision from ' || table_required; -- Bug 6350236
17011 query_str := query_str || 'WHERE 1=1 ';
17012 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
17013 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
17014 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17015 query_str :=
17016 query_str
17017 || 'SELECT v.item, v.inventory_item_id, v.revision from' -- Bug 6350236
17018 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
17019 || inv_mwb_globals.g_tree_serial_attr_query
17020 || ') msn, '
17021 || table_required;
17022 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
17023 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
17024 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
17025 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17026 query_str :=
17027 query_str
17028 || 'SELECT v.item, v.inventory_item_id, v.revision from' -- Bug 6350236
17029 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17030 || inv_mwb_globals.g_tree_lot_attr_query
17031 || ') mln, '
17032 || table_required;
17033 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
17034 --BUG 7556505
17035 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17036 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17037 END IF;
17038 --BUG 7556505
17039 /* Bug 8396954 added below code for supplier_lot_number */
17040 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17041 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17042 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
17043 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
17044 END IF;
17045
17046 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17047 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
17048 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
17049 END IF;
17050
17051 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17052 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
17053 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
17054 END IF;
17055 /* End of Bug 8396954 */
17056 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
17057 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
17058 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17059 query_str :=
17060 query_str
17061 || 'SELECT v.item, v.inventory_item_id, v.revision from' -- Bug 6350236
17062 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17063 || inv_mwb_globals.g_tree_lot_attr_query
17064 || ') mln, '
17065 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
17066 || inv_mwb_globals.g_tree_serial_attr_query
17067 || ') msn, '
17068 || table_required;
17069 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
17070 --BUG 7556505
17071 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17072 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17073 END IF;
17074 --BUG 7556505
17075 /* Bug 8396954 added below code for supplier_lot_number */
17076 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17077 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17078 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
17079 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
17080 END IF;
17081
17082 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17083 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
17084 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
17085 END IF;
17086
17087 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17088 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
17089 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
17090 END IF;
17091 /* End of Bug 8396954 */
17092 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
17093 END IF;
17094
17095 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
17096 -- from serial table (MSN)
17097 if (l_default_status_id is not null) then
17098 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17099 query_str := query_str || 'AND v.serial_status_id = :st_id ';
17100 END IF;
17101 else
17102 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17103 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
17104 query_str := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
17105 END IF;
17106 end if;
17107
17108 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17109 query_str := query_str || 'AND v.lot_number = :lot_n ';
17110 END IF;
17111
17112 --bug 6633612
17113 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17114 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
17115 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
17116 || ' AND rt.organization_id = mmt.organization_id '
17117 || ' AND rt.transaction_type = ''DELIVER'''
17118 || ' AND rt.destination_type_code = ''INVENTORY'''
17119 || ' AND mmt.transaction_id = v.last_transaction_id '
17120 || ' AND mmt.organization_id = v.organization_id ';
17121
17122 END IF;
17123 --bug 6633612
17124
17125 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17126 query_str := query_str || 'AND v.lot_number >= :lot_f ';
17127 END IF;
17128
17129 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17130 query_str := query_str || 'AND v.lot_number <= :lot_t ';
17131 END IF;
17132
17133 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17134 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
17135 END IF;
17136
17137 -- NSRIVAST, INVCONV, Start
17138 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17139 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
17140 END IF ;
17141 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
17142 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
17143 END IF ;
17144 -- NSRIVAST, INVCONV, End
17145
17146 IF inv_mwb_globals.g_revision IS NOT NULL THEN
17147 query_str := query_str || 'AND v.revision = :rev ';
17148 END IF;
17149
17150 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
17151 query_str := query_str || 'AND (v.serial_number = :serial_n) ';
17152 END IF;
17153
17154 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
17155 query_str := query_str || 'AND v.serial_number >= :serial_f ';
17156 END IF;
17157
17158 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
17159 query_str := query_str || 'AND v.serial_number <= :serial_t ';
17160 END IF;
17161
17162 /*IF(inv_mwb_globals.g_vendor_id IS NULL AND inv_mwb_globals.g_site_id IS NULL) THEN
17163 IF inv_mwb_globals.g_containerized = 1 THEN
17164 query_str := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
17165 ELSIF inv_mwb_globals.g_containerized = 2 THEN
17166 query_str := query_str || 'AND containerized_flag = 1 ';
17167 END IF;
17168 END IF;*/
17169 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17170 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17171 query_str := query_str || ' AND v.owning_tp_type = 2 ';
17172 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17173 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17174 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17175 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17176 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17177 END IF;
17178
17179 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17180 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17181 query_str := query_str || ' AND v.planning_tp_type = 2 ';
17182 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17183 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17184 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17185 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17186 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17187 END IF;
17188
17189 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
17190 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17191 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
17192 END IF;
17193
17194 -- ER(9158529 client)
17195 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
17196 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
17197 END IF;
17198 -- ER(9158529 client)
17199
17200 -- ER(9158529)
17201 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
17202 query_str := query_str || ' AND v.inventory_item_id in '
17203 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
17204 || ' where organization_id = :organization_id '
17205 || ' and category_set_id = :category_set_id '
17206 || ' and category_id = nvl(:category_id, category_id)) ' ;
17207 END IF;
17208 -- ER(9158529)
17209
17210 IF inv_mwb_globals.g_locator_controlled = 1 THEN
17211 query_str := query_str || 'AND v.locator_id IS NULL ';
17212 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
17213 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
17214 END IF;
17215
17216 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17217 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17218 query_str := query_str || 'AND v.locator_id = :loc_id ';
17219 END IF;
17220
17221 --ER(3338592) Changes
17222 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
17223 query_str := query_str || ' AND v.item_description LIKE :item_description ';
17224 END IF;
17225 --ER(3338592) Changes
17226
17227 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17228 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17229 query_str := query_str || 'AND v.subinventory_code = :sub ';
17230 END IF;
17231
17232 IF inv_mwb_globals.g_organization_id IS NOT NULL
17233 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17234 query_str := query_str || 'AND v.organization_id = :org_id ';
17235 END IF;
17236
17237 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17238 query_str := query_str || ' AND v.project_id = :pr_id ';
17239 END IF;
17240
17241 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17242 query_str := query_str || ' AND v.task_id = :ta_id ';
17243 END IF;
17244
17245 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17246 query_str := query_str || ' AND v.unit_number=:un_id ';
17247 END IF;
17248
17249 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17250 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17251 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
17252 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17253 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17254 query_str := query_str || ' AND planning_organization_id in ';
17255 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
17256 query_str := query_str || ' where vendor_id = :vendor_id )';
17257 END IF;*/
17258 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17259 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17260 query_str := query_str || ' AND v.owning_tp_type = 2 ';
17261 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17262 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17263 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17264 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17265 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17266 END IF;
17267
17268 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17269 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17270 query_str := query_str || ' AND v.planning_tp_type = 2 ';
17271 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17272 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17273 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17274 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17275 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17276 END IF;
17277
17278 query_str := query_str || 'GROUP BY v.item, v.inventory_item_id, v.revision '; -- Bug 6350236
17279 query_str := query_str || 'ORDER BY v.revision ';
17280 -- Need to query both mtl_onhand_total_v and mtl_onhand_serial_v
17281 ELSIF(
17282 inv_mwb_globals.g_serial_from IS NULL
17283 AND inv_mwb_globals.g_serial_to IS NULL
17284 AND inv_mwb_globals.g_tree_serial_number IS NULL
17285 AND inv_mwb_globals.g_status_id IS NOT NULL
17286 AND inv_mwb_globals.g_lpn_from IS NULL
17287 AND inv_mwb_globals.g_lpn_to IS NULL
17288 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
17289 AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
17290 ) THEN
17291 IF (inv_mwb_globals.g_status_id IS NULL) THEN
17292 table_required := ' mtl_onhand_total_mwb_v v ';
17293 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
17294 -- table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
17295 ELSE
17296 table_required := ' mtl_onhand_total_v v ';
17297 END IF;
17298
17299 --bug 6633612
17300 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17301 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
17302 END IF;
17303 --bug 6633612
17304
17305 query_str := 'SELECT item, inventory_item_id, revision from( '; -- Bug 6350236
17306
17307 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
17308 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
17309 query_str := query_str || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from ' || table_required; -- Bug 6350236
17310 query_str := query_str || 'WHERE 1=1 ';
17311 ELSE
17312 query_str :=
17313 query_str
17314 || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from' -- Bug 6350236
17315 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17316 || inv_mwb_globals.g_tree_lot_attr_query
17317 || ') mln, '
17318 || table_required;
17319 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
17320 --BUG 7556505
17321 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17322 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17323 END IF;
17324 --BUG 7556505
17325 /* Bug 8396954 added below code for supplier_lot_number */
17326 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17327 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17328 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
17329 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
17330 END IF;
17331
17332 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17333 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
17334 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
17335 END IF;
17336
17337 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17338 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
17339 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
17340 END IF;
17341 /* End of Bug 8396954 */
17342 END IF;
17343
17344 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
17345 -- from onhand table (MOQD)
17346 if (l_default_status_id is not null) then
17347 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17348 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
17349 END IF;
17350 else
17351 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17352 query_str := query_str || 'AND (v.subinventory_status_id = :st_id OR ';
17353 query_str := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
17354 END IF;
17355 end if;
17356
17357 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17358 query_str := query_str || 'AND v.lot_number = :lot_n ';
17359 END IF;
17360
17361 --bug 6633612
17362 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17363 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
17364 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
17365 || ' AND rt.organization_id = mmt.organization_id '
17366 || ' AND rt.transaction_type = ''DELIVER'''
17367 || ' AND rt.destination_type_code = ''INVENTORY'''
17368 || ' AND mmt.transaction_id = v.create_transaction_id '
17369 || ' AND mmt.organization_id = v.organization_id ';
17370
17371 END IF;
17372 --bug 6633612
17373
17374 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17375 query_str := query_str || 'AND v.lot_number >= :lot_f ';
17376 END IF;
17377
17378 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17379 query_str := query_str || 'AND v.lot_number <= :lot_t ';
17380 END IF;
17381
17382 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17383 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
17384 END IF;
17385
17386 -- NSRIVAST, INVCONV, Start
17387 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17388 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
17389 END IF ;
17390 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
17391 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
17392 END IF ;
17393 -- NSRIVAST, INVCONV, End
17394
17395 IF inv_mwb_globals.g_revision IS NOT NULL THEN
17396 query_str := query_str || 'AND v.revision = :rev ';
17397 END IF;
17398
17399 IF inv_mwb_globals.g_containerized = 1 THEN
17400 query_str := query_str || ' AND (v.containerized_flag is null or containerized_flag <> 1) ';
17401 ELSIF inv_mwb_globals.g_containerized = 2 THEN
17402 query_str := query_str || 'AND v.containerized_flag = 1 ';
17403 END IF;
17404
17405 --query_str := query_str || 'AND serial_number_control_code in (1,6) ';
17406 query_str := query_str || 'AND v.item_serial_control in (1,6) ';
17407
17408 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
17409 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17410 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
17411 END IF;
17412
17413 -- ER(9158529 client)
17414 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
17415 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
17416 END IF;
17417 -- ER(9158529 client)
17418
17419 -- ER(9158529)
17420 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
17421 query_str := query_str || ' AND v.inventory_item_id in '
17422 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
17423 || ' where organization_id = :organization_id '
17424 || ' and category_set_id = :category_set_id '
17425 || ' and category_id = nvl(:category_id, category_id)) ' ;
17426 END IF;
17427 -- ER(9158529)
17428
17429 IF inv_mwb_globals.g_locator_controlled = 1 THEN
17430 query_str := query_str || 'AND v.locator_id IS NULL ';
17431 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
17432 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
17433 END IF;
17434
17435 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17436 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17437 query_str := query_str || 'AND v.locator_id = :loc_id ';
17438 END IF;
17439
17440 --ER(3338592) Changes
17441 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
17442 query_str := query_str || ' AND v.item_description LIKE :item_description ';
17443 END IF;
17444 --ER(3338592) Changes
17445
17446 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17447 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17448 query_str := query_str || 'AND v.subinventory_code = :sub ';
17449 END IF;
17450
17451 IF inv_mwb_globals.g_organization_id IS NOT NULL
17452 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17453 query_str := query_str || 'AND v.organization_id = :org_id ';
17454 END IF;
17455
17456 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17457 query_str := query_str || ' AND v.project_id = :pr_id ';
17458 END IF;
17459
17460 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17461 query_str := query_str || ' AND v.task_id = :ta_id ';
17462 END IF;
17463
17464 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17465 query_str := query_str || ' AND v.unit_number=:un_id ';
17466 END IF;
17467
17468 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17469 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17470 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
17471 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17472 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17473 query_str := query_str || ' AND planning_organization_id in ';
17474 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
17475 query_str := query_str || ' where vendor_id = :vendor_id )';
17476 END IF;*/
17477 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17478 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17479 query_str := query_str || ' AND v.owning_tp_type = 2 ';
17480 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17481 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17482 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17483 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17484 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17485 END IF;
17486
17487 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17488 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17489 query_str := query_str || ' AND v.planning_tp_type = 2 ';
17490 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17491 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17492 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17493 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17494 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17495 END IF;
17496
17497 query_str := query_str || 'UNION ';
17498
17499 IF (inv_mwb_globals.g_status_id IS NULL) THEN
17500 table_required := ' mtl_onhand_serial_mwb_v v ';
17501 ELSE
17502 table_required := ' mtl_onhand_serial_v v ';
17503 END IF;
17504
17505 --bug 6633612
17506 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17507 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
17508 END IF;
17509 --bug 6633612
17510
17511 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
17512 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
17513 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17514 query_str := query_str || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from ' || table_required; -- Bug 6350236
17515 query_str := query_str || 'WHERE 1=1 ';
17516 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
17517 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
17518 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17519 query_str :=
17520 query_str
17521 || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from' -- Bug 6350236
17522 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17523 || inv_mwb_globals.g_tree_lot_attr_query
17524 || ') mln, '
17525 || table_required;
17526 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
17527 --BUG 7556505
17528 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17529 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17530 END IF;
17531 --BUG 7556505
17532 /* Bug 8396954 added below code for supplier_lot_number */
17533 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17534 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17535 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
17536 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
17537 END IF;
17538
17539 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17540 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
17541 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
17542 END IF;
17543
17544 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17545 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
17546 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
17547 END IF;
17548 /* End of Bug 8396954 */
17549 END IF;
17550
17551 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
17552 -- from serial table (MSN)
17553 if (l_default_status_id is not null) then
17554 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17555 query_str := query_str || 'AND v.serial_status_id = :st_id ';
17556 END IF;
17557 else
17558 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17559 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
17560 query_str := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
17561 END IF;
17562 end if;
17563
17564 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17565 query_str := query_str || 'AND v.lot_number = :lot_n ';
17566 END IF;
17567
17568 --bug 6633612
17569 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17570 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
17571 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
17572 || ' AND rt.organization_id = mmt.organization_id '
17573 || ' AND rt.transaction_type = ''DELIVER'''
17574 || ' AND rt.destination_type_code = ''INVENTORY'''
17575 || ' AND mmt.transaction_id = v.last_transaction_id '
17576 || ' AND mmt.organization_id = v.organization_id ';
17577
17578 END IF;
17579 --bug 6633612
17580
17581 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17582 query_str := query_str || 'AND v.lot_number >= :lot_f ';
17583 END IF;
17584
17585 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17586 query_str := query_str || 'AND v.lot_number <= :lot_t ';
17587 END IF;
17588
17589 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17590 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
17591 END IF;
17592
17593 IF inv_mwb_globals.g_revision IS NOT NULL THEN
17594 query_str := query_str || 'AND v.revision = :rev ';
17595 END IF;
17596
17597 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
17598 query_str := query_str || 'AND (v.serial_number = :serial_n) ';
17599 END IF;
17600
17601 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
17602 query_str := query_str || 'AND v.serial_number >= :serial_f ';
17603 END IF;
17604
17605 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
17606 query_str := query_str || 'AND v.serial_number <= :serial_t ';
17607 END IF;
17608
17609 IF inv_mwb_globals.g_containerized = 1 THEN
17610 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
17611 ELSIF inv_mwb_globals.g_containerized = 2 THEN
17612 query_str := query_str || 'AND v.containerized_flag = 1 ';
17613 END IF;
17614
17615 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
17616 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17617 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
17618 END IF;
17619
17620 -- ER(9158529 client)
17621 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
17622 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
17623 END IF;
17624 -- ER(9158529 client)
17625
17626 -- ER(9158529)
17627 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
17628 query_str := query_str || ' AND v.inventory_item_id in '
17629 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
17630 || ' where organization_id = :organization_id '
17631 || ' and category_set_id = :category_set_id '
17632 || ' and category_id = nvl(:category_id, category_id)) ' ;
17633 END IF;
17634 -- ER(9158529)
17635
17636 IF inv_mwb_globals.g_locator_controlled = 1 THEN
17637 query_str := query_str || 'AND v.locator_id IS NULL ';
17638 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
17639 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
17640 END IF;
17641
17642 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17643 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17644 query_str := query_str || 'AND v.locator_id = :loc_id ';
17645 END IF;
17646
17647 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17648 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17649 query_str := query_str || 'AND v.subinventory_code = :sub ';
17650 END IF;
17651
17652 --ER(3338592) Changes
17653 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
17654 query_str := query_str || ' AND v.item_description LIKE :item_description ';
17655 END IF;
17656 --ER(3338592) Changes
17657
17658 IF inv_mwb_globals.g_organization_id IS NOT NULL
17659 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17660 query_str := query_str || 'AND v.organization_id = :org_id ';
17661 END IF;
17662
17663 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17664 query_str := query_str || ' AND v.project_id = :pr_id ';
17665 END IF;
17666
17667 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17668 query_str := query_str || ' AND v.task_id = :ta_id ';
17669 END IF;
17670
17671 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17672 query_str := query_str || ' AND v.unit_number=:un_id ';
17673 END IF;
17674
17675 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17676 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17677 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
17678 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17679 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17680 query_str := query_str || ' AND planning_organization_id in ';
17681 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
17682 query_str := query_str || ' where vendor_id = :vendor_id )';
17683 END IF;*/
17684 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17685 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17686 query_str := query_str || ' AND v.owning_tp_type = 2 ';
17687 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17688 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
17689 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17690 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17691 query_str := query_str || ' AND v.owning_tp_type = 1 ';
17692 END IF;
17693
17694 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17695 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17696 query_str := query_str || ' AND v.planning_tp_type = 2 ';
17697 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17698 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
17699 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17700 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17701 query_str := query_str || ' AND v.planning_tp_type = 1 ';
17702 END IF;
17703
17704 query_str := query_str || ') GROUP BY item, inventory_item_id, revision '; -- Bug 6350236
17705 query_str := query_str || 'ORDER BY revision ';
17706 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
17707 OR inv_mwb_globals.g_lpn_to IS NOT NULL
17708 OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
17709 OR(NVL(inv_mwb_globals.g_prepacked, 1) <> 1)) THEN
17710 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17711 table_required := ' mtl_onhand_lpn_mwb_v mol ';
17712 ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
17713 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
17714 table_required := ' mtl_onhand_lpn_mwb_v mol ';
17715 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
17716 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
17717 END IF; -- NSRIVAST, INVCONV
17718 ELSE
17719 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
17720 END IF;
17721 ELSE
17722 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
17723 table_required := ' mtl_onhand_lpn_v mol ';
17724 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
17725 table_required := ' mtl_onhand_new_lpn_v mol '; -- NSRIVAST, INVCONV
17726 END IF; -- NSRIVAST, INVCONV
17727 ELSE
17728 table_required := ' mtl_onhand_new_lpn_v mol ';
17729 END IF;
17730 END IF;
17731
17732 query_str := 'SELECT item, inventory_item_id, revision '; -- Bug 6350236
17733 query_str := query_str || 'FROM ' || table_required;
17734
17735 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
17736 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
17737 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
17738 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
17739 query_str := query_str || ' WHERE 1=1 ';
17740
17741 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17742 query_str := query_str || ' AND lpn_context = 3 ';
17743 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
17744 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
17745 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
17746 query_str := query_str || 'AND lpn_context = 1 ';
17747 ELSIF inv_mwb_globals.g_prepacked <> 1
17748 AND inv_mwb_globals.g_prepacked <> 999 THEN
17749 query_str := query_str || 'AND lpn_context = :prepacked ';
17750 END IF;
17751
17752 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17753 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17754 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
17755 END IF;
17756
17757 -- NSRIVAST, INVCONV, Start
17758 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17759 query_str := query_str || ' AND grade_code = :grade_f ' ;
17760 END IF ;
17761 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
17762 query_str := query_str || ' AND grade_code = :grade_c ' ;
17763 END IF ;
17764 -- NSRIVAST, INVCONV, End
17765
17766 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17767 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17768 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
17769 END IF;
17770
17771 IF inv_mwb_globals.g_organization_id IS NOT NULL
17772 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17773 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
17774 END IF;
17775
17776 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
17777 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
17778 query_str := query_str || ' and license_plate_number = :lpn_f ';
17779 ELSE
17780 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
17781 query_str := query_str || ' and license_plate_number >= :lpn_f ';
17782 END IF;
17783 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
17784 query_str := query_str || ' and license_plate_number >= :lpn_t ';
17785 END IF;
17786 END IF;
17787 END IF;
17788
17789 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
17790 END IF;
17791
17792 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
17793 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
17794 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17795 query_str := query_str || 'WHERE 1=1 ';
17796 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
17797 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
17798 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17799 query_str :=
17800 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
17801 || ') msn ';
17802 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
17803 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
17804 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
17805 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17806 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
17807 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
17808 --BUG 7556505
17809 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17810 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17811 END IF;
17812 --BUG 7556505
17813 /* Bug 8396954 added below code for supplier_lot_number */
17814 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17815 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17816 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
17817 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
17818 END IF;
17819
17820 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17821 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
17822 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
17823 END IF;
17824
17825 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17826 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
17827 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
17828 END IF;
17829 /* End of Bug 8396954 */
17830 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
17831 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
17832 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17833 query_str :=
17834 query_str
17835 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17836 || inv_mwb_globals.g_tree_lot_attr_query
17837 || ') mln '
17838 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
17839 || inv_mwb_globals.g_tree_serial_attr_query
17840 || ') msn ';
17841 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
17842 --BUG 7556505
17843 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17844 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17845 END IF;
17846 --BUG 7556505
17847 /* Bug 8396954 added below code for supplier_lot_number */
17848 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17849 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17850 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
17851 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
17852 END IF;
17853
17854 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
17855 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
17856 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
17857 END IF;
17858
17859 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
17860 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
17861 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
17862 END IF;
17863 /* End of Bug 8396954 */
17864 query_str := query_str || 'AND msn.serial_num = serial_number ';
17865 END IF;
17866
17867 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17868 query_str := query_str || ' AND project_id = :pr_id ';
17869 END IF;
17870
17871 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17872 query_str := query_str || ' AND task_id = :ta_id ';
17873 END IF;
17874
17875 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17876 query_str := query_str || ' AND unit_number=:un_id ';
17877 END IF;
17878
17879 -- NSRIVAST, INVCONV, Start
17880 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17881 query_str := query_str || ' AND grade_code = :grade_f ' ;
17882 END IF ;
17883 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
17884 query_str := query_str || ' AND grade_code = :grade_c ' ;
17885 END IF ;
17886 -- NSRIVAST, INVCONV, End
17887
17888 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17889 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17890 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
17891 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17892 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17893 query_str := query_str || ' AND planning_organization_id in ';
17894 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
17895 query_str := query_str || ' where vendor_id = :vendor_id )';
17896 END IF;*/
17897 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17898 query_str := query_str || ' AND owning_organization_id = :own_org ';
17899 query_str := query_str || ' AND owning_tp_type = 2 ';
17900 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17901 query_str := query_str || ' AND owning_organization_id = :own_org ';
17902 query_str := query_str || ' AND owning_tp_type = 1 ';
17903 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17904 query_str := query_str || ' AND owning_tp_type = 1 ';
17905 END IF;
17906
17907 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17908 query_str := query_str || ' AND planning_organization_id = :plan_org ';
17909 query_str := query_str || ' AND planning_tp_type = 2 ';
17910 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17911 query_str := query_str || ' AND planning_organization_id = :plan_org ';
17912 query_str := query_str || ' AND planning_tp_type = 1 ';
17913 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17914 query_str := query_str || ' AND planning_tp_type = 1 ';
17915 END IF;
17916
17917 /*LPN Status Project */
17918 IF (l_default_status_id IS NOT NULL) THEN
17919 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17920 query_str := query_str || 'AND onhand_status_id = :st_id ';
17921 END IF;
17922 ELSE
17923 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17924 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
17925 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id OR :st_id IS NULL) ';
17926 END IF;
17927 END IF;
17928 /*End of fix for LPN Status Project */
17929
17930 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17931 query_str := query_str || 'AND lot_number = :lot_n ';
17932 END IF;
17933
17934 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17935 query_str := query_str || 'AND lot_number >= :lot_f ';
17936 END IF;
17937
17938 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17939 query_str := query_str || 'AND lot_number <= :lot_t ';
17940 END IF;
17941
17942 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17943 query_str := query_str || 'AND cost_group_id = :cg_id ';
17944 END IF;
17945
17946 IF inv_mwb_globals.g_revision IS NOT NULL THEN
17947 query_str := query_str || 'AND revision = :rev ';
17948 END IF;
17949
17950 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
17951 query_str := query_str || 'AND serial_number = :serial_n ';
17952 END IF;
17953
17954 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
17955 query_str := query_str || 'AND serial_number >= :serial_f ';
17956 END IF;
17957
17958 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
17959 query_str := query_str || 'AND serial_number <= :serial_t ';
17960 END IF;
17961
17962 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17963 query_str := query_str || ' AND lpn_context = 3 ';
17964 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
17965 query_str := query_str || ' AND (lpn_context=1 OR lpn_context=9 OR lpn_context=11 OR lpn_context=8) ';--12984304
17966 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
17967 query_str := query_str || 'AND lpn_context = 1 ';
17968 ELSIF inv_mwb_globals.g_prepacked <> 1
17969 AND inv_mwb_globals.g_prepacked <> 999 THEN
17970 query_str := query_str || 'AND lpn_context = :prepacked ';
17971 END IF;
17972
17973 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
17974 query_str := query_str || 'AND MOL.lpn_id = :plpn_id ';
17975 END IF;
17976
17977 /* IF inv_mwb_globals.g_lpn_from IS NOT NULL
17978 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
17979 query_str := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
17980 END IF;
17981 */
17982
17983 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
17984 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17985 query_str := query_str || 'AND inventory_item_id = :item_id ';
17986 END IF;
17987
17988 -- ER(9158529 client)
17989 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
17990 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
17991 END IF;
17992 -- ER(9158529 client)
17993
17994 -- ER(9158529)
17995 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
17996 query_str := query_str || ' AND inventory_item_id in '
17997 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
17998 || ' where organization_id = :organization_id '
17999 || ' and category_set_id = :category_set_id '
18000 || ' and category_id = nvl(:category_id, category_id)) ' ;
18001 END IF;
18002 -- ER(9158529)
18003
18004 IF (inv_mwb_globals.g_locator_controlled = 2) THEN
18005 query_str := query_str || 'AND locator_id IS not NULL ';
18006 ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
18007 query_str := query_str || 'AND locator_id IS NULL ';
18008 END IF;
18009
18010 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
18011 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
18012 query_str := query_str || 'AND locator_id = :loc_id ';
18013 END IF;
18014
18015 --ER(3338592) Changes
18016 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18017 query_str := query_str || ' AND item_description LIKE :item_description ';
18018 END IF;
18019 --ER(3338592) Changes
18020
18021 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
18022 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18023 query_str := query_str || 'AND subinventory_code = :sub ';
18024 END IF;
18025
18026 IF inv_mwb_globals.g_organization_id IS NOT NULL
18027 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
18028 query_str := query_str || 'AND organization_id = :org_id ';
18029 END IF;
18030
18031 query_str := query_str || 'GROUP BY item, inventory_item_id, revision '; -- Bug 6350236
18032 query_str := query_str || 'ORDER BY revision ';
18033 END IF;
18034
18035 --trace1(query_str, 'add_revs', 9);
18036 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
18037 inv_mwb_globals.g_last_query := query_str;
18038 query_hdl := DBMS_SQL.open_cursor;
18039 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
18040
18041
18042 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
18043 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
18044 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
18045 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
18046 END IF;
18047
18048 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
18049 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
18050 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18051 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
18052 END IF;
18053
18054 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
18055 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
18056 ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
18057 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
18058 END IF;
18059
18060 IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
18061 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
18062 ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
18063 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
18064 END IF;
18065
18066 -- ER(9158529 client)
18067 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
18068 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
18069 END IF;
18070 -- ER(9158529 client)
18071
18072 -- ER(9158529)
18073 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
18074 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
18075 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
18076 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
18077 END IF;
18078 -- ER(9158529)
18079
18080 IF inv_mwb_globals.g_revision IS NOT NULL THEN
18081 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
18082 END IF;
18083
18084 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
18085 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
18086 END IF;
18087
18088 --BUG 7556505
18089 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
18090 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
18091 END IF;
18092 --BUG 7556505
18093
18094 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
18095 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
18096 END IF;
18097
18098 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
18099 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
18100 END IF;
18101
18102 /* Bug 8396954 added below code for supplier_lot_number */
18103 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18104 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18105 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
18106 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
18107 END IF;
18108
18109 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18110 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
18111 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
18112 END IF;
18113
18114 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18115 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
18116 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
18117 END IF;
18118 /* End of Bug 8396954 */
18119
18120 --bug 6633612
18121 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
18122 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
18123 END IF;
18124 --bug 6633612
18125
18126 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered 200' );
18127 -- NSRIVAST, INVCONV, Start
18128 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
18129 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
18130 END IF;
18131 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
18132 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
18133 END IF;
18134 -- NSRIVAST, INVCONV, End
18135
18136 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
18137 DBMS_SQL.bind_variable(query_hdl, 'lot_n', inv_mwb_globals.g_tree_lot_number);
18138 END IF;
18139
18140 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
18141 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
18142 END IF;
18143
18144 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
18145 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
18146 END IF;
18147
18148 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
18149 DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
18150 END IF;
18151
18152 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
18153 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
18154 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
18155 ELSE
18156 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
18157 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
18158 END IF;
18159 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
18160 dbms_sql.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
18161 END IF;
18162 END IF;
18163 END IF;
18164
18165 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
18166 DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
18167 END IF;
18168
18169 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered 300' );
18170 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
18171 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
18172 END IF;
18173
18174 IF inv_mwb_globals.g_prepacked <> 1
18175 AND inv_mwb_globals.g_prepacked <> 999
18176 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
18177 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
18178 END IF;
18179
18180 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
18181 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
18182 END IF;
18183
18184 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18185 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
18186 END IF;
18187
18188 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18189 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
18190 END IF;
18191
18192 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
18193 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
18194 END IF;
18195
18196 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
18197 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
18198 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
18199 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
18200 END IF;*/
18201 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered 400' );
18202
18203 IF (inv_mwb_globals.g_owning_qry_mode = 4)
18204 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
18205 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
18206 END IF;
18207
18208 IF (inv_mwb_globals.g_planning_query_mode = 4)
18209 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
18210 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
18211 END IF;
18212
18213 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered 500' );
18214
18215 --ER(3338592) Changes
18216 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18217 /* Fix for bug #3457285
18218 Following line has been removed.
18219 query_str := query_str || ' AND item_description LIKE :item_description ';
18220 Added the following line to bind the item_description value to WHERE clause the query*/
18221 DBMS_SQL.bind_variable(query_hdl,'item_description',inv_mwb_globals.g_item_description);
18222 /*End of fix 3457285 */
18223
18224 END IF;
18225 --ER(3338592) Changes
18226
18227 DBMS_SQL.define_column(query_hdl, 1, item, 40);
18228 DBMS_SQL.define_column(query_hdl, 2, l_item_id); -- Bug 6350236
18229 DBMS_SQL.define_column(query_hdl, 3, rev, 3); -- Bug 6350236
18230 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
18231
18232 LOOP
18233 -- fetch a row
18234 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
18235 -- fetch columns from the row
18236 DBMS_SQL.column_value(query_hdl, 1, item);
18237 DBMS_SQL.column_value(query_hdl, 2, l_item_id); -- Bug 6350236
18238 DBMS_SQL.column_value(query_hdl, 3, rev); -- Bug 6350236
18239
18240 IF j >= inv_mwb_globals.g_tree_node_low_value AND
18241 rev IS NOT NULL THEN
18242 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
18243 x_node_tbl(i).DEPTH := 1;
18244 x_node_tbl(i).label := inv_mwb_tree1.GET_ITEM(l_item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id )) || '-' || rev; -- Bug 6350236
18245 x_node_tbl(i).icon := 'inv_revi';
18246 x_node_tbl(i).VALUE := rev;
18247 x_node_tbl(i).TYPE := 'REV';
18248 i := i + 1;
18249 END IF;
18250
18251 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
18252 j := j + 1;
18253 ELSE
18254 EXIT;
18255 END IF;
18256 END LOOP;
18257
18258 DBMS_SQL.close_cursor(query_hdl); -- close cursor
18259 x_node_value := j;
18260 x_tbl_index := i;
18261 EXCEPTION
18262 WHEN NO_DATA_FOUND THEN
18263 NULL;
18264 WHEN OTHERS THEN
18265 RAISE;
18266 END add_revs;
18267
18268 PROCEDURE add_lots(
18269 x_node_value IN OUT NOCOPY NUMBER
18270 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
18271 , x_tbl_index IN OUT NOCOPY NUMBER
18272 ) IS
18273 query_str VARCHAR2(10000);
18274 query_hdl NUMBER;
18275 rows_processed NUMBER;
18276 lot mtl_onhand_quantities.lot_number%TYPE;
18277 lot_control NUMBER;
18278 serial_control NUMBER;
18279 i NUMBER := x_tbl_index;
18280 j NUMBER := x_node_value;
18281 table_required VARCHAR2(300);
18282 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
18283 select_from_str VARCHAR2(2000);
18284 where_str VARCHAR2(2000);
18285 lpn_from_id wms_license_plate_numbers.lpn_id%type;
18286 lpn_to_id wms_license_plate_numbers.lpn_id%type;
18287 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_LOTS';
18288 l_default_status_id NUMBER; -- Onhand Material Status Support
18289 BEGIN
18290 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
18291 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
18292 inv_mwb_globals.g_containerized := 1;
18293 ELSE
18294 inv_mwb_globals.g_containerized := 2;
18295 END IF;
18296
18297 IF inv_mwb_globals.g_view_by IN ('STATUS','SERIAL','LOT','ITEM') THEN --Bug 9752143: Added 'STATUS'
18298 inv_mwb_globals.g_containerized := NULL;
18299 END IF;
18300
18301 IF inv_mwb_globals.g_view_by = 'STATUS' THEN
18302 inv_mwb_globals.g_only_subinventory_status := 1;
18303 ELSE
18304 inv_mwb_globals.g_only_subinventory_status := NULL;
18305 END IF;
18306
18307 -- Onhand Material Status Support
18308 if (inv_mwb_globals.g_organization_id is not null) then
18309 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
18310 l_default_status_id := inv_cache.org_rec.default_status_id;
18311 end if;
18312 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
18313 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
18314 l_default_status_id := inv_cache.org_rec.default_status_id;
18315 end if;
18316 end if;
18317
18318 -- If add_item called from node_expanded of inbound lpn number.
18319 IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN
18320
18321 IF (inv_mwb_globals.g_organization_id IS NOT NULL
18322 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
18323 AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
18324 OR inv_mwb_globals.g_inventory_item_id IS NOT NULL) THEN
18325
18326 SELECT lot_control_code
18327 , serial_number_control_code
18328 INTO lot_control
18329 , serial_control
18330 FROM mtl_system_items
18331 WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id
18332 , inv_mwb_globals.g_organization_id)
18333 AND inventory_item_id = NVL(inv_mwb_globals.g_inventory_item_id
18334 , inv_mwb_globals.g_tree_item_id);
18335
18336 IF lot_control = 1 THEN
18337 RETURN;
18338 END IF;
18339 END IF;
18340
18341
18342 select_from_str :=
18343 ' SELECT DISTINCT rls.lot_num
18344 FROM rcv_shipment_lines rsl
18345 , mtl_supply ms ';
18346
18347 where_str :=
18348 ' WHERE 1 = 1
18349 AND ms.shipment_line_id = rsl.shipment_line_id
18350 AND ms.supply_type_code <> ''RECEIVING''
18351 AND ms.shipment_header_id IS NOT NULL
18352 AND rsl.to_organization_id = :to_org_id
18353 AND rsl.shipment_header_id = :shipment_header_id
18354 AND rsl.item_id = :item_id ';
18355
18356 -- ER(9158529 client)
18357 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
18358 where_str := where_str || ' AND rsl.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
18359 END IF;
18360 -- ER(9158529 client)
18361
18362 -- ER(9158529)
18363 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
18364 where_str := where_str || ' AND rsl.item_id in '
18365 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
18366 || ' where organization_id = :organization_id '
18367 || ' and category_set_id = :category_set_id '
18368 || ' and category_id = nvl(:category_id, category_id)) ' ;
18369 END IF;
18370 -- ER(9158529)
18371
18372 IF inv_mwb_globals.g_serial_from IS NOT NULL
18373 OR inv_mwb_globals.g_serial_to IS NOT NULL
18374 OR serial_control = 2 THEN
18375 select_from_str := select_from_str || ' , rcv_serials_supply rls ';
18376 where_str := where_str || ' AND rls.shipment_line_id = ms.shipment_line_id ';
18377 ELSE
18378 select_from_str := select_from_str || ' , rcv_lots_supply rls ';
18379 where_str := where_str || ' AND rls.shipment_line_id = ms.shipment_line_id ';
18380 END IF;
18381
18382 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
18383 where_str := where_str || ' AND rsl.asn_lpn_id = :lpn_from_id ';
18384 END IF;
18385
18386 IF inv_mwb_globals.g_lot_from IS NOT NULL
18387 AND inv_mwb_globals.g_lot_to IS NOT NULL
18388 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
18389 where_str := where_str || ' AND rls.lot_num = :lot_from ';
18390 END IF;
18391
18392 IF inv_mwb_globals.g_lot_from IS NOT NULL
18393 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
18394 where_str := where_str || ' AND rls.lot_num >= :lot_from ';
18395 END IF;
18396
18397 IF inv_mwb_globals.g_lot_to IS NOT NULL
18398 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
18399 -- for bug 8420731
18400 where_str := where_str || ' AND rls.lot_num <= :lot_to ';
18401 -- end of bug 8420731
18402 END IF;
18403
18404 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
18405 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
18406 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
18407 select_from_str := select_from_str || ', mtl_lot_numbers mln1 ';
18408 select_from_str := select_from_str || ' , rcv_lots_supply rls1 ';
18409
18410 where_str := where_str || ' AND rls1.lot_num = mln1.lot_number';
18411
18412 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18413 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18414 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
18415 where_str := where_str || ' AND mln1.supplier_lot_number = :supplier_lot_from ';
18416 END IF;
18417
18418 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18419 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
18420 where_str := where_str || ' AND mln1.supplier_lot_number >= :supplier_lot_from ';
18421 END IF;
18422
18423 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18424 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
18425 where_str := where_str || ' AND mln1.supplier_lot_number <= :supplier_lot_to ';
18426 END IF;
18427 END IF;
18428 /* End of Bug 8396954 */
18429
18430 -- kmotupal LOT-EXP
18431 IF inv_mwb_globals.g_expired_lots = 'Y'
18432 AND inv_mwb_globals.g_serial_from IS NULL
18433 AND inv_mwb_globals.g_serial_to IS NULL
18434 AND serial_control <> 2 THEN
18435 where_str := where_str || ' AND rls.expiration_date = :expiration_date ';
18436 END IF;
18437
18438
18439 IF inv_mwb_globals.g_serial_from IS NOT NULL
18440 AND inv_mwb_globals.g_serial_to IS NOT NULL
18441 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
18442 where_str := where_str || ' AND rls.serial_num = :serial_from ';
18443 END IF;
18444
18445 IF inv_mwb_globals.g_serial_from IS NOT NULL
18446 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
18447 where_str := where_str || ' AND rls.serial_num >= :serial_from ';
18448 END IF;
18449
18450 IF inv_mwb_globals.g_serial_to IS NOT NULL
18451 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
18452 where_str := where_str || ' AND rls.serial_num <= :serial_to ';
18453 END IF;
18454
18455 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18456 where_str := where_str || ' AND rsl.item_revision = :item_revision ';
18457 END IF;
18458
18459 where_str := where_str || ' ORDER BY rls.lot_num ';
18460
18461 query_str := select_from_str || where_str;
18462
18463 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
18464 inv_mwb_globals.g_last_query := query_str;
18465
18466 query_hdl := DBMS_SQL.open_cursor;
18467 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
18468
18469 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
18470 DBMS_SQL.bind_variable(query_hdl, 'to_org_id', inv_mwb_globals.g_tree_organization_id);
18471 END IF;
18472
18473 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
18474 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
18475
18476 -- ER(9158529 client)
18477 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
18478 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
18479 END IF;
18480 -- ER(9158529 client)
18481
18482 -- ER(9158529)
18483 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
18484 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
18485 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
18486 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
18487 END IF;
18488 -- ER(9158529)
18489
18490 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
18491 DBMS_SQL.bind_variable(query_hdl, 'lpn_from_id', inv_mwb_globals.g_tree_parent_lpn_id);
18492 END IF;
18493
18494 IF inv_mwb_globals.g_lot_from IS NOT NULL
18495 AND inv_mwb_globals.g_lot_to IS NOT NULL
18496 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
18497 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
18498 END IF;
18499
18500 IF inv_mwb_globals.g_lot_from IS NOT NULL
18501 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
18502 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
18503 END IF;
18504
18505 IF inv_mwb_globals.g_lot_to IS NOT NULL
18506 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
18507 DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
18508 END IF;
18509
18510 /* Bug 8396954 added below code for supplier_lot_number */
18511 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
18512 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
18513 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18514 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18515 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
18516 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
18517 END IF;
18518
18519 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18520 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
18521 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
18522 END IF;
18523
18524 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18525 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
18526 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
18527 END IF;
18528 END IF;
18529 /* End of Bug 8396954 */
18530
18531 -- kmotupal LOT-EXP
18532 IF inv_mwb_globals.g_expired_lots ='Y' THEN
18533 DBMS_SQL.bind_variable(query_hdl,'expiration_date', inv_mwb_globals.g_expiration_date);
18534 END IF;
18535
18536 IF inv_mwb_globals.g_serial_from IS NOT NULL
18537 AND inv_mwb_globals.g_serial_to IS NOT NULL
18538 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
18539 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
18540 END IF;
18541
18542 IF inv_mwb_globals.g_serial_from IS NOT NULL
18543 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
18544 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
18545 END IF;
18546
18547 IF inv_mwb_globals.g_serial_to IS NOT NULL
18548 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
18549 DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
18550 END IF;
18551
18552 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18553 DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_tree_rev);
18554 END IF;
18555
18556 BEGIN
18557 DBMS_SQL.define_column(query_hdl, 1, lot, 80);
18558 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
18559 EXCEPTION
18560 WHEN NO_DATA_FOUND THEN
18561 NULL;
18562 RETURN;
18563 WHEN OTHERS THEN
18564 RAISE;
18565 END;
18566
18567 LOOP
18568 -- fetch a row
18569 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
18570 -- fetch columns from the row
18571 DBMS_SQL.column_value(query_hdl, 1, lot);
18572 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
18573 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
18574 x_node_tbl(i).DEPTH := 1;
18575 x_node_tbl(i).label := lot;
18576 x_node_tbl(i).icon := 'inv_lott';
18577 x_node_tbl(i).VALUE := lot;
18578 x_node_tbl(i).TYPE := 'LOT';
18579 i := i + 1;
18580 END IF;
18581
18582 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
18583 j := j + 1;
18584 ELSE
18585 EXIT;
18586 END IF;
18587 END LOOP;
18588
18589
18590 DBMS_SQL.close_cursor(query_hdl); -- close cursor
18591 x_node_value := j;
18592 x_tbl_index := i;
18593
18594 RETURN;
18595 END IF;
18596
18597
18598 -- For ONHAND and RECEVING
18599 -- NSRIVAST, INVCONV, Start
18600 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
18601 is_grade_t := TRUE ;
18602 END IF ;
18603 -- NSRIVAST, INVCONV, End
18604 -- Exit out of the procedure if the item is not lot controlled
18605 IF (inv_mwb_globals.g_organization_id IS NOT NULL
18606 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
18607 AND (inv_mwb_globals.g_inventory_item_id IS NOT NULL
18608 OR inv_mwb_globals.g_tree_item_id IS NOT NULL) THEN
18609 SELECT lot_control_code
18610 INTO lot_control
18611 FROM mtl_system_items
18612 WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
18613 inv_mwb_globals.g_organization_id)
18614 AND inventory_item_id = NVL(inv_mwb_globals.g_tree_item_id,
18615 inv_mwb_globals.g_inventory_item_id);
18616
18617 IF lot_control = 1 THEN
18618 RETURN;
18619 END IF;
18620 END IF;
18621
18622 IF (
18623 inv_mwb_globals.g_serial_from IS NULL
18624 AND inv_mwb_globals.g_serial_to IS NULL
18625 AND inv_mwb_globals.g_tree_serial_number IS NULL
18626 AND inv_mwb_globals.g_unit_number IS NULL
18627 AND inv_mwb_globals.g_status_id IS NULL
18628 AND inv_mwb_globals.g_lpn_from IS NULL
18629 AND inv_mwb_globals.g_lpn_to IS NULL
18630 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
18631 AND NVL(inv_mwb_globals.g_prepacked,1) = 1
18632 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
18633 ) THEN
18634 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
18635 table_required := ' mtl_rcv_mwb_onhand_v v ';
18636 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
18637 table_required := ' mtl_onhand_total_mwb_v v ';
18638 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
18639 table_required := ' mtl_onhand_total_v v '; -- NSRIVAST, INVCONV
18640 END IF; -- NSRIVAST, INVCONV
18641 ELSE
18642 table_required := ' mtl_onhand_total_v v ';
18643 END IF;
18644
18645 --bug 6633612
18646 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18647 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
18648 END IF;
18649 --bug 6633612
18650
18651 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
18652 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
18653 query_str := query_str || 'SELECT v.lot_number from ' || table_required;
18654 query_str := query_str || 'WHERE 1=1 ';
18655 ELSE
18656 query_str :=
18657 query_str
18658 || 'SELECT v.lot_number from'
18659 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
18660 || inv_mwb_globals.g_tree_lot_attr_query
18661 || ') mln, '
18662 || table_required;
18663 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
18664 --BUG 7556505
18665 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
18666 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
18667 END IF;
18668 --BUG 7556505
18669 /* Bug 8396954 added below code for supplier_lot_number */
18670 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18671 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18672 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
18673 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
18674 END IF;
18675
18676 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18677 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
18678 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
18679 END IF;
18680
18681 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18682 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
18683 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
18684 END IF;
18685 /* End of Bug 8396954 */
18686 END IF;
18687
18688 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18689 query_str := query_str || ' AND v.project_id = :pr_id ';
18690 END IF;
18691
18692 --bug 6633612
18693 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18694 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
18695 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
18696 || ' AND rt.organization_id = mmt.organization_id '
18697 || ' AND rt.transaction_type = ''DELIVER'''
18698 || ' AND rt.destination_type_code = ''INVENTORY'''
18699 || ' AND mmt.transaction_id = v.create_transaction_id '
18700 || ' AND mmt.organization_id = v.organization_id ';
18701
18702 END IF;
18703 --bug 6633612
18704
18705 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18706 query_str := query_str || ' AND v.task_id = :ta_id ';
18707 END IF;
18708
18709 -- NSRIVAST, INVCONV, Start
18710 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
18711 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
18712 END IF ;
18713 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
18714 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
18715 END IF ;
18716 -- NSRIVAST, INVCONV, End
18717
18718 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
18719 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
18720 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
18721 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
18722 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
18723 query_str := query_str || ' AND planning_organization_id in ';
18724 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
18725 query_str := query_str || ' where vendor_id = :vendor_id )';
18726 END IF;*/
18727 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
18728 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
18729 query_str := query_str || ' AND v.owning_tp_type = 2 ';
18730 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
18731 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
18732 query_str := query_str || ' AND v.owning_tp_type = 1 ';
18733 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
18734 query_str := query_str || ' AND v.owning_tp_type = 1 ';
18735 END IF;
18736
18737 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
18738 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
18739 query_str := query_str || ' AND v.planning_tp_type = 2 ';
18740 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
18741 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
18742 query_str := query_str || ' AND v.planning_tp_type = 1 ';
18743 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
18744 query_str := query_str || ' AND v.planning_tp_type = 1 ';
18745 END IF;
18746
18747 /*
18748 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
18749 IF inv_mwb_globals.g_only_lot_status = 1 THEN
18750 query_str := query_str || 'AND (subinventory_status_id = :st_id or ';
18751 query_str := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
18752 ELSE
18753 query_str := query_str || 'AND lot_status_id = :st_id ';
18754 END IF;
18755 END IF;
18756 */
18757 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
18758 -- from onhand table (MOQD)
18759 if (l_default_status_id is not null) then -- Status at onhand level
18760 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
18761 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
18762 ELSE
18763 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
18764 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
18765 END IF;
18766 END IF;
18767 else
18768 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
18769 query_str := query_str || 'AND v.lot_status_id = :st_id ';
18770 ELSE
18771 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
18772 query_str := query_str || 'AND v.lot_status_id = :st_id ';
18773 END IF;
18774 END IF;
18775 end if;
18776
18777 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
18778 query_str := query_str || 'AND v.lot_number >= :lot_f ';
18779 END IF;
18780
18781 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
18782 query_str := query_str || 'AND v.lot_number <= :lot_t ';
18783 END IF;
18784
18785 --KMOTUPAL ME # 3922793
18786 IF inv_mwb_globals.g_expired_lots = 'Y' THEN
18787 query_str := query_str || ' AND v.expiration_date <= :expiration_date ';
18788 END IF;
18789 --KMOTUPAL ME # 3922793
18790
18791 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
18792 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
18793 END IF;
18794
18795 IF inv_mwb_globals.g_revision_controlled = 1 THEN
18796 query_str := query_str || 'AND v.revision IS NULL ';
18797 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
18798 query_str := query_str || 'AND v.revision IS NOT NULL ';
18799 END IF;
18800
18801 IF inv_mwb_globals.g_revision IS NOT NULL
18802 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18803 query_str := query_str || 'AND v.revision = :rev ';
18804 END IF;
18805
18806 IF inv_mwb_globals.g_serial_controlled = 1 THEN
18807 --query_str := query_str || 'AND serial_number_control_code in (1,6) ';
18808 query_str := query_str || 'AND v.item_serial_control in (1,6) ';
18809 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
18810 --query_str := query_str || 'AND serial_number_control_code in (2,5) ';
18811 query_str := query_str || 'AND v.item_serial_control in (2,5) ';
18812 END IF;
18813
18814 IF inv_mwb_globals.g_containerized = 1 THEN
18815 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
18816 ELSIF inv_mwb_globals.g_containerized = 2 THEN
18817 query_str := query_str || 'AND v.containerized_flag = 1 ';
18818 END IF;
18819
18820 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
18821 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
18822 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
18823 END IF;
18824
18825 -- ER(9158529 client)
18826 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
18827 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
18828 END IF;
18829 -- ER(9158529 client)
18830
18831 -- ER(9158529)
18832 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
18833 query_str := query_str || ' AND v.inventory_item_id in '
18834 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
18835 || ' where organization_id = :organization_id '
18836 || ' and category_set_id = :category_set_id '
18837 || ' and category_id = nvl(:category_id, category_id)) ' ;
18838 END IF;
18839 -- ER(9158529)
18840
18841 IF inv_mwb_globals.g_locator_controlled = 1 THEN
18842 query_str := query_str || 'AND v.locator_id IS NULL ';
18843 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
18844 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
18845 END IF;
18846
18847 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
18848 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
18849 query_str := query_str || 'AND v.locator_id = :loc_id ';
18850 END IF;
18851
18852 --ER(3338592) Changes
18853 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18854 query_str := query_str || ' AND v.item_description LIKE :item_description ';
18855 END IF;
18856 --ER(3338592) Changes
18857
18858 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
18859 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18860 query_str := query_str || 'AND v.subinventory_code = :sub ';
18861 END IF;
18862
18863 IF inv_mwb_globals.g_organization_id IS NOT NULL
18864 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
18865 query_str := query_str || 'AND v.organization_id = :org_id ';
18866 END IF;
18867
18868 query_str := query_str || ' AND v.lot_number is not null ';
18869
18870 query_str := query_str || 'GROUP BY v.lot_number ';
18871 query_str := query_str || 'ORDER BY v.lot_number ';
18872 ELSIF(
18873 (
18874 inv_mwb_globals.g_serial_from IS NOT NULL
18875 OR inv_mwb_globals.g_serial_from IS NOT NULL
18876 OR inv_mwb_globals.g_tree_serial_number IS NOT NULL
18877 OR inv_mwb_globals.g_serial_controlled = 2
18878 OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
18879 OR inv_mwb_globals.g_unit_number IS NOT NULL
18880 )
18881 AND inv_mwb_globals.g_lpn_from IS NULL
18882 AND inv_mwb_globals.g_lpn_to IS NULL
18883 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
18884 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
18885 ) THEN
18886 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
18887 table_required := ' mtl_rcv_serial_oh_v v ';
18888 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
18889 table_required := ' mtl_onhand_serial_mwb_v v ';
18890 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
18891 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
18892 END IF; -- NSRIVAST, INVCONV
18893 ELSE
18894 table_required := ' mtl_onhand_serial_v v ';
18895 END IF;
18896
18897 --bug 6633612
18898 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18899 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
18900 END IF;
18901 --bug 6633612
18902
18903 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
18904 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
18905 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
18906 query_str := query_str || 'SELECT v.lot_number from ' || table_required;
18907 query_str := query_str || 'WHERE 1=1 ';
18908 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
18909 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
18910 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
18911 query_str :=
18912 query_str
18913 || 'SELECT v.lot_number from'
18914 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
18915 || inv_mwb_globals.g_tree_serial_attr_query
18916 || ') msn, '
18917 || table_required;
18918 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
18919 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
18920 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
18921 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
18922 query_str :=
18923 query_str
18924 || 'SELECT v.lot_number from'
18925 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
18926 || inv_mwb_globals.g_tree_lot_attr_query
18927 || ') mln, '
18928 || table_required;
18929 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
18930 --BUG 7556505
18931 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
18932 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
18933 END IF;
18934 --BUG 7556505
18935 /* Bug 8396954 added below code for supplier_lot_number */
18936 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18937 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18938 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
18939 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
18940 END IF;
18941
18942 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18943 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
18944 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
18945 END IF;
18946
18947 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18948 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
18949 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
18950 END IF;
18951 /* End of Bug 8396954 */
18952 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
18953 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
18954 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
18955 query_str :=
18956 query_str
18957 || 'SELECT v.lot_number from'
18958 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
18959 || inv_mwb_globals.g_tree_lot_attr_query
18960 || ') mln, '
18961 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
18962 || inv_mwb_globals.g_tree_serial_attr_query
18963 || ') msn, '
18964 || table_required;
18965 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
18966 --BUG 7556505
18967 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
18968 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
18969 END IF;
18970 --BUG 7556505
18971 /* Bug 8396954 added below code for supplier_lot_number */
18972 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18973 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18974 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
18975 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
18976 END IF;
18977
18978 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
18979 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
18980 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
18981 END IF;
18982
18983 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
18984 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
18985 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
18986 END IF;
18987 /* End of Bug 8396954 */
18988 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
18989 END IF;
18990
18991 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18992 query_str := query_str || ' AND v.project_id = :pr_id ';
18993 END IF;
18994
18995 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18996 query_str := query_str || ' AND v.task_id = :ta_id ';
18997 END IF;
18998 --bug 6633612
18999 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
19000 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
19001 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
19002 || ' AND rt.organization_id = mmt.organization_id '
19003 || ' AND rt.transaction_type = ''DELIVER'''
19004 || ' AND rt.destination_type_code = ''INVENTORY'''
19005 || ' AND mmt.transaction_id = v.last_transaction_id '
19006 || ' AND mmt.organization_id = v.organization_id ';
19007
19008 END IF;
19009 --bug 6633612
19010
19011 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
19012 query_str := query_str || ' AND v.unit_number=:un_id ';
19013 END IF;
19014
19015 -- NSRIVAST, INVCONV, Start
19016 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
19017 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
19018 END IF ;
19019 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
19020 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
19021 END IF ;
19022 -- NSRIVAST, INVCONV, End
19023
19024 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
19025 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
19026 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
19027 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
19028 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
19029 query_str := query_str || ' AND planning_organization_id in ';
19030 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
19031 query_str := query_str || ' where vendor_id = :vendor_id )';
19032 END IF;*/
19033 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
19034 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
19035 query_str := query_str || ' AND v.owning_tp_type = 2 ';
19036 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
19037 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
19038 query_str := query_str || ' AND v.owning_tp_type = 1 ';
19039 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
19040 query_str := query_str || ' AND v.owning_tp_type = 1 ';
19041 END IF;
19042
19043 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
19044 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
19045 query_str := query_str || ' AND v.planning_tp_type = 2 ';
19046 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
19047 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
19048 query_str := query_str || ' AND v.planning_tp_type = 1 ';
19049 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
19050 query_str := query_str || ' AND v.planning_tp_type = 1 ';
19051 END IF;
19052
19053 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
19054 -- from serial table (MSN)
19055 if (l_default_status_id is not null) then -- Status at onhand level
19056 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19057 query_str := query_str || 'AND v.serial_status_id = :st_id ';
19058 ELSE
19059 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19060 query_str := query_str || 'AND v.serial_status_id = :st_id ';
19061 END IF;
19062 END IF;
19063 else
19064 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19065 query_str := query_str || 'AND v.lot_status_id = :st_id ';
19066 ELSE
19067 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19068 query_str := query_str || 'AND v.lot_status_id = :st_id ';
19069 END IF;
19070 END IF;
19071 end if;
19072
19073 /*
19074 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19075 IF inv_mwb_globals.g_only_lot_status = 1 THEN
19076 query_str := query_str || ' AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
19077 query_str := query_str || ' lot_status_id = :st_id or serial_status_id = :st_id) ';
19078 ELSE
19079 query_str := query_str || ' AND (lot_status_id = :st_id or :st_id IS NULL) ';
19080 END IF;
19081 END IF;
19082 */
19083
19084 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
19085 query_str := query_str || 'AND v.lot_number >= :lot_f ';
19086 END IF;
19087
19088 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
19089 query_str := query_str || 'AND v.lot_number <= :lot_t ';
19090 END IF;
19091
19092 --KMOTUPAL ME # 3922793
19093 IF inv_mwb_globals.g_expired_lots = 'Y' THEN
19094 query_str := query_str || ' AND v.expiration_date <= :expiration_date ';
19095 END IF;
19096 --KMOTUPAL ME # 3922793
19097
19098 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
19099 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
19100 END IF;
19101
19102 IF inv_mwb_globals.g_revision_controlled = 1 THEN
19103 query_str := query_str || 'AND v.revision IS NULL ';
19104 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
19105 query_str := query_str || 'AND v.revision IS NOT NULL ';
19106 END IF;
19107
19108 IF inv_mwb_globals.g_revision IS NOT NULL
19109 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
19110 query_str := query_str || 'AND v.revision = :rev ';
19111 END IF;
19112
19113 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
19114 query_str := query_str || 'AND (v.serial_number = :serial_n) ';
19115 END IF;
19116
19117 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
19118 query_str := query_str || 'AND v.serial_number >= :serial_f ';
19119 END IF;
19120
19121 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
19122 query_str := query_str || 'AND v.serial_number <= :serial_t ';
19123 END IF;
19124
19125 IF inv_mwb_globals.g_containerized = 1 THEN
19126 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
19127 ELSIF inv_mwb_globals.g_containerized = 2 THEN
19128 query_str := query_str || 'AND v.containerized_flag = 1 ';
19129 END IF;
19130
19131 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
19132 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
19133 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
19134 END IF;
19135
19136 -- ER(9158529 client)
19137 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
19138 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
19139 END IF;
19140 -- ER(9158529 client)
19141
19142 -- ER(9158529)
19143 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
19144 query_str := query_str || ' AND v.inventory_item_id in '
19145 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
19146 || ' where organization_id = :organization_id '
19147 || ' and category_set_id = :category_set_id '
19148 || ' and category_id = nvl(:category_id, category_id)) ' ;
19149 END IF;
19150 -- ER(9158529)
19151
19152 IF inv_mwb_globals.g_locator_controlled = 1 THEN
19153 query_str := query_str || 'AND v.locator_id IS NULL ';
19154 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
19155 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
19156 END IF;
19157
19158 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
19159 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
19160 query_str := query_str || 'AND v.locator_id = :loc_id ';
19161 END IF;
19162
19163 --ER(3338592) Changes
19164 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
19165 query_str := query_str || ' AND v.item_description LIKE :item_description ';
19166 END IF;
19167 --ER(3338592) Changes
19168
19169 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
19170 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
19171 query_str := query_str || 'AND v.subinventory_code = :sub ';
19172 END IF;
19173
19174 IF inv_mwb_globals.g_organization_id IS NOT NULL
19175 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
19176 query_str := query_str || 'AND v.organization_id = :org_id ';
19177 END IF;
19178
19179 query_str := query_str || ' AND v.lot_number is not null ';
19180
19181 query_str := query_str || 'GROUP BY v.lot_number ';
19182 query_str := query_str || 'ORDER BY v.lot_number ';
19183 --Need to query both mtl_onhand_total_v and mtl_onhand_serial_v
19184 ELSIF(
19185 inv_mwb_globals.g_serial_from IS NULL
19186 AND inv_mwb_globals.g_serial_to IS NULL
19187 AND inv_mwb_globals.g_tree_serial_number IS NULL
19188 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
19189 AND inv_mwb_globals.g_unit_number IS NULL
19190 AND inv_mwb_globals.g_status_id IS NOT NULL
19191 AND inv_mwb_globals.g_lpn_from IS NULL
19192 AND inv_mwb_globals.g_lpn_to IS NULL
19193 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
19194 AND nvl(inv_mwb_globals.g_prepacked,1) = 1
19195 ) THEN
19196 IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
19197 table_required := ' mtl_onhand_total_mwb_v v ';
19198 -- ELSIF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
19199 -- table_required := ' mtl_onhand_new_lpn_v moq '; -- NSRIVAST, INVCONV
19200 ELSE
19201 table_required := ' mtl_onhand_total_v v ';
19202 END IF;
19203
19204 --bug 6633612
19205 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
19206 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
19207 END IF;
19208 --bug 6633612
19209
19210 query_str := 'SELECT lot_number from( ';
19211
19212 IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
19213 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL THEN
19214 query_str := query_str || 'SELECT v.lot_number lot_number from ' || table_required;
19215 query_str := query_str || 'WHERE 1=1 ';
19216 ELSE
19217 query_str :=
19218 query_str
19219 || 'SELECT v.lot_number lot_number from'
19220 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
19221 || inv_mwb_globals.g_tree_lot_attr_query
19222 || ') mln, '
19223 || table_required;
19224 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
19225 --BUG 7556505
19226 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
19227 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
19228 END IF;
19229 --BUG 7556505
19230 /* Bug 8396954 added below code for supplier_lot_number */
19231 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19232 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19233 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
19234 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
19235 END IF;
19236
19237 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19238 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
19239 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
19240 END IF;
19241
19242 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19243 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
19244 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
19245 END IF;
19246 /* End of Bug 8396954 */
19247 END IF;
19248
19249 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
19250 query_str := query_str || ' AND v.project_id = :pr_id ';
19251 END IF;
19252
19253 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
19254 query_str := query_str || ' AND v.task_id = :ta_id ';
19255 END IF;
19256
19257 --bug 6633612
19258 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
19259 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
19260 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
19261 || ' AND rt.organization_id = mmt.organization_id '
19262 || ' AND rt.transaction_type = ''DELIVER'''
19263 || ' AND rt.destination_type_code = ''INVENTORY'''
19264 || ' AND mmt.transaction_id = v.create_transaction_id '
19265 || ' AND mmt.organization_id = v.organization_id ';
19266
19267 END IF;
19268 --bug 6633612
19269
19270 -- NSRIVAST, INVCONV, Start
19271 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
19272 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
19273 END IF ;
19274 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
19275 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
19276 END IF ;
19277 -- NSRIVAST, INVCONV, End
19278
19279 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
19280 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
19281 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
19282 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
19283 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
19284 query_str := query_str || ' AND planning_organization_id in ';
19285 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
19286 query_str := query_str || ' where vendor_id = :vendor_id )';
19287 END IF;*/
19288 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
19289 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
19290 query_str := query_str || ' AND v.owning_tp_type = 2 ';
19291 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
19292 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
19293 query_str := query_str || ' AND owning_tp_type = 1 ';
19294 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
19295 query_str := query_str || ' AND v.owning_tp_type = 1 ';
19296 END IF;
19297
19298 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
19299 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
19300 query_str := query_str || ' AND v.planning_tp_type = 2 ';
19301 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
19302 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
19303 query_str := query_str || ' AND v.planning_tp_type = 1 ';
19304 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
19305 query_str := query_str || ' AND v.planning_tp_type = 1 ';
19306 END IF;
19307
19308 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
19309 -- from onhand table (MOQD)
19310 if (l_default_status_id is not null) then -- Status at onhand level
19311 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19312 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
19313 ELSE
19314 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19315 query_str := query_str || 'AND v.onhand_status_id = :st_id ';
19316 END IF;
19317 END IF;
19318 else
19319 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19320 query_str := query_str || 'AND v.lot_status_id = :st_id ';
19321 ELSE
19322 IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
19323 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
19324 query_str := query_str || 'OR v.lot_status_id = :st_id) ';
19325 END IF;
19326 END IF;
19327 end if;
19328
19329 /*
19330 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19331 IF inv_mwb_globals.g_only_lot_status = 1 THEN
19332 query_str := query_str || 'AND (subinventory_status_id = :st_id or ';
19333 query_str := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
19334 ELSE
19335 query_str := query_str || 'AND lot_status_id = :st_id ';
19336 END IF;
19337 END IF;
19338 */
19339 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
19340 query_str := query_str || 'AND v.lot_number >= :lot_f ';
19341 END IF;
19342
19343 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
19344 query_str := query_str || 'AND v.lot_number <= :lot_t ';
19345 END IF;
19346
19347 --KMOTUPAL ME # 3922793
19348 IF inv_mwb_globals.g_expired_lots = 'Y' THEN
19349 query_str := query_str || ' AND v.expiration_date <= :expiration_date ';
19350 END IF;
19351 --KMOTUPAL ME # 3922793
19352
19353 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
19354 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
19355 END IF;
19356
19357 IF inv_mwb_globals.g_revision_controlled = 1 THEN
19358 query_str := query_str || 'AND v.revision IS NULL ';
19359 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
19360 query_str := query_str || 'AND revision IS NOT NULL ';
19361 END IF;
19362
19363 IF inv_mwb_globals.g_revision IS NOT NULL
19364 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
19365 query_str := query_str || 'AND v.revision = :rev ';
19366 END IF;
19367
19368 IF inv_mwb_globals.g_containerized = 1 THEN
19369 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
19370 ELSIF inv_mwb_globals.g_containerized = 2 THEN
19371 query_str := query_str || 'AND v.containerized_flag = 1 ';
19372 END IF;
19373
19374 -- query_str := query_str || 'AND serial_number_control_code in (1,6) ';
19375 query_str :=
19376 query_str
19377 || ' AND exists '
19378 || ' ( select null from mtl_system_items msi WHERE '
19379 || ' v.organization_id = msi.organization_id and '
19380 || ' v.inventory_item_id = msi.inventory_item_id and '
19381 || ' item_serial_control in (1,6) ) ';
19382
19383 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
19384 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
19385 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
19386 END IF;
19387
19388 -- ER(9158529 client)
19389 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
19390 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
19391 END IF;
19392 -- ER(9158529 client)
19393
19394 -- ER(9158529)
19395 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
19396 query_str := query_str || ' AND v.inventory_item_id in '
19397 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
19398 || ' where organization_id = :organization_id '
19399 || ' and category_set_id = :category_set_id '
19400 || ' and category_id = nvl(:category_id, category_id)) ' ;
19401 END IF;
19402 -- ER(9158529)
19403
19404 IF inv_mwb_globals.g_locator_controlled = 1 THEN
19405 query_str := query_str || 'AND v.locator_id IS NULL ';
19406 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
19407 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
19408 END IF;
19409
19410 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
19411 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
19412 query_str := query_str || 'AND v.locator_id = :loc_id ';
19413 END IF;
19414
19415 --ER(3338592) Changes
19416 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
19417 query_str := query_str || ' AND v.item_description LIKE :item_description ';
19418 END IF;
19419 --ER(3338592) Changes
19420
19421 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
19422 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
19423 query_str := query_str || 'AND v.subinventory_code = :sub ';
19424 END IF;
19425
19426 IF inv_mwb_globals.g_organization_id IS NOT NULL
19427 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
19428 query_str := query_str || 'AND v.organization_id = :org_id ';
19429 END IF;
19430
19431 query_str := query_str || 'UNION ';
19432
19433 IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
19434 table_required := ' mtl_onhand_serial_mwb_v v ';
19435 ELSE
19436 table_required := ' mtl_onhand_serial_v v ';
19437 END IF;
19438
19439 --bug 6633612
19440 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
19441 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
19442 END IF;
19443 --bug 6633612
19444
19445 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
19446 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
19447 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
19448 query_str := query_str || 'SELECT v.lot_number from ' || table_required;
19449 query_str := query_str || 'WHERE 1=1 ';
19450 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
19451 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
19452 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
19453 query_str :=
19454 query_str
19455 || 'SELECT v.lot_number from'
19456 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
19457 || inv_mwb_globals.g_tree_lot_attr_query
19458 || ') mln, '
19459 || table_required;
19460 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
19461 --BUG 7556505
19462 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
19463 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
19464 END IF;
19465 --BUG 7556505
19466 /* Bug 8396954 added below code for supplier_lot_number */
19467 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19468 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19469 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
19470 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
19471 END IF;
19472
19473 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19474 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
19475 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
19476 END IF;
19477
19478 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19479 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
19480 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
19481 END IF;
19482 /* End of Bug 8396954 */
19483 END IF;
19484
19485 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
19486 -- from serial table (MSN)
19487 if (l_default_status_id is not null) then -- Status at onhand level
19488 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19489 query_str := query_str || 'AND v.serial_status_id = :st_id ';
19490 ELSE
19491 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19492 query_str := query_str || 'AND v.serial_status_id = :st_id ';
19493 END IF;
19494 END IF;
19495 else
19496 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19497 query_str := query_str || 'AND v.lot_status_id = :st_id ';
19498 ELSE
19499 IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
19500 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
19501 query_str := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
19502 END IF;
19503 END IF;
19504 end if;
19505
19506 /*
19507 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19508 IF inv_mwb_globals.g_only_lot_status = 1 THEN
19509 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
19510 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
19511 ELSE
19512 query_str := query_str || 'AND (lot_status_id = :st_id or :st_id IS NULL) ';
19513 END IF;
19514 END IF;
19515 */
19516
19517 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
19518 query_str := query_str || 'AND v.lot_number >= :lot_f ';
19519 END IF;
19520
19521 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
19522 query_str := query_str || 'AND v.lot_number <= :lot_t ';
19523 END IF;
19524
19525 --bug 6633612
19526 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
19527 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
19528 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
19529 || ' AND rt.organization_id = mmt.organization_id '
19530 || ' AND rt.transaction_type = ''DELIVER'''
19531 || ' AND rt.destination_type_code = ''INVENTORY'''
19532 || ' AND mmt.transaction_id = v.last_transaction_id '
19533 || ' AND mmt.organization_id = v.organization_id ';
19534
19535 END IF;
19536 --bug 6633612
19537
19538 --KMOTUPAL ME # 3922793
19539 IF inv_mwb_globals.g_expired_lots = 'Y' THEN
19540 query_str := query_str || ' AND v.expiration_date <= :expiration_date ';
19541 END IF;
19542 --KMOTUPAL ME # 3922793
19543
19544 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
19545 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
19546 END IF;
19547
19548 IF inv_mwb_globals.g_revision_controlled = 1 THEN
19549 query_str := query_str || 'AND v.revision IS NULL ';
19550 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
19551 query_str := query_str || 'AND v.revision IS NOT NULL ';
19552 END IF;
19553
19554 IF inv_mwb_globals.g_revision IS NOT NULL
19555 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
19556 query_str := query_str || 'AND v.revision = :rev ';
19557 END IF;
19558
19559 IF inv_mwb_globals.g_containerized = 1 THEN
19560 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
19561 ELSIF inv_mwb_globals.g_containerized = 2 THEN
19562 query_str := query_str || 'AND v.containerized_flag = 1 ';
19563 END IF;
19564
19565 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
19566 query_str := query_str || 'AND v.serial_number >= :serial_f ';
19567 END IF;
19568
19569 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
19570 query_str := query_str || 'AND v.serial_number <= :serial_t ';
19571 END IF;
19572
19573 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
19574 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
19575 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
19576 END IF;
19577
19578 -- ER(9158529 client)
19579 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
19580 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
19581 END IF;
19582 -- ER(9158529 client)
19583
19584 -- ER(9158529)
19585 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
19586 query_str := query_str || ' AND v.inventory_item_id in '
19587 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
19588 || ' where organization_id = :organization_id '
19589 || ' and category_set_id = :category_set_id '
19590 || ' and category_id = nvl(:category_id, category_id)) ' ;
19591 END IF;
19592 -- ER(9158529)
19593
19594 IF inv_mwb_globals.g_locator_controlled = 1 THEN
19595 query_str := query_str || 'AND v.locator_id IS NULL ';
19596 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
19597 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
19598 END IF;
19599
19600 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
19601 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
19602 query_str := query_str || 'AND v.locator_id = :loc_id ';
19603 END IF;
19604
19605 --ER(3338592) Changes
19606 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
19607 query_str := query_str || ' AND v.item_description LIKE :item_description ';
19608 END IF;
19609 --ER(3338592) Changes
19610
19611 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
19612 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
19613 query_str := query_str || 'AND v.subinventory_code = :sub ';
19614 END IF;
19615
19616 IF inv_mwb_globals.g_organization_id IS NOT NULL
19617 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
19618 query_str := query_str || 'AND v.organization_id = :org_id ';
19619 END IF;
19620
19621 query_str := query_str || ') GROUP BY lot_number ';
19622 query_str := query_str || 'ORDER BY lot_number ';
19623 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
19624 OR inv_mwb_globals.g_lpn_to IS NOT NULL
19625 OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
19626 OR inv_mwb_globals.g_prepacked <> 1) THEN
19627 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
19628 table_required := ' mtl_onhand_lpn_mwb_v mol ';
19629 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
19630 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
19631 table_required := ' mtl_onhand_lpn_mwb_v mol ';
19632 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
19633 table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
19634 END IF; -- NSRIVAST, INVCONV
19635 ELSE
19636 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
19637 IF is_grade_t = TRUE THEN -- %%NSRIVAST, INVCONV
19638 table_required := ' mtl_onhand_new_lpn_v mol '; -- %%NSRIVAST, INVCONV
19639 END IF;
19640 END IF;
19641 ELSE
19642 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
19643 table_required := ' mtl_onhand_lpn_v mol ';
19644 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
19645 table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
19646 END IF; -- NSRIVAST, INVCONV
19647 ELSE
19648 table_required := ' mtl_onhand_new_lpn_v mol ';
19649 END IF;
19650 END IF;
19651
19652 query_str := 'SELECT lot_number ';
19653 query_str := query_str || 'FROM ' || table_required;
19654
19655 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
19656 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
19657 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
19658 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
19659 query_str := query_str || ' WHERE 1=1 ';
19660
19661 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
19662 query_str := query_str || ' AND lpn_context = 3 ';
19663 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
19664 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 or lpn_context=8)';--12984304
19665 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
19666 query_str := query_str || 'AND lpn_context = 1 ';
19667 ELSIF inv_mwb_globals.g_prepacked <> 1
19668 AND inv_mwb_globals.g_prepacked <> 999
19669 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
19670 query_str := query_str || 'AND lpn_context = :prepacked ';
19671 END IF;
19672
19673 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
19674 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
19675 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
19676 END IF;
19677
19678 -- NSRIVAST, INVCONV, Start
19679 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
19680 query_str := query_str || ' AND grade_code = :grade_f ' ;
19681 END IF ;
19682 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
19683 query_str := query_str || ' AND grade_code = :grade_c ' ;
19684 END IF ;
19685 -- NSRIVAST, INVCONV, End
19686
19687 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
19688 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
19689 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
19690 END IF;
19691
19692 IF inv_mwb_globals.g_organization_id IS NOT NULL
19693 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
19694 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
19695 END IF;
19696
19697 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
19698 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
19699 query_str := query_str || ' and license_plate_number = :lpn_f ';
19700 ELSE
19701 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
19702 query_str := query_str || ' and license_plate_number >= :lpn_f ';
19703 END IF;
19704 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
19705 query_str := query_str || ' and license_plate_number <= :lpn_t ';
19706 END IF;
19707 END IF;
19708 END IF;
19709
19710 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
19711 END IF;
19712
19713 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
19714 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
19715 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
19716 query_str := query_str || 'WHERE 1=1 ';
19717 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
19718 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
19719 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
19720 query_str :=
19721 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
19722 || ') msn ';
19723 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
19724 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
19725 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
19726 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
19727 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
19728 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
19729 --BUG 7556505
19730 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
19731 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
19732 END IF;
19733 --BUG 7556505
19734 /* Bug 8396954 added below code for supplier_lot_number */
19735 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19736 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19737 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
19738 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
19739 END IF;
19740
19741 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19742 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
19743 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
19744 END IF;
19745
19746 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19747 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
19748 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
19749 END IF;
19750 /* End of Bug 8396954 */
19751 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
19752 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
19753 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
19754 query_str :=
19755 query_str
19756 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
19757 || inv_mwb_globals.g_tree_lot_attr_query
19758 || ') mln '
19759 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
19760 || inv_mwb_globals.g_tree_serial_attr_query
19761 || ') msn ';
19762 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
19763 --BUG 7556505
19764 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
19765 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
19766 END IF;
19767 --BUG 7556505
19768 /* Bug 8396954 added below code for supplier_lot_number */
19769 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19770 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19771 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
19772 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
19773 END IF;
19774
19775 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
19776 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
19777 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
19778 END IF;
19779
19780 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
19781 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
19782 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
19783 END IF;
19784 /* End of Bug 8396954 */
19785 query_str := query_str || 'AND msn.serial_num = serial_number ';
19786 END IF;
19787
19788 /*LPN Status Project*/
19789 IF (l_default_status_id IS NOT NULL) THEN -- Status at onhand level
19790 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19791 query_str := query_str || 'AND onhand_status_id = :st_id ';
19792 ELSE
19793 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19794 query_str := query_str || 'AND onhand_status_id = :st_id ';
19795 END IF;
19796 END IF;
19797 ELSE
19798 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
19799 query_str := query_str || 'AND lot_status_id = :st_id ';
19800 ELSE
19801 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19802 query_str := query_str || 'AND lot_status_id = :st_id ';
19803 END IF;
19804 END IF;
19805 END IF;
19806 /* End of fix for LPN Status Project */
19807 /*
19808 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
19809 IF inv_mwb_globals.g_only_lot_status = 1 THEN
19810 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
19811 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
19812 ELSE
19813 query_str := query_str || 'AND lot_status_id = :st_id ';
19814 END IF;
19815 END IF;
19816 */
19817 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
19818 query_str := query_str || ' AND project_id = :pr_id ';
19819 END IF;
19820
19821 -- NSRIVAST, INVCONV, Start
19822 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
19823 query_str := query_str || ' AND grade_code = :grade_f ' ;
19824 END IF ;
19825 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
19826 query_str := query_str || ' AND grade_code = :grade_c ' ;
19827 END IF ;
19828 -- NSRIVAST, INVCONV, End
19829
19830 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
19831 query_str := query_str || ' AND task_id = :ta_id ';
19832 END IF;
19833
19834 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
19835 query_str := query_str || ' AND unit_number=:un_id ';
19836 END IF;
19837
19838 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
19839 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
19840 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
19841 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
19842 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
19843 query_str := query_str || ' AND planning_organization_id in ';
19844 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
19845 query_str := query_str || ' where vendor_id = :vendor_id )';
19846 END IF;*/
19847
19848 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
19849 query_str := query_str || ' AND owning_organization_id = :own_org ';
19850 query_str := query_str || ' AND owning_tp_type = 2 ';
19851 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
19852 query_str := query_str || ' AND owning_organization_id = :own_org ';
19853 query_str := query_str || ' AND owning_tp_type = 1 ';
19854 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
19855 query_str := query_str || ' AND owning_tp_type = 1 ';
19856 END IF;
19857
19858 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
19859 query_str := query_str || ' AND planning_organization_id = :plan_org ';
19860 query_str := query_str || ' AND planning_tp_type = 2 ';
19861 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
19862 query_str := query_str || ' AND planning_organization_id = :plan_org ';
19863 query_str := query_str || ' AND planning_tp_type = 1 ';
19864 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
19865 query_str := query_str || ' AND planning_tp_type = 1 ';
19866 END IF;
19867
19868 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
19869 query_str := query_str || 'AND lot_number >= :lot_f ';
19870 END IF;
19871
19872 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
19873 query_str := query_str || 'AND lot_number <= :lot_t ';
19874 END IF;
19875
19876 --KMOTUPAL ME # 3922793
19877 IF inv_mwb_globals.g_expired_lots = 'Y' THEN
19878 query_str := query_str || ' AND expiration_date <= :expiration_date ';
19879 END IF;
19880 --KMOTUPAL ME # 3922793
19881
19882 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
19883 query_str := query_str || 'AND cost_group_id = :cg_id ';
19884 END IF;
19885
19886 IF inv_mwb_globals.g_revision_controlled = 1 THEN
19887 query_str := query_str || 'AND revision IS NULL ';
19888 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
19889 query_str := query_str || 'AND revision IS NOT NULL ';
19890 END IF;
19891
19892 IF inv_mwb_globals.g_revision IS NOT NULL
19893 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
19894 query_str := query_str || 'AND revision = :rev ';
19895 END IF;
19896
19897 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
19898 query_str := query_str || 'AND (serial_number = :serial_n) ';
19899 END IF;
19900
19901 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
19902 query_str := query_str || 'AND serial_number >= :serial_f ';
19903 END IF;
19904
19905 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
19906 query_str := query_str || 'AND serial_number <= :serial_t ';
19907 END IF;
19908
19909 IF inv_mwb_globals.g_serial_controlled = 1 THEN
19910 query_str :=
19911 query_str
19912 || ' AND exists '
19913 || ' ( select null from mtl_system_items msi WHERE '
19914 || ' mol.organization_id = msi.organization_id and '
19915 || ' mol.inventory_item_id = msi.inventory_item_id and '
19916 || ' item_serial_control in (1,6) ) ';
19917 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
19918 query_str :=
19919 query_str
19920 || ' AND exists '
19921 || ' ( select null from mtl_system_items msi WHERE '
19922 || ' mol.organization_id = msi.organization_id and '
19923 || ' mol.inventory_item_id = msi.inventory_item_id and '
19924 || ' item_serial_control in (2,5) ) ';
19925 END IF;
19926
19927 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
19928 query_str := query_str || ' AND lpn_context = 3 ';
19929 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
19930 query_str := query_str || 'AND lpn_context = 1 ';
19931 ELSIF inv_mwb_globals.g_prepacked <> 1
19932 AND inv_mwb_globals.g_prepacked <> 999
19933 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
19934 query_str := query_str || 'AND lpn_context = :prepacked ';
19935 END IF;
19936
19937 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
19938 query_str := query_str || 'AND MOL.lpn_id = :plpn_id ';
19939 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
19940 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
19941 query_str := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
19942 END IF;
19943
19944 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
19945 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
19946 query_str := query_str || 'AND inventory_item_id = :item_id ';
19947 END IF;
19948
19949 -- ER(9158529 client)
19950 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
19951 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
19952 END IF;
19953 -- ER(9158529 client)
19954
19955 -- ER(9158529)
19956 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
19957 query_str := query_str || ' AND inventory_item_id in '
19958 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
19959 || ' where organization_id = :organization_id '
19960 || ' and category_set_id = :category_set_id '
19961 || ' and category_id = nvl(:category_id, category_id)) ' ;
19962 END IF;
19963 -- ER(9158529)
19964
19965 IF inv_mwb_globals.g_locator_controlled = 1 THEN
19966 query_str := query_str || 'AND locator_id IS NULL ';
19967 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
19968 query_str := query_str || 'AND locator_id IS NOT NULL ';
19969 END IF;
19970
19971 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
19972 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
19973 query_str := query_str || 'AND locator_id = :loc_id ';
19974 END IF;
19975
19976 --ER(3338592) Changes
19977 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
19978 query_str := query_str || ' AND item_description LIKE :item_description ';
19979 END IF;
19980 --ER(3338592) Changes
19981
19982 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
19983 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
19984 query_str := query_str || 'AND subinventory_code = :sub ';
19985 END IF;
19986
19987 IF inv_mwb_globals.g_organization_id IS NOT NULL
19988 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
19989 query_str := query_str || 'AND organization_id = :org_id ';
19990 END IF;
19991
19992 query_str := query_str || 'GROUP BY lot_number ';
19993 query_str := query_str || 'ORDER BY lot_number ';
19994 END IF;
19995
19996 -- Enable this during debugging
19997 inv_trx_util_pub.trace(query_str, 'Add_lot :- Material Workbench', 9);
19998 --trace1(query_str, 'add_lots', 9);
19999 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
20000 inv_mwb_globals.g_last_query := query_str;
20001 query_hdl := DBMS_SQL.open_cursor;
20002 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
20003
20004
20005 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
20006 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_org' ); --rs
20007 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
20008 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
20009 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
20010 END IF;
20011
20012 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
20013 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_sub' ); --rs
20014 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
20015 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
20016 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
20017 END IF;
20018
20019 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
20020 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_loc' ); --rs
20021 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
20022 ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
20023 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
20024 END IF;
20025
20026 IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
20027 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_item' ); --rs
20028 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
20029 ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
20030 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
20031 END IF;
20032
20033 -- ER(9158529 client)
20034 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
20035 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
20036 END IF;
20037 -- ER(9158529 client)
20038
20039 -- ER(9158529)
20040 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
20041 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_item_category' ); --rs
20042 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
20043 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
20044 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
20045 END IF;
20046 -- ER(9158529)
20047
20048 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
20049 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_rev' ); --rs
20050 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_tree_rev);
20051 ELSIF inv_mwb_globals.g_revision IS NOT NULL THEN
20052 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
20053 END IF;
20054
20055 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
20056 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_cg' ); --rs
20057 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
20058 END IF;
20059
20060 --BUG 7556505
20061 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
20062 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' parent_lot ');
20063 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
20064 END IF;
20065 --BUG 7556505
20066
20067 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
20068 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lot_f' ); --rs
20069 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
20070 END IF;
20071
20072 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
20073 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lot_to' ); --rs
20074 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
20075 END IF;
20076
20077 /* Bug 8396954 added below code for supplier_lot_number */
20078 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20079 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20080 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
20081 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
20082 END IF;
20083
20084 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20085 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
20086 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
20087 END IF;
20088
20089 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20090 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
20091 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
20092 END IF;
20093 /* End of Bug 8396954 */
20094
20095 --KMOTUPAL ME # 3922793
20096 IF inv_mwb_globals.g_expired_lots = 'Y' THEN
20097 DBMS_SQL.bind_variable(query_hdl,'expiration_date', inv_mwb_globals.g_expiration_date);
20098 END IF;
20099 --KMOTUPAL ME # 3922793
20100
20101 -- NSRIVAST, INVCONV, Start
20102 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
20103 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
20104 END IF;
20105 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
20106 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
20107 END IF;
20108 -- NSRIVAST, INVCONV, End
20109
20110 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
20111 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
20112 END IF;
20113
20114 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
20115 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
20116 END IF;
20117
20118 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
20119 DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
20120 END IF;
20121
20122 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
20123 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
20124 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn1_f' ); --rs
20125 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
20126 ELSE
20127 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
20128 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn_f' ); --rs
20129 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
20130 END IF;
20131 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
20132 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn_t' ); --rs
20133 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
20134 END IF;
20135 END IF;
20136 END IF;
20137
20138 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
20139 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_lpn' ); --rs
20140 DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
20141 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_lpn after' ); --rs
20142 END IF;
20143
20144 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
20145 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
20146 ELSE
20147 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
20148 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
20149 END IF;
20150 END IF;
20151
20152 IF inv_mwb_globals.g_prepacked <> 1
20153 AND inv_mwb_globals.g_prepacked <> 999
20154 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
20155 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'prapacked' ); --rs
20156 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
20157 END IF;
20158
20159 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
20160 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
20161 END IF;
20162
20163 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
20164 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
20165 END IF;
20166
20167 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
20168 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
20169 END IF;
20170
20171 --bug 6633612
20172 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
20173 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
20174 END IF;
20175 --bug 6633612
20176
20177 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
20178 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
20179 END IF;
20180
20181 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
20182 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
20183 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
20184 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
20185 END IF;*/
20186 IF (inv_mwb_globals.g_owning_qry_mode = 4)
20187 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
20188 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
20189 END IF;
20190
20191 IF (inv_mwb_globals.g_planning_query_mode = 4)
20192 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
20193 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
20194 END IF;
20195
20196 --ER(3338592) Changes
20197 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
20198 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'item_desc' ); --rs
20199 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
20200 END IF;
20201
20202
20203 DBMS_SQL.define_column(query_hdl, 1, lot, 80);
20204 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
20205
20206 LOOP
20207 -- fetch a row
20208 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
20209 -- fetch columns from the row
20210 DBMS_SQL.column_value(query_hdl, 1, lot);
20211
20212 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
20213 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
20214 x_node_tbl(i).DEPTH := 1;
20215 x_node_tbl(i).label := lot;
20216 x_node_tbl(i).icon := 'inv_lott';
20217 x_node_tbl(i).VALUE := lot;
20218 x_node_tbl(i).TYPE := 'LOT';
20219 i := i + 1;
20220 END IF;
20221
20222 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
20223 j := j + 1;
20224 ELSE
20225 EXIT;
20226 END IF;
20227 END LOOP;
20228
20229 DBMS_SQL.close_cursor(query_hdl); -- close cursor
20230 x_node_value := j;
20231 x_tbl_index := i;
20232 EXCEPTION
20233 WHEN NO_DATA_FOUND THEN
20234 NULL;
20235 WHEN OTHERS THEN
20236 RAISE;
20237 END add_lots;
20238
20239 PROCEDURE add_serials(
20240 x_node_value IN OUT NOCOPY NUMBER
20241 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
20242 , x_tbl_index IN OUT NOCOPY NUMBER
20243 ) IS
20244 query_str VARCHAR2(10000);
20245 query_hdl NUMBER;
20246 rows_processed NUMBER;
20247 serial mtl_serial_numbers.serial_number%TYPE;
20248 serial_control NUMBER;
20249 i NUMBER := x_tbl_index;
20250 j NUMBER := x_node_value;
20251 table_required VARCHAR2(300);
20252 is_grade_t BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
20253 select_from_str VARCHAR2(2000);
20254 where_str VARCHAR2(2000);
20255 lpn_from_id wms_license_plate_numbers.lpn_id%type;
20256 lpn_to_id wms_license_plate_numbers.lpn_id%type;
20257 l_default_status_id NUMBER; -- Onhand Material Status Support
20258
20259 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_SERIAL';
20260 BEGIN
20261
20262 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
20263
20264 IF inv_mwb_globals.g_view_by = 'STATUS' THEN
20265 inv_mwb_globals.g_only_subinventory_status := 1;
20266 ELSE
20267 inv_mwb_globals.g_only_subinventory_status := NULL;
20268 END IF;
20269
20270 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
20271 inv_mwb_globals.g_containerized := 1;
20272 ELSE
20273 inv_mwb_globals.g_containerized := 2;
20274 END IF;
20275
20276 IF inv_mwb_globals.g_view_by IN ('STATUS','SERIAL','LOT','ITEM') THEN --Bug 9752143 : Added STATUS
20277 inv_mwb_globals.g_containerized := NULL;
20278 END IF;
20279
20280 -- Onhand Material Status Support
20281 if (inv_mwb_globals.g_organization_id is not null) then
20282 if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
20283 l_default_status_id := inv_cache.org_rec.default_status_id;
20284 end if;
20285 elsif (inv_mwb_globals.g_tree_organization_id is not null) then
20286 if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
20287 l_default_status_id := inv_cache.org_rec.default_status_id;
20288 end if;
20289 end if;
20290
20291
20292 IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL
20293 AND inv_mwb_globals.g_tree_doc_type_id <> 1 THEN -- If add_item called from node_expanded of inbound lpn number.
20294
20295
20296 -- Exit out of the procedure if the item is not serial controlled
20297 IF (inv_mwb_globals.g_organization_id IS NOT NULL
20298 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
20299 AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
20300 OR inv_mwb_globals.g_inventory_item_id IS NOT NULL) THEN
20301 SELECT serial_number_control_code
20302 INTO serial_control
20303 FROM mtl_system_items
20304 WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
20305 inv_mwb_globals.g_organization_id)
20306 AND inventory_item_id = NVL(inv_mwb_globals.g_inventory_item_id,
20307 inv_mwb_globals.g_tree_item_id);
20308
20309 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Coming here after query : '|| serial_control );
20310 -- for bug 8420760
20311 IF (serial_control <> 2 and serial_control <>5) THEN
20312 RETURN;
20313 END IF;
20314 -- end of bug 8420760
20315 END IF;
20316
20317
20318 select_from_str :=
20319 ' SELECT DISTINCT rss.serial_num
20320 FROM rcv_shipment_lines rsl
20321 , mtl_supply ms
20322 , rcv_serials_supply rss';
20323
20324 where_str :=
20325 ' WHERE 1 = 1
20326 AND ms.supply_type_code <> ''RECEIVING''
20327 AND ms.shipment_header_id IS NOT NULL
20328 AND ms.shipment_line_id = rsl.shipment_line_id
20329 AND ms.to_organization_id = :to_org_id
20330 AND rsl.shipment_header_id = :shipment_header_id
20331 AND rsl.item_id = :item_id
20332 AND rss.shipment_line_id = ms.shipment_line_id ';
20333
20334 -- ER(9158529 client)
20335 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
20336 where_str := where_str || ' AND rsl.item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
20337 END IF;
20338 -- ER(9158529 client)
20339
20340 -- ER(9158529)
20341 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
20342 where_str := where_str || ' AND rsl.item_id in '
20343 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
20344 || ' where organization_id = :organization_id '
20345 || ' and category_set_id = :category_set_id '
20346 || ' and category_id = nvl(:category_id, category_id)) ' ;
20347 END IF;
20348 -- ER(9158529)
20349
20350 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
20351 where_str := where_str || ' AND rsl.asn_lpn_id = :lpn_from_id ';
20352 END IF;
20353
20354 IF inv_mwb_globals.g_lot_from IS NOT NULL
20355 AND inv_mwb_globals.g_lot_to IS NOT NULL
20356 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
20357 where_str := where_str || ' AND rss.lot_num = :lot_from ';
20358 END IF;
20359
20360 IF inv_mwb_globals.g_lot_from IS NOT NULL
20361 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
20362 where_str := where_str || ' AND rss.lot_num >= :lot_from ';
20363 END IF;
20364
20365 IF inv_mwb_globals.g_lot_to IS NOT NULL
20366 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
20367 -- Bug 11876533
20368 where_str := where_str || ' AND rss.lot_num <= :lot_to ';
20369 END IF;
20370
20371 /* Bug 8396954, Adding below code for checking supplier_lot_number condition */
20372 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
20373 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
20374 select_from_str := select_from_str || ', mtl_lot_numbers mln1 ';
20375
20376 where_str := where_str || ' AND rss.lot_num = mln1.lot_number';
20377
20378 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20379 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20380 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
20381 where_str := where_str || ' AND mln1.supplier_lot_number = :supplier_lot_from ';
20382 END IF;
20383
20384 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20385 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
20386 where_str := where_str || ' AND mln1.supplier_lot_number >= :supplier_lot_from ';
20387 END IF;
20388
20389 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20390 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
20391 where_str := where_str || ' AND mln1.supplier_lot_number <= :supplier_lot_to ';
20392 END IF;
20393 END IF;
20394 /* End of Bug 8396954 */
20395
20396 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
20397 where_str := where_str || ' AND rss.lot_num = :tree_lot_number ';
20398 END IF;
20399
20400 IF inv_mwb_globals.g_serial_from IS NOT NULL
20401 AND inv_mwb_globals.g_serial_to IS NOT NULL
20402 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
20403 where_str := where_str || ' AND rss.serial_num = :serial_from ';
20404 END IF;
20405
20406 IF inv_mwb_globals.g_serial_from IS NOT NULL
20407 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
20408 where_str := where_str || ' AND rss.serial_num >= :serial_from ';
20409 END IF;
20410
20411 IF inv_mwb_globals.g_serial_to IS NOT NULL
20412 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
20413 where_str := where_str || ' AND rss.serial_num <= :serial_to ';
20414 END IF;
20415
20416 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
20417 where_str := where_str || ' AND rsl.item_revision = :item_revision ';
20418 END IF;
20419
20420 where_str := where_str || ' ORDER BY rss.serial_num ';
20421
20422 query_str := select_from_str || where_str;
20423
20424 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
20425 inv_mwb_globals.g_last_query := query_str;
20426
20427 query_hdl := DBMS_SQL.open_cursor;
20428 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
20429
20430 DBMS_SQL.bind_variable(query_hdl, 'to_org_id', NVL(inv_mwb_globals.g_organization_id
20431 , inv_mwb_globals.g_tree_organization_id));
20432 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
20433 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
20434
20435 -- ER(9158529 client)
20436 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
20437 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
20438 END IF;
20439 -- ER(9158529 client)
20440
20441 -- ER(9158529)
20442 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
20443 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
20444 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
20445 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
20446 END IF;
20447 -- ER(9158529)
20448
20449 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
20450 DBMS_SQL.bind_variable(query_hdl, 'lpn_from_id', inv_mwb_globals.g_tree_parent_lpn_id);
20451 END IF;
20452
20453 IF inv_mwb_globals.g_lot_from IS NOT NULL
20454 AND inv_mwb_globals.g_lot_to IS NOT NULL
20455 AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
20456 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
20457 END IF;
20458
20459 IF inv_mwb_globals.g_lot_from IS NOT NULL
20460 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
20461 DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
20462 END IF;
20463
20464 IF inv_mwb_globals.g_lot_to IS NOT NULL
20465 AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
20466 DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
20467 END IF;
20468
20469 /* Bug 8396954 added below code for supplier_lot_number */
20470 IF inv_mwb_globals.g_supplier_lot_from IS NOT NULL
20471 OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL THEN
20472 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20473 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20474 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
20475 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
20476 END IF;
20477
20478 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20479 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
20480 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_from', inv_mwb_globals.g_supplier_lot_from);
20481 END IF;
20482
20483 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20484 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
20485 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_to', inv_mwb_globals.g_supplier_lot_to);
20486 END IF;
20487 END IF;
20488 /* End of Bug 8396954 */
20489
20490 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
20491 DBMS_SQL.bind_variable(query_hdl, 'tree_lot_number', inv_mwb_globals.g_tree_lot_number);
20492 END IF;
20493
20494 IF inv_mwb_globals.g_serial_from IS NOT NULL
20495 AND inv_mwb_globals.g_serial_to IS NOT NULL
20496 AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
20497 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
20498 END IF;
20499
20500 IF inv_mwb_globals.g_serial_from IS NOT NULL
20501 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
20502 DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
20503 END IF;
20504
20505 IF inv_mwb_globals.g_serial_to IS NOT NULL
20506 AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
20507 -- for bug 8420783
20508 -- for bug 8414727
20509 DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_to);
20510 -- end of bug 8414727
20511 -- end of bug 8420783
20512 END IF;
20513
20514 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
20515 DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_tree_rev);
20516 END IF;
20517
20518 BEGIN
20519 DBMS_SQL.define_column(query_hdl, 1, serial, 30);
20520 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
20521 EXCEPTION
20522 WHEN NO_DATA_FOUND THEN
20523 NULL;
20524 RETURN;
20525 WHEN OTHERS THEN
20526 RAISE;
20527 END;
20528
20529
20530 LOOP
20531 -- fetch a row
20532 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
20533 -- fetch columns from the row
20534 DBMS_SQL.column_value(query_hdl, 1, serial);
20535
20536 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
20537 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
20538 x_node_tbl(i).DEPTH := 1;
20539 x_node_tbl(i).label := serial;
20540 x_node_tbl(i).icon := 'inv_seri';
20541 x_node_tbl(i).VALUE := serial;
20542 x_node_tbl(i).TYPE := 'SERIAL';
20543 i := i + 1;
20544 END IF;
20545
20546 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
20547 j := j + 1;
20548 ELSE
20549 EXIT;
20550 END IF;
20551 END LOOP;
20552
20553
20554 DBMS_SQL.close_cursor(query_hdl); -- close cursor
20555 x_node_value := j;
20556 x_tbl_index := i;
20557
20558 RETURN;
20559 END IF;
20560
20561 -- NSRIVAST, INVCONV, Start
20562 IF (inv_mwb_globals.g_grade_from_code IS NOT NULL OR inv_mwb_globals.g_tree_grade_code IS NOT NULL OR inv_mwb_globals.g_grade_controlled <> 0) THEN
20563 is_grade_t := TRUE ;
20564 END IF ;
20565 -- NSRIVAST, INVCONV, End
20566
20567 -- Exit out of the procedure if the item is not serial controlled
20568 IF (inv_mwb_globals.g_organization_id IS NOT NULL
20569 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
20570 AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
20571 OR inv_mwb_globals.g_inventory_item_id IS NOT NULL) THEN
20572 SELECT serial_number_control_code
20573 INTO serial_control
20574 FROM mtl_system_items
20575 WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
20576 inv_mwb_globals.g_organization_id)
20577 AND inventory_item_id = NVL(inv_mwb_globals.g_inventory_item_id,
20578 inv_mwb_globals.g_tree_item_id);
20579
20580 IF serial_control IN(1, 6) THEN
20581 RETURN;
20582 END IF;
20583 END IF;
20584
20585 IF (inv_mwb_globals.g_lpn_from IS NULL
20586 AND inv_mwb_globals.g_lpn_to IS NULL
20587 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
20588 AND nvl(inv_mwb_globals.g_prepacked,1) = 1) THEN
20589 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
20590 table_required := ' mtl_rcv_serial_oh_v v ';
20591 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
20592 table_required := ' mtl_onhand_serial_mwb_v v ';
20593 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
20594 table_required := ' mtl_onhand_serial_v v '; -- NSRIVAST, INVCONV
20595 END IF; -- NSRIVAST, INVCONV
20596 ELSE
20597 table_required := ' mtl_onhand_serial_v v ';
20598 END IF;
20599
20600 --bug 6633612
20601 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
20602 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
20603 END IF;
20604 --bug 6633612
20605
20606 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
20607 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
20608 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
20609 query_str := query_str || 'SELECT v.serial_number serial_number from ' || table_required;
20610 query_str := query_str || ' WHERE 1=1 ';
20611 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
20612 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
20613 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
20614 query_str :=
20615 query_str
20616 || 'SELECT v.serial_number serial_number from'
20617 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
20618 || inv_mwb_globals.g_tree_serial_attr_query
20619 || ') msn, '
20620 || table_required;
20621 query_str := query_str || 'WHERE msn.serial_num = v.serial_number ';
20622 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
20623 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
20624 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
20625 query_str :=
20626 query_str
20627 || 'SELECT v.serial_number serial_number from'
20628 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
20629 || inv_mwb_globals.g_tree_lot_attr_query
20630 || ') mln, '
20631 || table_required;
20632 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
20633 --BUG 7556505
20634 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
20635 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
20636 END IF;
20637 --BUG 7556505
20638 /* Bug 8396954 added below code for supplier_lot_number */
20639 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20640 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20641 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
20642 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
20643 END IF;
20644
20645 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20646 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
20647 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
20648 END IF;
20649
20650 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20651 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
20652 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
20653 END IF;
20654 /* End of Bug 8396954 */
20655 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
20656 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
20657 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
20658 query_str :=
20659 query_str
20660 || 'SELECT v.serial_number serial_number from'
20661 || '(SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
20662 || inv_mwb_globals.g_tree_lot_attr_query
20663 || ') mln, '
20664 || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
20665 || inv_mwb_globals.g_tree_serial_attr_query
20666 || ') msn, '
20667 || table_required;
20668 query_str := query_str || 'WHERE mln.lot_num = v.lot_number ';
20669 --BUG 7556505
20670 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
20671 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
20672 END IF;
20673 --BUG 7556505
20674 /* Bug 8396954 added below code for supplier_lot_number */
20675 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20676 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20677 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
20678 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
20679 END IF;
20680
20681 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
20682 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
20683 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
20684 END IF;
20685
20686 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
20687 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
20688 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
20689 END IF;
20690 /* End of Bug 8396954 */
20691 query_str := query_str || 'AND msn.serial_num = v.serial_number ';
20692 END IF;
20693
20694 -- Onhand Material Status Support: If status is tracked at onhand level then check for status
20695 -- from serial table (MSN)
20696 if (l_default_status_id is not null) then -- Status at onhand level
20697
20698 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Came here 1' );
20699
20700 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
20701 query_str := query_str || 'AND v.serial_status_id = :st_id ';
20702 ELSE
20703 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
20704 query_str := query_str || 'AND v.serial_status_id = :st_id ';
20705 END IF;
20706 END IF;
20707 else
20708 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
20709 query_str := query_str || 'AND v.serial_status_id = :st_id ';
20710 ELSE
20711 IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 606233
20712 query_str := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
20713 query_str := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
20714 END IF;
20715 END IF;
20716 end if;
20717
20718 /*
20719 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
20720 IF inv_mwb_globals.g_only_serial_status = 1 THEN
20721 query_str := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
20722 query_str := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
20723 ELSE
20724 query_str := query_str || 'AND serial_status_id = :st_id ';
20725 END IF;
20726 END IF;
20727 */
20728
20729 IF inv_mwb_globals.g_lot_controlled = 1 THEN
20730 query_str := query_str || 'AND v.lot_number IS NULL ';
20731 ELSIF inv_mwb_globals.g_lot_controlled = 2 THEN
20732 query_str := query_str || 'AND v.lot_number IS NOT NULL ';
20733 END IF;
20734
20735 --bug 6633612
20736 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
20737 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
20738 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
20739 || ' AND rt.organization_id = mmt.organization_id '
20740 || ' AND rt.transaction_type = ''DELIVER'''
20741 || ' AND rt.destination_type_code = ''INVENTORY'''
20742 || ' AND mmt.transaction_id = v.last_transaction_id '
20743 || ' AND mmt.organization_id = v.organization_id ';
20744
20745 END IF;
20746 --bug 6633612
20747
20748 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
20749 query_str := query_str || 'AND v.lot_number = :lot_n ';
20750 END IF;
20751
20752 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
20753 query_str := query_str || 'AND v.lot_number >= :lot_f ';
20754 END IF;
20755
20756 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
20757 query_str := query_str || 'AND v.lot_number <= :lot_t ';
20758 END IF;
20759
20760 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
20761 query_str := query_str || 'AND v.cost_group_id = :cg_id ';
20762 END IF;
20763
20764 -- NSRIVAST, INVCONV, Start
20765 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
20766 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
20767 END IF ;
20768 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
20769 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
20770 END IF ;
20771 -- NSRIVAST, INVCONV, End
20772
20773 IF inv_mwb_globals.g_revision_controlled = 1 THEN
20774 query_str := query_str || 'AND v.revision IS NULL ';
20775 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
20776 query_str := query_str || 'AND v.revision IS NOT NULL ';
20777 END IF;
20778
20779 IF inv_mwb_globals.g_revision IS NOT NULL
20780 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
20781 query_str := query_str || 'AND v.revision = :rev ';
20782 END IF;
20783
20784 IF inv_mwb_globals.g_containerized = 1 THEN
20785 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
20786 ELSIF inv_mwb_globals.g_containerized = 2 THEN
20787 query_str := query_str || 'AND v.containerized_flag = 1 ';
20788 END IF;
20789
20790 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
20791 query_str := query_str || 'AND v.serial_number >= :serial_f ';
20792 END IF;
20793
20794 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
20795 query_str := query_str || 'AND v.serial_number <= :serial_t ';
20796 END IF;
20797
20798 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
20799 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
20800 query_str := query_str || 'AND v.inventory_item_id = :item_id ';
20801 END IF;
20802
20803 -- ER(9158529 client)
20804 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
20805 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
20806 END IF;
20807 -- ER(9158529 client)
20808
20809 -- ER(9158529)
20810 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
20811 query_str := query_str || ' AND v.inventory_item_id in '
20812 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
20813 || ' where organization_id = :organization_id '
20814 || ' and category_set_id = :category_set_id '
20815 || ' and category_id = nvl(:category_id, category_id)) ' ;
20816 END IF;
20817 -- ER(9158529)
20818
20819 IF inv_mwb_globals.g_locator_controlled = 1 THEN
20820 query_str := query_str || 'AND v.locator_id IS NULL ';
20821 /* part of bug fix 2424304 */
20822 -- ELSE
20823 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
20824 /* end of bug fix 2424304 */
20825 query_str := query_str || 'AND v.locator_id IS NOT NULL ';
20826 END IF;
20827
20828 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
20829 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
20830 query_str := query_str || 'AND v.locator_id = :loc_id ';
20831 END IF;
20832
20833 --ER(3338592) Changes
20834 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
20835 query_str := query_str || ' AND v.item_description LIKE :item_description ';
20836 END IF;
20837 --ER(3338592) Changes
20838
20839 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
20840 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
20841 query_str := query_str || 'AND v.subinventory_code = :sub ';
20842 END IF;
20843
20844 IF inv_mwb_globals.g_organization_id IS NOT NULL
20845 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
20846 query_str := query_str || 'AND v.organization_id = :org_id ';
20847 END IF;
20848
20849 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
20850 query_str := query_str || ' AND v.project_id = :pr_id ';
20851 END IF;
20852
20853 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
20854 query_str := query_str || ' AND v.task_id = :ta_id ';
20855 END IF;
20856
20857 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
20858 query_str := query_str || ' AND v.unit_number=:un_id ';
20859 END IF;
20860
20861 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
20862 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
20863 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
20864 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
20865 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
20866 query_str := query_str || ' AND planning_organization_id in ';
20867 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
20868 query_str := query_str || ' where vendor_id = :vendor_id )';
20869 END IF;*/
20870
20871 /* RS IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
20872 query_str := query_str || ' AND owning_organization_id = :own_org ';
20873 query_str := query_str || ' AND owning_tp_type = 2 ';
20874 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
20875 query_str := query_str || ' AND owning_organization_id = :own_org ';
20876 query_str := query_str || ' AND owning_tp_type = 1 ';
20877 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
20878 query_str := query_str || ' AND owning_tp_type = 1 ';
20879 END IF;
20880
20881 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
20882 query_str := query_str || ' AND planning_organization_id = :plan_org ';
20883 query_str := query_str || ' AND planning_tp_type = 2 ';
20884 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
20885 query_str := query_str || ' AND planning_organization_id = :plan_org ';
20886 query_str := query_str || ' AND planning_tp_type = 1 ';
20887 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
20888 query_str := query_str || ' AND planning_tp_type = 1 ';
20889 END IF;
20890 */
20891
20892 IF inv_mwb_globals.g_owning_qry_mode = 2 THEN
20893 query_str := query_str || ' AND v.owning_tp_type = 1 ';
20894 ELSIF inv_mwb_globals.g_owning_qry_mode = 3 THEN
20895 query_str := query_str || ' AND v.owning_tp_type = 1 ';
20896 IF inv_mwb_globals.g_owning_org IS NOT NULL THEN
20897 query_str := query_str || ' AND v.owning_organization_id = :own_org';
20898 END IF;
20899 END IF;
20900
20901 IF inv_mwb_globals.g_planning_query_mode = 2 THEN
20902 query_str := query_str || ' AND v.planning_tp_type = 1 ';
20903 ELSIF inv_mwb_globals.g_planning_query_mode = 3 THEN
20904 query_str := query_str || ' AND v.planning_tp_type = 1 ';
20905 IF inv_mwb_globals.g_planning_org IS NOT NULL THEN
20906 query_str := query_str || ' AND v.planning_organization_id = :plan_org';
20907 END IF;
20908 END IF;
20909
20910
20911 query_str := query_str || ' AND v.serial_number is NOT NULL ';
20912 query_str := query_str || 'GROUP BY serial_number ';
20913 query_str := query_str || 'ORDER BY serial_number ';
20914 ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
20915 OR inv_mwb_globals.g_lpn_to IS NOT NULL
20916 OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
20917 OR inv_mwb_globals.g_prepacked <> 1) THEN
20918 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
20919 table_required := ' mtl_onhand_lpn_mwb_v mol ';
20920 ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
20921 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
20922 table_required := ' mtl_onhand_lpn_mwb_v mol ';
20923 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
20924 table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
20925 END IF; -- NSRIVAST, INVCONV
20926 ELSE
20927 table_required := ' mtl_onhand_new_lpn_mwb_v mol ';
20928 END IF;
20929 ELSE
20930 IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
20931 table_required := ' mtl_onhand_lpn_v mol ';
20932 IF is_grade_t = TRUE THEN -- NSRIVAST, INVCONV
20933 table_required := ' mtl_onhand_new_lpn_v '; -- NSRIVAST, INVCONV
20934 END IF; -- NSRIVAST, INVCONV
20935 ELSE
20936 table_required := ' mtl_onhand_new_lpn_v mol ';
20937 END IF;
20938 END IF;
20939
20940 query_str := 'SELECT serial_number ';
20941 query_str := query_str || 'FROM ' || table_required;
20942
20943 IF (inv_mwb_globals.g_lpn_from IS NOT NULL
20944 OR inv_mwb_globals.g_lpn_to IS NOT NULL)
20945 AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
20946 query_str := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
20947 query_str := query_str || ' WHERE 1=1 ';
20948
20949 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
20950 query_str := query_str || ' AND lpn_context = 3 ';
20951 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
20952 query_str := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 or lpn_context=8 )';--12984304
20953 ELSIF nvl(inv_mwb_globals.g_prepacked,1) = 1 THEN
20954 query_str := query_str || 'AND lpn_context = 1 ';
20955 ELSIF inv_mwb_globals.g_prepacked <> 1
20956 AND inv_mwb_globals.g_prepacked <> 999
20957 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
20958 query_str := query_str || 'AND lpn_context = :prepacked ';
20959 END IF;
20960
20961 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
20962 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
20963 query_str := query_str || 'AND wlpn.locator_id = :loc_id ';
20964 END IF;
20965
20966 -- NSRIVAST, INVCONV, Start
20967 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
20968 query_str := query_str || ' AND grade_code = :grade_f ' ;
20969 END IF ;
20970 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
20971 query_str := query_str || ' AND grade_code = :grade_c ' ;
20972 END IF ;
20973 -- NSRIVAST, INVCONV, End
20974
20975 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
20976 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
20977 query_str := query_str || 'AND wlpn.subinventory_code = :sub ';
20978 END IF;
20979
20980 IF inv_mwb_globals.g_organization_id IS NOT NULL
20981 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
20982 query_str := query_str || 'AND wlpn.organization_id = :org_id ';
20983 END IF;
20984
20985 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
20986 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
20987 query_str := query_str || ' and license_plate_number = :lpn_f ';
20988 ELSE
20989 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
20990 query_str := query_str || ' and license_plate_number >= :lpn_f ';
20991 END IF;
20992 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
20993 query_str := query_str || ' and license_plate_number <= :lpn_t ';
20994 END IF;
20995 END IF;
20996 END IF;
20997
20998 query_str := query_str || 'group by wlpn.outermost_lpn_id) X ';
20999 END IF;
21000
21001 IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
21002 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
21003 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
21004 query_str := query_str || 'WHERE 1=1 ';
21005 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL
21006 AND inv_mwb_globals.g_supplier_lot_from IS NULL AND inv_mwb_globals.g_supplier_lot_to IS NULL)
21007 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
21008 query_str :=
21009 query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
21010 || ') msn ';
21011 query_str := query_str || 'WHERE msn.serial_num = serial_number ';
21012 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
21013 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
21014 AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
21015 query_str := query_str || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
21016 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
21017 --BUG 7556505
21018 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
21019 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
21020 END IF;
21021 --BUG 7556505
21022 /* Bug 8396954 added below code for supplier_lot_number */
21023 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
21024 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
21025 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
21026 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
21027 END IF;
21028
21029 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
21030 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
21031 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
21032 END IF;
21033
21034 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
21035 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
21036 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
21037 END IF;
21038 /* End of Bug 8396954 */
21039 ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL
21040 OR inv_mwb_globals.g_supplier_lot_from IS NOT NULL OR inv_mwb_globals.g_supplier_lot_to IS NOT NULL)
21041 AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
21042 query_str :=
21043 query_str
21044 || ', (SELECT lot_number lot_num, parent_lot_number, supplier_lot_number FROM mtl_lot_numbers WHERE 1=1 '
21045 || inv_mwb_globals.g_tree_lot_attr_query
21046 || ') mln '
21047 || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
21048 || inv_mwb_globals.g_tree_serial_attr_query
21049 || ') msn ';
21050 query_str := query_str || 'WHERE mln.lot_num = lot_number ';
21051 --BUG 7556505
21052 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
21053 query_str := query_str || ' AND mln.parent_lot_number = :parent_lot ';
21054 END IF;
21055 --BUG 7556505
21056 /* Bug 8396954 added below code for supplier_lot_number */
21057 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
21058 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
21059 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
21060 query_str := query_str || ' AND mln.supplier_lot_number = :supplier_lot_f ';
21061 END IF;
21062
21063 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
21064 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
21065 query_str := query_str || ' AND mln.supplier_lot_number >= :supplier_lot_f ';
21066 END IF;
21067
21068 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
21069 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
21070 query_str := query_str || ' AND mln.supplier_lot_number <= :supplier_lot_t ';
21071 END IF;
21072 /* End of Bug 8396954 */
21073 query_str := query_str || 'AND msn.serial_num = serial_number ';
21074 END IF;
21075
21076 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
21077 query_str := query_str || 'AND serial_status_id = :st_id ';
21078 query_str := query_str || ' AND mol.lpn_id = x.outermost_lpn_id ';
21079 ELSE
21080 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
21081 query_str := query_str || 'AND serial_status_id = :st_id ';
21082 query_str := query_str || ' AND mol.lpn_id = x.outermost_lpn_id ';
21083 END IF;
21084 END IF;
21085 /*
21086 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
21087 IF inv_mwb_globals.g_only_serial_status = 1 THEN
21088 query_str := query_str || ' AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
21089 query_str := query_str || ' lot_status_id = :st_id or serial_status_id = :st_id) ';
21090 ELSE
21091 query_str := query_str || 'AND serial_status_id = :st_id ';
21092 END IF;
21093 END IF;
21094 -- */
21095
21096 IF inv_mwb_globals.g_lot_controlled = 1 THEN
21097 query_str := query_str || 'AND lot_number IS NULL ';
21098 ELSIF inv_mwb_globals.g_lot_controlled = 2 THEN
21099 query_str := query_str || 'AND lot_number IS NOT NULL ';
21100 END IF;
21101
21102 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
21103 query_str := query_str || 'AND lot_number = :lot_n ';
21104 END IF;
21105
21106 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
21107 query_str := query_str || 'AND lot_number >= :lot_f ';
21108 END IF;
21109
21110 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
21111 query_str := query_str || 'AND lot_number <= :lot_t ';
21112 END IF;
21113
21114 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
21115 query_str := query_str || 'AND cost_group_id = :cg_id ';
21116 END IF;
21117
21118 IF inv_mwb_globals.g_revision_controlled = 1 THEN
21119 query_str := query_str || 'AND revision IS NULL ';
21120 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
21121 query_str := query_str || 'AND revision IS NOT NULL ';
21122 END IF;
21123
21124 IF inv_mwb_globals.g_revision IS NOT NULL
21125 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
21126 query_str := query_str || 'AND revision = :rev ';
21127 END IF;
21128
21129 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
21130 query_str := query_str || 'AND serial_number >= :serial_f ';
21131 END IF;
21132
21133 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
21134 query_str := query_str || 'AND serial_number <= :serial_t ';
21135 END IF;
21136
21137 IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
21138 query_str := query_str || ' AND lpn_context = 3 ';
21139 ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
21140 query_str := query_str || ' AND (lpn_context = 1 or lpn_context = 9 or lpn_context = 11 or lpn_context = 8) '; --12984304
21141 ELSIF inv_mwb_globals.g_prepacked = 1 THEN
21142 query_str := query_str || 'AND lpn_context = 1 ';
21143 ELSIF inv_mwb_globals.g_prepacked <> 1
21144 AND inv_mwb_globals.g_prepacked <> 999
21145 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
21146 query_str := query_str || 'AND lpn_context = :prepacked ';
21147 END IF;
21148
21149 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
21150 query_str := query_str || 'AND MOL.lpn_id = :plpn_id ';
21151 END IF;
21152
21153 /* IF inv_mwb_globals.g_lpn_from IS NOT NULL
21154 OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
21155 query_str := query_str || ' AND mol.outermost_lpn_id = x.outermost_lpn_id ';
21156 END IF;
21157 */
21158
21159 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
21160 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
21161 query_str := query_str || 'AND inventory_item_id = :item_id ';
21162 END IF;
21163
21164 -- ER(9158529 client)
21165 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
21166 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
21167 END IF;
21168 -- ER(9158529 client)
21169
21170 -- ER(9158529)
21171 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
21172 query_str := query_str || ' AND inventory_item_id in '
21173 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
21174 || ' where organization_id = :organization_id '
21175 || ' and category_set_id = :category_set_id '
21176 || ' and category_id = nvl(:category_id, category_id)) ' ;
21177 END IF;
21178 -- ER(9158529)
21179
21180 IF inv_mwb_globals.g_locator_controlled = 1 THEN
21181 query_str := query_str || 'AND locator_id IS NULL ';
21182 ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
21183 query_str := query_str || 'AND locator_id IS NOT NULL ';
21184 END IF;
21185
21186 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
21187 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
21188 query_str := query_str || 'AND locator_id = :loc_id ';
21189 END IF;
21190
21191 --ER(3338592) Changes
21192 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
21193 query_str := query_str || ' AND item_description LIKE :item_description ';
21194 END IF;
21195 --ER(3338592) Changes
21196
21197 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
21198 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
21199 query_str := query_str || 'AND subinventory_code = :sub ';
21200 END IF;
21201
21202 IF inv_mwb_globals.g_organization_id IS NOT NULL
21203 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
21204 query_str := query_str || 'AND organization_id = :org_id ';
21205 END IF;
21206
21207 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
21208 query_str := query_str || ' AND project_id = :pr_id ';
21209 END IF;
21210
21211 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
21212 query_str := query_str || ' AND task_id = :ta_id ';
21213 END IF;
21214
21215 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
21216 query_str := query_str || ' AND unit_number=:un_id ';
21217 END IF;
21218
21219 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
21220 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
21221 query_str := query_str || ' AND planning_organization_id = :site_id ' ;
21222 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
21223 query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
21224 query_str := query_str || ' AND planning_organization_id in ';
21225 query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
21226 query_str := query_str || ' where vendor_id = :vendor_id )';
21227 END IF;*/
21228 /* IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
21229 query_str := query_str || ' AND owning_organization_id = :own_org ';
21230 query_str := query_str || ' AND owning_tp_type = 2 ';
21231 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
21232 query_str := query_str || ' AND owning_organization_id = :own_org ';
21233 query_str := query_str || ' AND owning_tp_type = 1 ';
21234 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
21235 query_str := query_str || ' AND owning_tp_type = 1 ';
21236 END IF;
21237
21238 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
21239 query_str := query_str || ' AND planning_organization_id = :plan_org ';
21240 query_str := query_str || ' AND planning_tp_type = 2 ';
21241 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
21242 query_str := query_str || ' AND planning_organization_id = :plan_org ';
21243 query_str := query_str || ' AND planning_tp_type = 1 ';
21244 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
21245 query_str := query_str || ' AND planning_tp_type = 1 ';
21246 END IF;
21247 */
21248 IF inv_mwb_globals.g_owning_qry_mode = 2 THEN
21249 query_str := query_str || ' AND owning_tp_type = 1 ';
21250 ELSIF inv_mwb_globals.g_owning_qry_mode = 3 THEN
21251 query_str := query_str || ' AND owning_tp_type = 1 ';
21252 IF inv_mwb_globals.g_owning_org IS NOT NULL THEN
21253 query_str := query_str || ' AND owning_organization_id = :own_org';
21254 END IF;
21255 END IF;
21256
21257 IF inv_mwb_globals.g_planning_query_mode = 2 THEN
21258 query_str := query_str || ' AND planning_tp_type = 1 ';
21259 ELSIF inv_mwb_globals.g_planning_query_mode = 3 THEN
21260 query_str := query_str || ' AND planning_tp_type = 1 ';
21261 IF inv_mwb_globals.g_planning_org IS NOT NULL THEN
21262 query_str := query_str || ' AND planning_organization_id = :plan_org';
21263 END IF;
21264 END IF;
21265
21266 query_str := query_str || 'GROUP BY serial_number ';
21267 query_str := query_str || 'ORDER BY serial_number ';
21268 END IF;
21269
21270 inv_trx_util_pub.trace(query_str, 'Add Serails :- Material Workbench', 9);
21271 --trace1(query_str, 'add_serials', 9);
21272
21273 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
21274
21275 inv_mwb_globals.g_last_query := query_str;
21276 query_hdl := DBMS_SQL.open_cursor;
21277 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
21278
21279
21280 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
21281 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
21282 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
21283 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
21284 END IF;
21285
21286 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
21287 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
21288 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
21289 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
21290 END IF;
21291
21292 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
21293 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
21294 ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
21295 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
21296 END IF;
21297
21298 IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
21299 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
21300 ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
21301 DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
21302 END IF;
21303
21304 -- ER(9158529 client)
21305 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
21306 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
21307 END IF;
21308 -- ER(9158529 client)
21309
21310 -- ER(9158529)
21311 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
21312 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
21313 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
21314 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
21315 END IF;
21316 -- ER(9158529)
21317
21318 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
21319 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_tree_rev);
21320 ELSIF inv_mwb_globals.g_revision IS NOT NULL THEN
21321 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
21322 END IF;
21323
21324 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
21325 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
21326 END IF;
21327
21328 --BUG 7556505
21329 IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
21330 DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
21331 END IF;
21332 --BUG 7556505
21333
21334 IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
21335 DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
21336 END IF;
21337
21338 IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
21339 DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
21340 END IF;
21341
21342 /* Bug 8396954 added below code for supplier_lot_number */
21343 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
21344 inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
21345 inv_mwb_globals.g_supplier_lot_from = inv_mwb_globals.g_supplier_lot_to) THEN
21346 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
21347 END IF;
21348
21349 IF (inv_mwb_globals.g_supplier_lot_from IS NOT NULL AND
21350 inv_mwb_globals.g_supplier_lot_from <> NVL(inv_mwb_globals.g_supplier_lot_to, -1) ) THEN
21351 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_f', inv_mwb_globals.g_supplier_lot_from);
21352 END IF;
21353
21354 IF (inv_mwb_globals.g_supplier_lot_to IS NOT NULL AND
21355 inv_mwb_globals.g_supplier_lot_to <> NVL(inv_mwb_globals.g_supplier_lot_from, -1) ) THEN
21356 DBMS_SQL.bind_variable(query_hdl, 'supplier_lot_t', inv_mwb_globals.g_supplier_lot_to);
21357 END IF;
21358 /* End of Bug 8396954 */
21359
21360 IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
21361 DBMS_SQL.bind_variable(query_hdl, 'lot_n', inv_mwb_globals.g_tree_lot_number);
21362 END IF;
21363
21364 --bug 6633612
21365 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
21366 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
21367 END IF;
21368 --bug 6633612
21369
21370 -- NSRIVAST, INVCONV, Start
21371 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
21372 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
21373 END IF;
21374 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
21375 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
21376 END IF;
21377 -- NSRIVAST, INVCONV, End
21378
21379 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
21380 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
21381 END IF;
21382
21383 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
21384 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
21385 END IF;
21386
21387 IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
21388 IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
21389 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
21390 ELSE
21391 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
21392 dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
21393 END IF;
21394 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
21395 dbms_sql.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
21396 END IF;
21397 END IF;
21398 END IF;
21399
21400 IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
21401 DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
21402 END IF;
21403
21404 IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
21405 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
21406 ELSE
21407 IF inv_mwb_globals.g_status_id IS NOT NULL THEN
21408 DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
21409 END IF;
21410 END IF;
21411
21412 IF inv_mwb_globals.g_prepacked <> 1
21413 AND inv_mwb_globals.g_prepacked <> 999
21414 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
21415 DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
21416 END IF;
21417
21418 IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
21419 DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
21420 END IF;
21421
21422 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
21423 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
21424 END IF;
21425
21426 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
21427 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
21428 END IF;
21429
21430 IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
21431 DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
21432 END IF;
21433
21434 /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
21435 dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
21436 ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
21437 dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
21438 END IF;*/
21439 /* IF (inv_mwb_globals.g_owning_qry_mode = 4)
21440 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
21441 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
21442 END IF;
21443
21444 IF (inv_mwb_globals.g_planning_query_mode = 4)
21445 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
21446 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
21447 END IF;
21448 */
21449
21450 IF inv_mwb_globals.g_owning_qry_mode = 3
21451 AND inv_mwb_globals.g_owning_org IS NOT NULL THEN
21452 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
21453 END IF;
21454
21455 IF inv_mwb_globals.g_planning_query_mode = 3
21456 AND inv_mwb_globals.g_planning_org IS NOT NULL THEN
21457 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
21458 END IF;
21459
21460 --ER(3338592) Changes
21461 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
21462 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
21463 END IF;
21464
21465 DBMS_SQL.define_column(query_hdl, 1, serial, 30);
21466 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
21467
21468 LOOP
21469 -- fetch a row
21470 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
21471 -- fetch columns from the row
21472 DBMS_SQL.column_value(query_hdl, 1, serial);
21473
21474 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
21475 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
21476 x_node_tbl(i).DEPTH := 1;
21477 x_node_tbl(i).label := serial;
21478 x_node_tbl(i).icon := 'inv_seri';
21479 x_node_tbl(i).VALUE := serial;
21480 x_node_tbl(i).TYPE := 'SERIAL';
21481 i := i + 1;
21482 END IF;
21483
21484 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
21485 j := j + 1;
21486 ELSE
21487 EXIT;
21488 END IF;
21489 END LOOP;
21490
21491 DBMS_SQL.close_cursor(query_hdl); -- close cursor
21492 x_node_value := j;
21493 x_tbl_index := i;
21494 EXCEPTION
21495 WHEN NO_DATA_FOUND THEN
21496 NULL;
21497 WHEN OTHERS THEN
21498 RAISE;
21499 END add_serials;
21500
21501
21502 -- NSRIVAST, INVCONV, Start
21503 -- Procedure to give grade nodes for view by Grade
21504 PROCEDURE add_grades (
21505 x_node_value IN OUT NOCOPY NUMBER
21506 , x_node_tbl IN OUT NOCOPY fnd_apptree.node_tbl_type
21507 , x_tbl_index IN OUT NOCOPY NUMBER
21508 ) IS
21509
21510 query_str VARCHAR2(10000);
21511 query_hdl NUMBER;
21512 rows_processed NUMBER;
21513 org_id mtl_onhand_quantities.organization_id%TYPE;
21514 org_code mtl_parameters.organization_code%TYPE;
21515 i NUMBER := x_tbl_index;
21516 j NUMBER := x_node_value;
21517 grade_control mtl_system_items.GRADE_CONTROL_FLAG%TYPE ;
21518 table_required VARCHAR2(300);
21519 --ER(3338592) Changes
21520 group_str VARCHAR2(10000) ;
21521 having_str VARCHAR2(10000) := ' HAVING 1=1 ';
21522 --End of ER Changes
21523
21524 grade mtl_grades.grade_code%TYPE ;
21525
21526 l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_GRADES';
21527 BEGIN
21528 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
21529
21530
21531 -- Exit out of the procedure if the item is not grade controlled
21532 IF (inv_mwb_globals.g_organization_id IS NOT NULL
21533 OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
21534 AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
21535 OR inv_mwb_globals.g_inventory_item_id IS NOT NULL) THEN
21536
21537 SELECT DISTINCT grade_control_flag
21538 INTO grade_control
21539 FROM mtl_system_items
21540 WHERE inventory_item_id = NVL(inv_mwb_globals.g_tree_item_id,
21541 inv_mwb_globals.g_inventory_item_id)
21542 AND organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
21543 inv_mwb_globals.g_organization_id);
21544
21545 IF ( grade_control IN ('N','n') ) THEN
21546 RETURN;
21547 END IF;
21548 END IF;
21549
21550 -- query_str := query_str || ' SELECT grade_code from mtl_grades ';
21551 -- query_str := query_str || ' WHERE 1=1 ';
21552
21553 -- Check the parameters on Find window, and build the query accordingly
21554 IF inv_mwb_globals.g_serial_from IS NULL
21555 AND inv_mwb_globals.g_serial_to IS NULL
21556 AND inv_mwb_globals.g_tree_serial_number IS NULL
21557 AND inv_mwb_globals.g_lpn_from IS NULL
21558 AND inv_mwb_globals.g_lpn_to IS NULL THEN
21559
21560 table_required := ' MTL_ONHAND_TOTAL_V v ' ;
21561
21562 --bug 6633612
21563 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
21564 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
21565 END IF;
21566 --bug 6633612
21567
21568 query_str := query_str || ' SELECT v.grade_code grade_code from ' || table_required;
21569 query_str := query_str || ' WHERE 1=1 ';
21570
21571 IF inv_mwb_globals.g_tree_item_id IS NOT NULL
21572 OR inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
21573 query_str := query_str || ' AND v.inventory_item_id = :item_id ';
21574 END IF;
21575
21576 -- ER(9158529 client)
21577 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
21578 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
21579 END IF;
21580 -- ER(9158529 client)
21581
21582 -- ER(9158529)
21583 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
21584 query_str := query_str || ' AND v.inventory_item_id in '
21585 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
21586 || ' where organization_id = :organization_id '
21587 || ' and category_set_id = :category_set_id '
21588 || ' and category_id = nvl(:category_id, category_id)) ' ;
21589 END IF;
21590 -- ER(9158529)
21591
21592 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
21593 query_str := query_str || ' AND v.project_id = :pr_id ';
21594 END IF;
21595 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
21596 query_str := query_str || ' AND v.task_id = :ta_id ';
21597 END IF;
21598
21599 --bug 6633612
21600 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
21601 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
21602 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
21603 || ' AND rt.organization_id = mmt.organization_id '
21604 || ' AND rt.transaction_type = ''DELIVER'''
21605 || ' AND rt.destination_type_code = ''INVENTORY'''
21606 || ' AND mmt.transaction_id = v.create_transaction_id '
21607 || ' AND mmt.organization_id = v.organization_id ';
21608
21609 END IF;
21610 --bug 6633612
21611
21612 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
21613 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
21614 query_str := query_str || ' AND v.owning_tp_type = 2 ';
21615 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
21616 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
21617 query_str := query_str || ' AND v.owning_tp_type = 1 ';
21618 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
21619 query_str := query_str || ' AND v.owning_tp_type = 1 ';
21620 END IF;
21621 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
21622 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
21623 query_str := query_str || ' AND v.planning_tp_type = 2 ';
21624 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
21625 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
21626 query_str := query_str || ' AND v.planning_tp_type = 1 ';
21627 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
21628 query_str := query_str || ' AND v.planning_tp_type = 1 ';
21629 END IF;
21630 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
21631 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
21632 END IF;
21633 IF inv_mwb_globals.g_revision_controlled = 1 THEN
21634 query_str := query_str || ' AND v.revision IS NULL ';
21635 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
21636 query_str := query_str || ' AND v.revision IS NOT NULL ';
21637 END IF;
21638
21639 IF inv_mwb_globals.g_revision IS NOT NULL
21640 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
21641 query_str := query_str || ' AND v.revision = :rev ';
21642 END IF;
21643
21644 IF inv_mwb_globals.g_containerized = 1 THEN
21645 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
21646 ELSIF inv_mwb_globals.g_containerized = 2 THEN
21647 query_str := query_str || ' AND v.containerized_flag = 1 ';
21648 END IF;
21649 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
21650 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
21651 query_str := query_str || ' AND v.locator_id = :loc_id ';
21652 END IF;
21653 --ER(3338592) Changes
21654 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
21655 query_str := query_str || ' AND v.item_description LIKE :item_description ';
21656 END IF;
21657 --ER(3338592) Changes
21658 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
21659 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
21660 query_str := query_str || ' AND v.subinventory_code = :sub ';
21661 END IF;
21662 IF inv_mwb_globals.g_serial_controlled = 1 THEN
21663 query_str := query_str || ' AND v.item_serial_control in (1,6) ';
21664 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
21665 query_str := query_str || ' AND v.item_serial_control in (2,5) ';
21666 END IF;
21667
21668 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
21669 query_str := query_str || ' and v.grade_code = :grade_f ' ;
21670 END IF ;
21671
21672 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
21673 query_str := query_str || ' and grade_code = :grade_c ' ;
21674 END IF ;
21675
21676 query_str := query_str || ' AND v.grade_code is not null ';
21677
21678 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL
21679 OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
21680 query_str := query_str || ' AND v.organization_id = :org_id ';
21681 ELSE
21682 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
21683 query_str := query_str || ' FROM org_access_view oav ' ;
21684 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
21685 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
21686 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
21687 END IF;
21688
21689 query_str := query_str || ' GROUP BY grade_code ';
21690 -- query_str := query_str || ' ) ' ; -- new
21691
21692 ELSIF ((inv_mwb_globals.g_serial_from IS NOT NULL OR inv_mwb_globals.g_serial_to IS NOT NULL
21693 OR inv_mwb_globals.g_tree_serial_number IS NOT NULL ) AND ( inv_mwb_globals.g_lpn_from IS NULL AND inv_mwb_globals.g_lpn_to IS NULL )) THEN
21694
21695 table_required := ' MTL_ONHAND_SERIAL_V v ' ;
21696
21697 --bug 6633612
21698 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
21699 table_required := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
21700 END IF;
21701 --bug 6633612
21702
21703 query_str := query_str || ' SELECT v.grade_code grade_code from ' || table_required;
21704 query_str := query_str || ' WHERE 1=1 ';
21705
21706 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
21707 query_str := query_str || ' AND (v.serial_number = :serial_n) ';
21708 END IF;
21709 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
21710 query_str := query_str || ' AND v.serial_number >= :serial_f ';
21711 END IF;
21712 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
21713 query_str := query_str || ' AND v.serial_number <= :serial_t ';
21714 END IF;
21715 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
21716 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
21717 query_str := query_str || ' AND v.inventory_item_id = :item_id ';
21718 END IF;
21719
21720 -- ER(9158529 client)
21721 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
21722 query_str := query_str || ' AND v.inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
21723 END IF;
21724 -- ER(9158529 client)
21725
21726 -- ER(9158529)
21727 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
21728 query_str := query_str || ' AND v.inventory_item_id in '
21729 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
21730 || ' where organization_id = :organization_id '
21731 || ' and category_set_id = :category_set_id '
21732 || ' and category_id = nvl(:category_id, category_id)) ' ;
21733 END IF;
21734 -- ER(9158529)
21735
21736 --bug 6633612
21737 IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
21738 query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
21739 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
21740 || ' AND rt.organization_id = mmt.organization_id '
21741 || ' AND rt.transaction_type = ''DELIVER'''
21742 || ' AND rt.destination_type_code = ''INVENTORY'''
21743 || ' AND mmt.transaction_id = v.last_transaction_id '
21744 || ' AND mmt.organization_id = v.organization_id ';
21745
21746 END IF;
21747 --bug 6633612
21748
21749 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
21750 query_str := query_str || ' AND v.project_id = :pr_id ';
21751 END IF;
21752 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
21753 query_str := query_str || ' AND v.task_id = :ta_id ';
21754 END IF;
21755 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
21756 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
21757 query_str := query_str || ' AND v.owning_tp_type = 2 ';
21758 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
21759 query_str := query_str || ' AND v.owning_organization_id = :own_org ';
21760 query_str := query_str || ' AND v.owning_tp_type = 1 ';
21761 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
21762 query_str := query_str || ' AND v.owning_tp_type = 1 ';
21763 END IF;
21764 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
21765 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
21766 query_str := query_str || ' AND v.planning_tp_type = 2 ';
21767 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
21768 query_str := query_str || ' AND v.planning_organization_id = :plan_org ';
21769 query_str := query_str || ' AND v.planning_tp_type = 1 ';
21770 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
21771 query_str := query_str || ' AND v.planning_tp_type = 1 ';
21772 END IF;
21773 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
21774 query_str := query_str || ' AND v.cost_group_id = :cg_id ';
21775 END IF;
21776 IF inv_mwb_globals.g_revision_controlled = 1 THEN
21777 query_str := query_str || ' AND v.revision IS NULL ';
21778 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
21779 query_str := query_str || ' AND v.revision IS NOT NULL ';
21780 END IF;
21781
21782 IF inv_mwb_globals.g_revision IS NOT NULL
21783 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
21784 query_str := query_str || ' AND v.revision = :rev ';
21785 END IF;
21786 IF inv_mwb_globals.g_containerized = 1 THEN
21787 query_str := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
21788 ELSIF inv_mwb_globals.g_containerized = 2 THEN
21789 query_str := query_str || ' AND v.containerized_flag = 1 ';
21790 END IF;
21791
21792 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
21793 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
21794 query_str := query_str || ' AND v.locator_id = :loc_id ';
21795 END IF;
21796 --ER(3338592) Changes
21797 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
21798 query_str := query_str || ' AND v.item_description LIKE :item_description ';
21799 END IF;
21800 --ER(3338592) Changes
21801 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
21802 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
21803 query_str := query_str || ' AND v.subinventory_code = :sub ';
21804 END IF;
21805 IF inv_mwb_globals.g_serial_controlled = 1 THEN
21806 query_str := query_str || 'AND item_serial_control in (1,6) ';
21807 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
21808 query_str := query_str || ' AND v.item_serial_control in (2,5) ';
21809 END IF;
21810
21811 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
21812 query_str := query_str || ' AND v.grade_code = :grade_f ' ;
21813 END IF ;
21814
21815 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
21816 query_str := query_str || ' AND v.grade_code = :grade_c ' ;
21817 END IF ;
21818
21819 query_str := query_str || ' AND v.grade_code is not null ';
21820
21821 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL
21822 OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
21823 query_str := query_str || ' AND v.organization_id = :org_id ';
21824 ELSE
21825 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
21826 query_str := query_str || ' FROM org_access_view oav ' ;
21827 query_str := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
21828 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
21829 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
21830 END IF;
21831
21832 -- query_str := query_str || ' ) ' ; -- new
21833
21834 query_str := query_str || ' GROUP BY grade_code ';
21835
21836 ELSIF ((inv_mwb_globals.g_serial_from IS NULL AND inv_mwb_globals.g_serial_to IS NULL AND inv_mwb_globals.g_tree_serial_number IS NULL )
21837 AND ( inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL ) ) THEN
21838
21839 IF inv_mwb_globals.g_tree_mat_loc_id = 2
21840 OR inv_mwb_globals.g_chk_receiving = 1 THEN
21841
21842 table_required := ' MTL_ONHAND_LPN_MWB_V ml ' ;
21843 ELSE
21844 table_required := ' MTL_ONHAND_NEW_LPN_MWB_V ml ' ;
21845 END IF ;
21846
21847 query_str := query_str || ' SELECT grade_code from ' || table_required;
21848 query_str := query_str || ' WHERE 1=1 ';
21849
21850 IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
21851 OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
21852 query_str := query_str || 'AND inventory_item_id = :item_id ';
21853 END IF;
21854
21855 -- ER(9158529 client)
21856 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
21857 query_str := query_str || ' AND inventory_item_id in (select DISTINCT inventory_item_id from mtl_system_items_b where wms_deploy.get_client_code(inventory_item_id) = :client_code) ';
21858 END IF;
21859 -- ER(9158529 client)
21860
21861 -- ER(9158529)
21862 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
21863 query_str := query_str || ' AND inventory_item_id in '
21864 || ' (select DISTINCT inventory_item_id from mtl_item_categories '
21865 || ' where organization_id = :organization_id '
21866 || ' and category_set_id = :category_set_id '
21867 || ' and category_id = nvl(:category_id, category_id)) ' ;
21868 END IF;
21869 -- ER(9158529)
21870
21871 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
21872 query_str := query_str || ' AND project_id = :pr_id ';
21873 END IF;
21874 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
21875 query_str := query_str || ' AND task_id = :ta_id ';
21876 END IF;
21877 IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
21878 query_str := query_str || ' AND owning_organization_id = :own_org ';
21879 query_str := query_str || ' AND owning_tp_type = 2 ';
21880 ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
21881 query_str := query_str || ' AND owning_organization_id = :own_org ';
21882 query_str := query_str || ' AND owning_tp_type = 1 ';
21883 ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
21884 query_str := query_str || ' AND owning_tp_type = 1 ';
21885 END IF;
21886 IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
21887 query_str := query_str || ' AND planning_organization_id = :plan_org ';
21888 query_str := query_str || ' AND planning_tp_type = 2 ';
21889 ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
21890 query_str := query_str || ' AND planning_organization_id = :plan_org ';
21891 query_str := query_str || ' AND planning_tp_type = 1 ';
21892 ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
21893 query_str := query_str || ' AND planning_tp_type = 1 ';
21894 END IF;
21895 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
21896 query_str := query_str || ' AND cost_group_id = :cg_id ';
21897 END IF;
21898 IF inv_mwb_globals.g_revision_controlled = 1 THEN
21899 query_str := query_str || ' AND revision IS NULL ';
21900 ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
21901 query_str := query_str || ' AND revision IS NOT NULL ';
21902 END IF;
21903
21904 IF inv_mwb_globals.g_revision IS NOT NULL
21905 OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
21906 query_str := query_str || ' AND revision = :rev ';
21907 END IF;
21908
21909 IF inv_mwb_globals.g_containerized = 1 THEN
21910 query_str := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
21911 ELSIF inv_mwb_globals.g_containerized = 2 THEN
21912 query_str := query_str || 'AND containerized_flag = 1 ';
21913 END IF;
21914
21915 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
21916 OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
21917 query_str := query_str || ' AND locator_id = :loc_id ';
21918 END IF;
21919
21920 --ER(3338592) Changes
21921 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
21922 query_str := query_str || ' AND item_description LIKE :item_description ';
21923 END IF;
21924 --ER(3338592) Changes
21925 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
21926 OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
21927 query_str := query_str || ' AND subinventory_code = :sub ';
21928 END IF;
21929 IF inv_mwb_globals.g_serial_controlled = 1 THEN
21930 query_str := query_str || ' AND item_serial_control in (1,6) ';
21931 ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
21932 query_str := query_str || ' AND item_serial_control in (2,5) ';
21933 END IF;
21934 IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
21935 IF inv_mwb_globals.g_lpn_from IS NOT NULL AND inv_mwb_globals.g_lpn_to IS NULL THEN
21936 query_str := query_str || ' AND license_plate_number >= :lpn_f ';
21937 ELSIF inv_mwb_globals.g_lpn_from IS NULL AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
21938 query_str := query_str || ' AND license_plate_number <= :lpn_t ';
21939 ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
21940 query_str := query_str || ' AND license_plate_number >= :lpn_f ';
21941 query_str := query_str || ' AND license_plate_number <= :lpn_t ';
21942 END IF;
21943 END IF;
21944
21945 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
21946 query_str := query_str || ' AND grade_code = :grade_f ' ;
21947 END IF ;
21948
21949 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
21950 query_str := query_str || ' AND grade_code = :grade_c ' ;
21951 END IF ;
21952
21953 query_str := query_str || ' AND grade_code is not NULL ';
21954
21955 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL
21956 OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
21957 query_str := query_str || ' AND organization_id = :org_id ';
21958 ELSE
21959 query_str := query_str || ' and EXISTS ( SELECT 1 ' ;
21960 query_str := query_str || ' FROM org_access_view oav ' ;
21961 query_str := query_str || ' WHERE oav.organization_id = ml.organization_id ' ;
21962 query_str := query_str || ' AND oav.responsibility_id = :responsibility_id ' ;
21963 query_str := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
21964 END IF;
21965
21966 -- query_str := query_str || ' ) ' ; -- new
21967
21968 query_str := query_str || ' GROUP BY grade_code ';
21969
21970 END IF ;
21971
21972 inv_trx_util_pub.trace( query_str, 'Add-Grades Material Workbench', 9);
21973 -- execute the query and populate the node table
21974 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
21975 inv_mwb_globals.g_last_query := query_str;
21976 query_hdl := DBMS_SQL.open_cursor;
21977 DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
21978
21979
21980 IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
21981 DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
21982 END IF;
21983
21984 IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
21985 DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
21986 END IF;
21987
21988 IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
21989 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
21990 ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
21991 DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
21992 END IF;
21993
21994 IF inv_mwb_globals.g_organization_id IS NULL THEN
21995 IF inv_mwb_globals.g_responsibility_id IS NOT NULL THEN
21996 dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
21997 END IF;
21998 IF inv_mwb_globals.g_resp_application_id IS NOT NULL THEN
21999 dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
22000 END IF;
22001 END IF;
22002
22003 IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
22004 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
22005 ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
22006 DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
22007 END IF;
22008
22009 IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
22010 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
22011 ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
22012 DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
22013 END IF;
22014
22015
22016 IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
22017 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_tree_rev);
22018 ELSIF inv_mwb_globals.g_revision IS NOT NULL THEN
22019 DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
22020 END IF;
22021
22022 IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
22023 DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
22024 END IF;
22025 -- IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
22026 -- DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
22027 -- END IF;
22028 -- IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
22029 -- DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
22030 -- END IF;
22031 IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
22032 DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
22033 END IF;
22034 IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
22035 DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
22036 END IF;
22037
22038 --bug 6633612
22039 IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
22040 DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
22041 END IF;
22042 --bug 6633612
22043
22044 IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
22045 DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
22046 END IF;
22047 IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
22048 DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
22049 END IF;
22050 IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
22051 DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
22052 END IF;
22053 -- IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
22054 -- DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
22055 -- END IF;
22056 -- IF inv_mwb_globals.g_status_id IS NOT NULL THEN
22057 -- DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
22058 -- END IF;
22059 -- IF inv_mwb_globals.g_prepacked <> 1
22060 -- AND inv_mwb_globals.g_prepacked <> 999 THEN
22061 -- DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
22062 -- END IF;
22063 -- IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
22064 -- DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
22065 -- END IF;
22066 IF inv_mwb_globals.g_project_id IS NOT NULL THEN
22067 DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
22068 END IF;
22069 IF inv_mwb_globals.g_task_id IS NOT NULL THEN
22070 DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
22071 END IF;
22072 -- IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
22073 -- DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
22074 -- END IF;
22075 IF (inv_mwb_globals.g_owning_qry_mode = 4)
22076 OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
22077 DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
22078 END IF;
22079 IF (inv_mwb_globals.g_planning_query_mode = 4)
22080 OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
22081 DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
22082 END IF;
22083 --ER(3338592) Changes
22084 IF inv_mwb_globals.g_item_description IS NOT NULL THEN
22085 dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
22086 END IF;
22087 IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
22088 dbms_sql.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
22089 ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
22090 dbms_sql.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
22091 END IF;
22092
22093 -- ER(9158529 client)
22094 IF inv_mwb_globals.g_client_code IS NOT NULL THEN
22095 DBMS_SQL.bind_variable(query_hdl, 'client_code', inv_mwb_globals.g_client_code);
22096 END IF;
22097 -- ER(9158529 client)
22098
22099 -- ER(9158529)
22100 IF inv_mwb_globals.g_category_set_id IS NOT NULL THEN
22101 DBMS_SQL.bind_variable(query_hdl, 'organization_id', NVL(inv_mwb_globals.g_organization_id, inv_mwb_globals.g_tree_organization_id));
22102 DBMS_SQL.bind_variable(query_hdl, 'category_set_id', inv_mwb_globals.g_category_set_id);
22103 DBMS_SQL.bind_variable(query_hdl, 'category_id', inv_mwb_globals.g_category_id);
22104 END IF;
22105 -- ER(9158529)
22106
22107 DBMS_SQL.define_column(query_hdl, 1, grade, 150);
22108 rows_processed := DBMS_SQL.EXECUTE(query_hdl);
22109
22110 --inv_trx_util_pub.trace( 'Material Workbench rows processed ' || rows_processed, 'Material Workbench', 9);
22111
22112 LOOP
22113 -- fetch a row
22114 IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
22115 -- fetch columns from the row
22116 DBMS_SQL.column_value(query_hdl, 1, grade);
22117 IF j >= inv_mwb_globals.g_tree_node_low_value THEN
22118 x_node_tbl(i).state := inv_mwb_globals.g_tree_node_state;
22119 x_node_tbl(i).DEPTH := 1;
22120 x_node_tbl(i).label := substr(grade,1,80);
22121 x_node_tbl(i).icon := 'grades_cctitle' ;
22122 x_node_tbl(i).VALUE := grade;
22123 x_node_tbl(i).TYPE := 'GRADE';
22124 i := i + 1;
22125 END IF;
22126 EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
22127 j := j + 1;
22128 ELSE
22129 EXIT;
22130 END IF;
22131 END LOOP;
22132 DBMS_SQL.close_cursor(query_hdl); -- close cursor
22133 x_node_value := j;
22134 x_tbl_index := i;
22135 EXCEPTION
22136 WHEN NO_DATA_FOUND THEN
22137 NULL;
22138 WHEN OTHERS THEN
22139 RAISE;
22140 END add_grades ;
22141 -- NSRIVAST, INVCONV, End
22142
22143 -- Procedure to get the flexfield structure of mtl_lot_numbers flexfield.
22144 -- This procedure appends the entries to a table that has
22145 -- already been populated
22146 PROCEDURE get_mln_attributes_structure(
22147 x_attributes IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
22148 , x_attributes_count OUT NOCOPY NUMBER
22149 , x_return_status OUT NOCOPY VARCHAR2
22150 , x_msg_count OUT NOCOPY NUMBER
22151 , x_msg_data OUT NOCOPY NUMBER
22152 -- , p_mln_context_code IN VARCHAR2
22153 ) IS
22154 -- Cursor to get the segments that are enabled in the given context and
22155 -- IN the global context
22156 CURSOR mln_structure IS
22157 SELECT fdfcu.form_left_prompt
22158 , fdfcu.application_column_name
22159 FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
22160 WHERE fdfcu.application_id = fa.application_id
22161 AND fa.application_short_name = 'INV'
22162 AND fdfcu.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
22163 AND(
22164 fdfcu.descriptive_flex_context_code IN(
22165 SELECT fdfc.descriptive_flex_context_code
22166 FROM fnd_descr_flex_contexts_vl fdfc
22167 WHERE fdfc.global_flag = 'Y'
22168 AND fdfc.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
22169 AND fdfc.application_id = fa.application_id)
22170 OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_mln_context_code
22171 )
22172 AND fdfcu.enabled_flag = 'Y'
22173 ORDER BY fdfcu.column_seq_num;
22174 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MLN_ATTRIBUTES_STRUCTURE';
22175 BEGIN
22176 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
22177
22178 x_return_status := fnd_api.g_ret_sts_unexp_error;
22179 x_attributes_count := x_attributes.COUNT;
22180
22181 FOR mln_structure_rec IN mln_structure LOOP
22182 x_attributes_count := x_attributes_count + 1;
22183 x_attributes(x_attributes_count).prompt := mln_structure_rec.form_left_prompt;
22184 x_attributes(x_attributes_count).column_type := 'VARCHAR2';
22185 x_attributes(x_attributes_count).column_name := mln_structure_rec.application_column_name;
22186 END LOOP;
22187
22188 x_return_status := fnd_api.g_ret_sts_success;
22189 END get_mln_attributes_structure;
22190
22191 -- Procedure to get the values populated in MTL_LOT_NUMBERS of the enabled segments
22192 -- This procedure appends the entries to a table that has
22193 -- already been populated
22194 PROCEDURE get_mln_attributes(
22195 x_attribute_values IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
22196 , x_attribute_prompts IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
22197 , x_attributes_count OUT NOCOPY NUMBER
22198 , x_return_status OUT NOCOPY VARCHAR2
22199 , x_msg_count OUT NOCOPY NUMBER
22200 , x_msg_data OUT NOCOPY NUMBER
22201 /* , inv_mwb_globals.g_organization_id IN NUMBER
22202 , inv_mwb_globals.g_inventory_item_id IN NUMBER
22203 , inv_mwb_globals.g_tree_lot_number IN VARCHAR2*/
22204 ) IS
22205 -- Cursor to get the segments that are enabled in the given context and
22206 -- IN the global context
22207 CURSOR mln_dff_structure/*(inv_mwb_globals.g_mln_context_code VARCHAR2)*/ IS
22208 SELECT fdfcu.form_left_prompt
22209 , fdfcu.application_column_name
22210 FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
22211 WHERE fdfcu.application_id = fa.application_id
22212 AND fa.application_short_name = 'INV'
22213 AND fdfcu.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
22214 AND(
22215 fdfcu.descriptive_flex_context_code IN(
22216 SELECT fdfc.descriptive_flex_context_code
22217 FROM fnd_descr_flex_contexts_vl fdfc
22218 WHERE fdfc.global_flag = 'Y'
22219 AND fdfc.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
22220 AND fdfc.application_id = fa.application_id)
22221 OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_mln_context_code
22222 )
22223 AND fdfcu.enabled_flag = 'Y'
22224 ORDER BY fdfcu.column_seq_num;
22225
22226 TYPE l_attribute_type IS TABLE OF mtl_lot_numbers.attribute1%TYPE
22227 INDEX BY BINARY_INTEGER;
22228
22229 l_attribute l_attribute_type;
22230 l_mln_context_code mtl_lot_numbers.attribute_category%TYPE;
22231 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MLN_ATTRIBUTES';
22232 BEGIN
22233 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
22234
22235 x_return_status := fnd_api.g_ret_sts_unexp_error;
22236
22237 SELECT attribute1
22238 , attribute2
22239 , attribute3
22240 , attribute4
22241 , attribute5
22242 , attribute6
22243 , attribute7
22244 , attribute8
22245 , attribute9
22246 , attribute10
22247 , attribute11
22248 , attribute12
22249 , attribute13
22250 , attribute14
22251 , attribute15
22252 , attribute_category
22253 INTO l_attribute(1)
22254 , l_attribute(2)
22255 , l_attribute(3)
22256 , l_attribute(4)
22257 , l_attribute(5)
22258 , l_attribute(6)
22259 , l_attribute(7)
22260 , l_attribute(8)
22261 , l_attribute(9)
22262 , l_attribute(10)
22263 , l_attribute(11)
22264 , l_attribute(12)
22265 , l_attribute(13)
22266 , l_attribute(14)
22267 , l_attribute(15)
22268 , l_mln_context_code
22269 FROM mtl_lot_numbers
22270 WHERE inventory_item_id = inv_mwb_globals.g_inventory_item_id
22271 AND organization_id = inv_mwb_globals.g_organization_id
22272 AND lot_number = inv_mwb_globals.g_tree_lot_number;
22273
22274 x_attributes_count := x_attribute_values.COUNT;
22275
22276 FOR mln_dff_structure_rec IN mln_dff_structure /*(l_mln_context_code)*/ LOOP
22277 x_attributes_count := x_attributes_count + 1;
22278 x_attribute_prompts(x_attributes_count).prompt := mln_dff_structure_rec.form_left_prompt;
22279 x_attribute_prompts(x_attributes_count).column_name := mln_dff_structure_rec.application_column_name;
22280 x_attribute_values(x_attributes_count).column_name := mln_dff_structure_rec.application_column_name;
22281 x_attribute_values(x_attributes_count).column_value :=
22282 l_attribute(TO_NUMBER(SUBSTR(mln_dff_structure_rec.application_column_name, 10, 2)));
22283 END LOOP;
22284
22285 x_return_status := fnd_api.g_ret_sts_success;
22286 END get_mln_attributes;
22287
22288 -- Procedure to get the flexfield structure of mtl_lot_numbers flexfield.
22289 -- This procedure appends the entries to a table that has
22290 -- already been populated
22291 PROCEDURE get_msn_attributes_structure(
22292 x_attributes IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
22293 , x_attributes_count OUT NOCOPY NUMBER
22294 , x_return_status OUT NOCOPY VARCHAR2
22295 , x_msg_count OUT NOCOPY NUMBER
22296 , x_msg_data OUT NOCOPY NUMBER
22297 -- , inv_mwb_globals.g_msn_context_code IN VARCHAR2
22298 ) IS
22299 -- Cursor to get the segments that are enabled in the given context and
22300 -- IN the global context
22301 CURSOR msn_structure IS
22302 SELECT fdfcu.form_left_prompt
22303 , fdfcu.application_column_name
22304 FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
22305 WHERE fdfcu.application_id = fa.application_id
22306 AND fa.application_short_name = 'INV'
22307 AND fdfcu.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
22308 AND(
22309 fdfcu.descriptive_flex_context_code IN(
22310 SELECT fdfc.descriptive_flex_context_code
22311 FROM fnd_descr_flex_contexts_vl fdfc
22312 WHERE fdfc.global_flag = 'Y'
22313 AND fdfc.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
22314 AND fdfc.application_id = fa.application_id)
22315 OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_msn_context_code
22316 )
22317 AND fdfcu.enabled_flag = 'Y'
22318 ORDER BY fdfcu.column_seq_num;
22319 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MSN_ATTRIBUTS_STRUCTURE';
22320 BEGIN
22321 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
22322
22323 x_return_status := fnd_api.g_ret_sts_unexp_error;
22324 x_attributes_count := x_attributes.COUNT;
22325
22326 FOR msn_structure_rec IN msn_structure LOOP
22327 x_attributes_count := x_attributes_count + 1;
22328 x_attributes(x_attributes_count).prompt := msn_structure_rec.form_left_prompt;
22329 x_attributes(x_attributes_count).column_type := 'VARCHAR2';
22330 x_attributes(x_attributes_count).column_name := msn_structure_rec.application_column_name;
22331 END LOOP;
22332
22333 x_return_status := fnd_api.g_ret_sts_success;
22334 END get_msn_attributes_structure;
22335
22336 -- Procedure to get the values populated in MTL_SERIAL_NUMBERS of the enabled segments
22337 -- This procedure appends the entries to a table that has
22338 -- already been populated
22339 PROCEDURE get_msn_attributes(
22340 x_attribute_values IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
22341 , x_attribute_prompts IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
22342 , x_attributes_count OUT NOCOPY NUMBER
22343 , x_return_status OUT NOCOPY VARCHAR2
22344 , x_msg_count OUT NOCOPY NUMBER
22345 , x_msg_data OUT NOCOPY NUMBER
22346 /*, inv_mwb_globals.g_organization_id IN NUMBER
22347 , inv_mwb_globals.g_inventory_item_id IN NUMBER
22348 , inv_mwb_globals.g_tree_serial_number IN VARCHAR2*/
22349 ) IS
22350 -- Cursor to get the segments that are enabled in the given context and
22351 -- IN the global context
22352 CURSOR msn_dff_structure/*(inv_mwb_globals.g_msn_context_code VARCHAR2)*/ IS
22353 SELECT fdfcu.form_left_prompt
22354 , fdfcu.application_column_name
22355 FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
22356 WHERE fdfcu.application_id = fa.application_id
22357 AND fa.application_short_name = 'INV'
22358 AND fdfcu.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
22359 AND(
22360 fdfcu.descriptive_flex_context_code IN(
22361 SELECT fdfc.descriptive_flex_context_code
22362 FROM fnd_descr_flex_contexts_vl fdfc
22363 WHERE fdfc.global_flag = 'Y'
22364 AND fdfc.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
22365 AND fdfc.application_id = fa.application_id)
22366 OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_msn_context_code
22367 )
22368 AND fdfcu.enabled_flag = 'Y'
22369 ORDER BY fdfcu.column_seq_num;
22370
22371 TYPE l_attribute_type IS TABLE OF mtl_serial_numbers.attribute1%TYPE
22372 INDEX BY BINARY_INTEGER;
22373
22374 l_attribute l_attribute_type;
22375 l_msn_context_code mtl_serial_numbers.attribute_category%TYPE;
22376 l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MSN_ATTRIBUTE';
22377 BEGIN
22378 inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
22379
22380 x_return_status := fnd_api.g_ret_sts_unexp_error;
22381
22382 SELECT attribute1
22383 , attribute2
22384 , attribute3
22385 , attribute4
22386 , attribute5
22387 , attribute6
22388 , attribute7
22389 , attribute8
22390 , attribute9
22391 , attribute10
22392 , attribute11
22393 , attribute12
22394 , attribute13
22395 , attribute14
22396 , attribute15
22397 , attribute_category
22398 INTO l_attribute(1)
22399 , l_attribute(2)
22400 , l_attribute(3)
22401 , l_attribute(4)
22402 , l_attribute(5)
22403 , l_attribute(6)
22404 , l_attribute(7)
22405 , l_attribute(8)
22406 , l_attribute(9)
22407 , l_attribute(10)
22408 , l_attribute(11)
22409 , l_attribute(12)
22410 , l_attribute(13)
22411 , l_attribute(14)
22412 , l_attribute(15)
22413 , l_msn_context_code
22414 FROM mtl_serial_numbers
22415 WHERE inventory_item_id = inv_mwb_globals.g_inventory_item_id
22416 AND current_organization_id = inv_mwb_globals.g_organization_id
22417 AND serial_number = inv_mwb_globals.g_tree_serial_number;
22418
22419 x_attributes_count := x_attribute_values.COUNT;
22420
22421 FOR msn_dff_structure_rec IN msn_dff_structure /*(l_msn_context_code)*/ LOOP
22422 x_attributes_count := x_attributes_count + 1;
22423 x_attribute_prompts(x_attributes_count).prompt := msn_dff_structure_rec.form_left_prompt;
22424 x_attribute_prompts(x_attributes_count).column_name := msn_dff_structure_rec.application_column_name;
22425 x_attribute_values(x_attributes_count).column_name := msn_dff_structure_rec.application_column_name;
22426 x_attribute_values(x_attributes_count).column_value :=
22427 l_attribute(TO_NUMBER(SUBSTR(msn_dff_structure_rec.application_column_name, 10, 2)));
22428 END LOOP;
22429
22430 x_return_status := fnd_api.g_ret_sts_success;
22431 END get_msn_attributes;
22432
22433 FUNCTION GET_ITEM(P_ITEM_ID IN NUMBER, P_ORG_ID IN NUMBER) RETURN VARCHAR2 IS -- Bug 6350236 Starting
22434 I_CC_ID_RET BOOLEAN;
22435 l_org_id NUMBER;
22436 l_item_name VARCHAR2(1000) := NULL;
22437 BEGIN
22438 IF p_item_id is NULL then
22439 RETURN NULL;
22440 END IF;
22441
22442 IF p_org_id is NULL then
22443 BEGIN
22444 SELECT organization_id into l_org_id
22445 FROM mtl_system_items
22446 WHERE inventory_item_id = p_item_id
22447 AND rownum = 1;
22448 EXCEPTION
22449 WHEN NO_DATA_FOUND THEN
22450 RETURN NULL;
22451 END;
22452 ELSE
22453 l_org_id := p_org_id;
22454 END IF;
22455
22456 I_CC_ID_RET := FND_FLEX_KEYVAL.VALIDATE_CCID(
22457 APPL_SHORT_NAME => 'INV',
22458 KEY_FLEX_CODE => 'MSTK',
22459 STRUCTURE_NUMBER => 101,
22460 COMBINATION_ID => p_item_id,
22461 DATA_SET => l_org_id,
22462 RESP_APPL_ID => 401);
22463 IF I_CC_ID_RET THEN
22464 l_item_name := FND_FLEX_KEYVAL.CONCATENATED_VALUES;
22465 END IF;
22466
22467 return l_item_name;
22468 EXCEPTION
22469 WHEN OTHERS THEN
22470 RETURN NULL;
22471 END GET_ITEM; -- Bug 6350236 Ending
22472
22473 END inv_mwb_tree1;