DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_MWB_TREE1

Source


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;