DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_MWB_TREE1

Source


1 PACKAGE BODY inv_mwb_tree1 AS
2 /* $Header: INVMWTRB.pls 120.48.12010000.2 2008/11/10 11:31:54 ksaripal ship $ */
3 
4 
5   -- Controlled: 0 Don't Care, 1 No, 2 Yes
6   -- Add organization nodes for the given parameters
7 
8 
9   /*procedure trace1( a in varchar2 default null, b in varchar2 default null,c number default null) is
10   begin
11      IF (length(b||a) < 4000) THEN
12         insert into amintemp1 VALUES (b || a);
13      END IF;
14      COMMIT;
15   end; */
16 
17   g_pkg_name CONSTANT VARCHAR2(30) := 'INV_MWB_TREE1';
18 
19   PROCEDURE add_document_numbers(
20     x_node_value          IN OUT NOCOPY NUMBER
21   , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
22   , x_tbl_index           IN OUT NOCOPY NUMBER)
23 IS
24    select_str varchar2(10000);
25    where_str varchar2(10000);
26 
27    query_str        VARCHAR2(10000);
28    query_hdl        NUMBER;
29    rows_processed   NUMBER;
30    doc_number       VARCHAR2(100);
31    doc_header_id    NUMBER;
32    i                NUMBER    := x_tbl_index;
33    j                NUMBER    := x_node_value;
34    lpn_from_id      wms_license_plate_numbers.lpn_id%TYPE;
35    lpn_to_id        wms_license_plate_numbers.lpn_id%TYPE;
36    l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_DOCUMENT_NUMBERS';
37 BEGIN
38    inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
39 
40    IF inv_mwb_globals.g_tree_doc_type_id = 1   -- Purchase Order
41    AND inv_mwb_globals.g_source_org_id IS NULL
42    AND inv_mwb_globals.g_internal_order_id IS NULL
43    AND inv_mwb_globals.g_shipment_header_id_interorg IS NULL
44    AND inv_mwb_globals.g_req_header_id IS NULL THEN
45 
46       query_str := ' SELECT distinct pha.segment1, pha.po_header_id
47                        FROM  po_headers_all pha
48                            , po_lines_all pla
49                            , mtl_supply ms
50                            , mtl_system_items_kfv msik
51                        WHERE pha.po_header_id = ms.po_header_id
52                          AND pla.po_line_id = ms.po_line_id
53                          AND pha.authorization_status = ''APPROVED''
54                          AND ms.destination_type_code = ''INVENTORY''
55                          AND ms.item_id = msik.inventory_item_id
56                          AND ms.to_organization_id = msik.organization_id
57                          AND ms.supply_type_code IN (''PO'')
58                          AND pha.segment1 IS NOT NULL';
59 
60 /*      IF inv_mwb_globals.g_include_po_without_asn = 1 THEN
61          query_str := query_str || ' AND ms.supply_type_code IN (''PO'',''SHIPMENT'') ';
62       ELSIF inv_mwb_globals.g_include_po_without_asn = 0 THEN
63 --         query_str := query_str || ' AND ms.supply_type_code = ''SHIPMENT'' ';
64          query_str := query_str || ' AND ms.shipment_header_id IS NULL ';
65       END IF;
66 */
67       IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
68          query_str := query_str || ' AND pla.vendor_product_num = :inb_vendor_item ';
69       END IF;
70 
71       IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
72       OR inv_mwb_globals.g_lpn_to_id IS NOT NULL
73       OR inv_mwb_globals.g_serial_from IS NOT NULL
74       OR inv_mwb_globals.g_serial_to IS NOT NULL
75       OR inv_mwb_globals.g_lot_from IS NOT NULL
76       OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
77          query_str := query_str || ' AND 1 = 2 ';
78       END IF;
79 
80       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
81 
82       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
83          query_str := query_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
84       END IF;
85 
86       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
87          inv_mwb_globals.g_expected_to_date IS NOT NULL AND
88          inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
89             query_str := query_str || ' AND ms.expected_delivery_date = :inb_from_date';
90       END IF;
91 
92       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
93          query_str := query_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
94       END IF;
95 
96       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
97          query_str := query_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
98       END IF;
99 
100       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
101 
102       /*
103        *  You always add documents under the Organization node,
104        *  Always restrict the documents based on the 'Tree Organization Id'
105        */
106       query_str := query_str || ' AND ms.to_organization_id = :inb_to_org_id ';
107 
108       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
109          query_str := query_str || ' AND ms.item_id = :inb_item_id ';
110       END IF;
111 
112       IF inv_mwb_globals.g_inventory_item_id IS NULL
113       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
114          query_str := query_str || ' AND msik.description like :inb_item_description ';
115       END IF;
116 
117       IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
118          query_str := query_str || ' AND pha.po_header_id = :inb_po_header_id ';
119       END IF;
120 
121       IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
122          query_str := query_str || ' AND ms.po_release_id = :inb_po_release_id ';
123       END IF;
124 
125       IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
126          query_str := query_str || ' AND pha.vendor_id = :inb_vendor_id ';
127          IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
128             query_str := query_str || ' AND pha.vendor_site_id = :inb_vendor_site_id ';
129          END IF;
130       END IF;
131 
132       query_str := query_str || ' ORDER BY pha.segment1 ';
133 
134       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
135 
136       query_hdl  := DBMS_SQL.open_cursor;
137       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
138 
139       IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
140          DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
141       END IF;
142 
143       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
144          DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
145       END IF;
146 
147       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
148       AND inv_mwb_globals.g_expected_to_date IS NOT NULL
149       AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
150          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
151       END IF;
152 
153       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
154          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
155       END IF;
156 
157       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
158          DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
159       END IF;
160 
161       /*
162        *  You always add documents under the Organization node,
163        *  Always restrict the documents based on the 'Tree Organization Id'
164        */
165       DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
166 
167       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
168          DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
169       END IF;
170 
171       IF inv_mwb_globals.g_inventory_item_id IS NULL
172       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
173          DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
174       END IF;
175 
176       IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
177          DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
178       END IF;
179 
180       IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
181          DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
182       END IF;
183 
184       IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
185          DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
186          IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
187             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
188          END IF;
189       END IF;
190 
191       DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
192       DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
193 
194       rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
195 
196       LOOP
197          -- fetch a row
198          IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
199          -- fetch columns from the row
200             DBMS_SQL.column_value(query_hdl, 1, doc_number);
201             DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
202 
203             IF j >= inv_mwb_globals.g_tree_node_low_value
204             AND doc_number IS NOT NULL THEN
205             x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
206             x_node_tbl(i).DEPTH  := 1;
207             x_node_tbl(i).label  := doc_number;
208             x_node_tbl(i).icon   := 'tree_document';
209             x_node_tbl(i).VALUE  := doc_header_id;
210             x_node_tbl(i).TYPE   := 'DOCNUM';
211             i                    := i + 1;
212             END IF;
213 
214             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
215             j  := j + 1;
216          ELSE
217             EXIT;
218          END IF;
219       END LOOP;
220 
221    END IF; -- Purchase Order
222 
223 
224    IF inv_mwb_globals.g_tree_doc_type_id = 4   -- ASN
225    AND inv_mwb_globals.g_source_org_id IS NULL
226    AND inv_mwb_globals.g_internal_order_id IS NULL
227    AND inv_mwb_globals.g_shipment_header_id_interorg IS NULL
228    AND inv_mwb_globals.g_req_header_id IS NULL
229    AND inv_mwb_globals.g_po_header_id IS NULL THEN
230 
231    inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Adding ASN' );
232       select_str := ' SELECT distinct rsh.shipment_num, rsh.shipment_header_id FROM mtl_supply ms
233                                   , rcv_shipment_lines rsl
234                                   , rcv_shipment_headers rsh ';
235 
236       where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id (+)
237                        AND ms.shipment_line_id = rsl.shipment_line_id (+)
238                        AND ms.supply_type_code = ''SHIPMENT''
239                        AND ms.destination_type_code = ''INVENTORY''
240                        AND rsh.asn_type IS NOT NULL ';
241 
242       IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
243       OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
244          select_str := select_str || ' , wms_license_plate_numbers wlpn ';
245          where_str := where_str  ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
246       END IF;
247 
248       IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
249          where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
250       END IF;
251 
252       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
253          where_str := where_str || ' AND rsl.cost_group_id = :inb_cost_group_id ';
254       END IF;
255 
256       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
257          inv_mwb_globals.g_expected_to_date IS NOT NULL AND
258          inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
259             where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
260       END IF;
261 
262       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
263          where_str := where_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
264       END IF;
265 
266       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
267          where_str := where_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
268       END IF;
269 
270       /*
271        *  You always add documents under the Organization node,
272        *  Always restrict the documents based on the 'Tree Organization Id'
273        */
274       where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
275 
276       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
277          where_str := where_str || ' AND ms.item_id = :inb_item_id ';
278       END IF;
279 
280       IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
281          where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
282       END IF;
283 
284       IF inv_mwb_globals.g_inventory_item_id IS NULL
285       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
286          select_str := select_str || ', mtl_system_items_kfv msik ';
287 
288          where_str := ' AND ms.item_id = msik.inventory_item_id
289                         AND ms.to_organization_id = msik.organization_id
290                         AND msik.description like :inb_item_description ';
291       END IF;
292 
293       IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
294          where_str := where_str || ' AND ms.po_header_id = :inb_po_header_id ';
295       END IF;
296 
297       IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
298          where_str := where_str || ' AND ms.po_release_id = :inb_po_release_id ';
299       END IF;
300 
301       IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
302          where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
303          IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
304             where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
305          END IF;
306       END IF;
307 
308       IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
309          where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
310       ELSE
311         IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
312            where_str := where_str || ' AND wlpn.license_plate_number >= :inb_lpn_from ';
313         END IF;
314 
315         IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
316            where_str := where_str || ' AND wlpn.license_plate_number <= :inb_lpn_to ';
317         END IF;
318       END IF;
319 
320       IF inv_mwb_globals.g_serial_from IS NOT NULL
321       OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
322          select_str := select_str || ', rcv_serials_supply rss ';
323          where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
324       END IF;
325 
326       IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
327          where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
328       ELSE
329         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
330            where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
331         END IF;
332 
333         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
334            where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
335         END IF;
336       END IF;
337 
338       IF inv_mwb_globals.g_lot_from IS NOT NULL
339       OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
340          select_str := select_str || ', rcv_lots_supply rls ';
341          where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
342       END IF;
343 
344       IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
345          where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
346       ELSE
347         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
348            where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
349         END IF;
350 
351         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
352            where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
353         END IF;
354       END IF;
355 
356       query_str := select_str || where_str;
357 
358       query_str := query_str || ' ORDER BY rsh.shipment_num ';
359 
360       query_hdl  := DBMS_SQL.open_cursor;
361       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
362 
363       IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
364          DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
365       END IF;
366 
367       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
368          DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
369       END IF;
370 
371       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
372       AND inv_mwb_globals.g_expected_to_date IS NOT NULL
373       AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
374          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
375       END IF;
376 
377       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
378          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
379       END IF;
380 
381       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
382          DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
383       END IF;
384 
385       /*
386        *  You always add documents under the Organization node,
387        *  Always restrict the documents based on the 'Tree Organization Id'
388        */
389       DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
390 
391       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
392          DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
393       END IF;
394 
395       IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
396          DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', inv_mwb_globals.g_shipment_header_id_asn);
397       END IF;
398 
399       IF inv_mwb_globals.g_inventory_item_id IS NULL
400       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
401          DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
402       END IF;
403 
404       IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
405          DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
406       END IF;
407 
408       IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
409          DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
410       END IF;
411 
412       IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
413          DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
414          IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
415             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
416          END IF;
417       END IF;
418 
419       IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
420          DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
421       ELSE
422         IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
423            DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
424         END IF;
425 
426         IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
427            DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
428         END IF;
429       END IF;
430 
431 
432       IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
433          DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
434       ELSE
435         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
436            DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
437         END IF;
438 
439         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
440            DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
441         END IF;
442       END IF;
443 
444      IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
445          DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
446       ELSE
447         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
448            DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
449         END IF;
450 
451         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
452            DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
453         END IF;
454       END IF;
455 
456       DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
457       DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
458 
459       rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
460 
461       LOOP
462          -- fetch a row
463          IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
464          -- fetch columns from the row
465             DBMS_SQL.column_value(query_hdl, 1, doc_number);
466             DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
467 
468             IF j >= inv_mwb_globals.g_tree_node_low_value
469             AND doc_number IS NOT NULL THEN
470             x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
471             x_node_tbl(i).DEPTH  := 1;
472             x_node_tbl(i).label  := doc_number;
473             x_node_tbl(i).icon   := 'tree_document';
474             x_node_tbl(i).VALUE  := doc_header_id;
475             x_node_tbl(i).TYPE   := 'DOCNUM';
476             i                    := i + 1;
477             END IF;
478 
479             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
480             j  := j + 1;
481          ELSE
482             EXIT;
483          END IF;
484       END LOOP;
485    inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Ended Adding ASN' );
486    END IF; -- ASN
487 
488    IF inv_mwb_globals.g_tree_doc_type_id = 3
489    AND inv_mwb_globals.g_po_header_id IS NULL
490    AND inv_mwb_globals.g_vendor_id IS NULL
491    AND inv_mwb_globals.g_shipment_header_id_asn IS NULL
492    AND inv_mwb_globals.g_vendor_item IS NULL THEN
493 
494       select_str := ' SELECT distinct rsh.shipment_num, rsh.shipment_header_id FROM mtl_supply ms
495                                   , rcv_shipment_lines rsl
496                                   , rcv_shipment_headers rsh ';
497 
498       where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id (+)
499                        AND ms.shipment_line_id = rsl.shipment_line_id (+)
500                        AND ms.supply_type_code = ''SHIPMENT''
501                        AND ms.destination_type_code = ''INVENTORY''
502                        AND rsh.asn_type IS NULL
503                        AND ms.req_header_id IS NULL ';
504 
505       IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
506       OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
507          select_str := select_str || ' , wms_license_plate_numbers wlpn ';
508          where_str := where_str  ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
509       END IF;
510 
511       IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
512          where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
513       END IF;
514 
515       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
516          where_str := where_str || ' AND rsl.cost_group_id = :inb_cost_group_id ';
517       END IF;
518 
519       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
520          inv_mwb_globals.g_expected_to_date IS NOT NULL AND
521          inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
522             where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
523       END IF;
524 
525       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
526          where_str := where_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
527       END IF;
528 
529       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
530          where_str := where_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
531       END IF;
532 
533       /*
534        *  You always add documents under the Organization node,
535        *  Always restrict the documents based on the 'Tree Organization Id'
536        */
537       where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
538 
539       IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
540          where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
541       END IF;
542 
543       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
544          where_str := where_str || ' AND ms.item_id = :inb_item_id ';
545       END IF;
546 
547       IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
548       OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
549         where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
550       END IF;
551 
552       IF inv_mwb_globals.g_inventory_item_id IS NULL
553       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
554          select_str := select_str || ', mtl_system_items_kfv msik ';
555 
556          where_str := ' AND ms.item_id = msik.inventory_item_id
557                         AND ms.to_organization_id = msik.organization_id
558                         AND msik.description like :inb_item_description ';
559       END IF;
560 
561       IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
562          where_str := where_str || ' AND ms.po_header_id = :inb_po_header_id ';
563       END IF;
564 
565       IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
566          where_str := where_str || ' AND ms.po_release_id = :inb_po_release_id ';
567       END IF;
568 
569       IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
570          where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
571          IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
572             where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
573          END IF;
574       END IF;
575 
576       IF inv_mwb_globals.g_serial_from IS NOT NULL
577       OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
578          select_str := select_str || ', rcv_serials_supply rss ';
579          where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
580       END IF;
581 
582 
583       IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
584          where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
585       ELSE
586         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
587            where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
588         END IF;
589 
590         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
591            where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
592         END IF;
593       END IF;
594 
595       IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
596          where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
597       ELSE
598         IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
599            where_str := where_str || ' AND wlpn.license_plate_number >= :inb_lpn_from ';
600         END IF;
601 
602         IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
603            where_str := where_str || ' AND wlpn.license_plate_number <= :inb_lpn_to ';
604         END IF;
605       END IF;
606 
607       IF inv_mwb_globals.g_lot_from IS NOT NULL
608       OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
609          select_str := select_str || ', rcv_lots_supply rls ';
610          where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
611       END IF;
612 
613       IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
614          where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
615       ELSE
616         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
617            where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
618         END IF;
619 
620         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
621            where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
622         END IF;
623       END IF;
624 
625       query_str := select_str || where_str;
626 
627       query_str := query_str || ' ORDER BY rsh.shipment_num ';
628 
629 /*      delete from rtest2;
630       insert into rtest2 values (query_str);
631       commit;
632 */
633 
634       query_hdl  := DBMS_SQL.open_cursor;
635       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
636 
637       IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
638          DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
639       END IF;
640 
641       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
642          DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
643       END IF;
644 
645       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
646       AND inv_mwb_globals.g_expected_to_date IS NOT NULL
647       AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
648          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
649       END IF;
650 
651       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
652          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
653       END IF;
654 
655       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
656          DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
657       END IF;
658 
659       /*
660        *  You always add documents under the Organization node,
661        *  Always restrict the documents based on the 'Tree Organization Id'
662        */
663       DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
664 
665       IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
666          DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
667       END IF;
668 
669       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
670          DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
671       END IF;
672 
673       IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
674       OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
675          DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', NVL(inv_mwb_globals.g_shipment_header_id_interorg
676                                                                        , inv_mwb_globals.g_tree_doc_header_id));
677       END IF;
678 
679       IF inv_mwb_globals.g_inventory_item_id IS NULL
680       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
681          DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
682       END IF;
683 
684       IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
685          DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
686       END IF;
687 
688       IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
689          DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
690       END IF;
691 
692       IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
693          DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
694          IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
695             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
696          END IF;
697       END IF;
698 
699 
700       IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
701          DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
702       ELSE
703         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
704            DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
705         END IF;
706 
707         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
708            DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
709         END IF;
710       END IF;
711 
712       IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
713          DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
714       ELSE
715         IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
716            DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
717         END IF;
718 
719         IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
720            DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
721         END IF;
722       END IF;
723 
724      IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
725          DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
726       ELSE
727         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
728            DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
729         END IF;
730 
731         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
732            DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
733         END IF;
734       END IF;
735 
736       DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
737       DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
738 
739       rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
740 
741       LOOP
742          -- fetch a row
743          IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
744          -- fetch columns from the row
745             DBMS_SQL.column_value(query_hdl, 1, doc_number);
746             DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
747 
748             IF j >= inv_mwb_globals.g_tree_node_low_value
749             AND doc_number IS NOT NULL THEN
750             x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
751             x_node_tbl(i).DEPTH  := 1;
752             x_node_tbl(i).label  := doc_number;
753             x_node_tbl(i).icon   := 'tree_document';
754             x_node_tbl(i).VALUE  := doc_header_id;
755             x_node_tbl(i).TYPE   := 'DOCNUM';
756             i                    := i + 1;
757             END IF;
758 
759             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
760             j  := j + 1;
761          ELSE
762             EXIT;
763          END IF;
764       END LOOP;
765 
766    END IF; -- INTERORG
767 
768 
769    IF inv_mwb_globals.g_tree_doc_type_id = 2 -- REQUISITION
770    AND inv_mwb_globals.g_po_header_id IS NULL
771    AND inv_mwb_globals.g_vendor_id IS NULL
772    AND inv_mwb_globals.g_shipment_header_id_asn IS NULL
773    AND inv_mwb_globals.g_vendor_item IS NULL THEN
774 
775 
776       select_str := ' SELECT distinct prha.segment1, prha.requisition_header_id
777                         FROM mtl_supply ms
778                            , po_requisition_headers_all prha
779                            , po_requisition_lines_all prla ';
780 
781        where_str := 'WHERE ms.req_header_id = prha.requisition_header_id (+)
782                        AND ms.req_line_id = prla.requisition_line_id (+)
783                        AND ms.supply_type_code = ''REQ''
784                        AND ms.destination_type_code = ''INVENTORY'' ';
785 
786 
787 
788       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
789          where_str := where_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
790       END IF;
791 
792       IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
793       OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
794          where_str := where_str || ' AND 1 = 2 ';
795       END IF;
796 
797 
798       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
799          inv_mwb_globals.g_expected_to_date IS NOT NULL AND
800          inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
801             where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
802       END IF;
803 
804       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
805          where_str := where_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
806       END IF;
807 
808       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
809          where_str := where_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
810       END IF;
811 
812       /*
813        *  You always add documents under the Organization node,
814        *  Always restrict the documents based on the 'Tree Organization Id'
815        */
816       where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
817 
818       IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
819          where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
820       END IF;
821 
822       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
823          where_str := where_str || ' AND ms.item_id = :inb_item_id ';
824       END IF;
825 
826       IF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
827          where_str := where_str || ' AND ms.req_header_id = :inb_req_header_id ';
828       END IF;
829 
830       IF inv_mwb_globals.g_inventory_item_id IS NULL
831       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
832          select_str := select_str || ', mtl_system_items_kfv msik ';
833 
834          where_str := where_str || ' AND ms.item_id = msik.inventory_item_id
835                                      AND ms.to_organization_id = msik.organization_id
836                                      AND msik.description like :inb_item_description ';
837       END IF;
838 
839       IF inv_mwb_globals.g_serial_from IS NOT NULL
840       OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
841          select_str := select_str || ', rcv_serials_supply rss ';
842          where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
843       END IF;
844 
845 
846       IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
847          where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
848       ELSE
849         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
850            where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
851         END IF;
852 
853         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
854            where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
855         END IF;
856       END IF;
857 
858 
859       IF inv_mwb_globals.g_lot_from IS NOT NULL
860       OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
861          select_str := select_str || ', rcv_lots_supply rls ';
862          where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
863       END IF;
864 
865       IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
866          where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
867       ELSE
868         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
869            where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
870         END IF;
871 
872         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
873            where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
874         END IF;
875       END IF;
876 
877       query_str := select_str || where_str;
878 
879       query_str := query_str || ' ORDER BY prha.segment1 ';
880 
881 /*      delete from rtest2;
882       insert into rtest2 values (query_str);
883       commit;
884 */
885 
886       query_hdl  := DBMS_SQL.open_cursor;
887       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
888 
889       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
890          DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
891       END IF;
892 
893       IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
894       AND inv_mwb_globals.g_expected_to_date IS NOT NULL
895       AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
896          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
897       END IF;
898 
899       IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
900          DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
901       END IF;
902 
903       IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
904          DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
905       END IF;
906 
907       /*
908        *  You always add documents under the Organization node,
909        *  Always restrict the documents based on the 'Tree Organization Id'
910        */
911       DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_tree_organization_id);
912 
913       IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
914          DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
915       END IF;
916 
917       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
918          DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
919       END IF;
920 
921       IF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
922          DBMS_SQL.bind_variable(query_hdl, 'inb_req_header_id', inv_mwb_globals.g_req_header_id);
923       END IF;
924 
925       IF inv_mwb_globals.g_inventory_item_id IS NULL
926       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
927          DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
928       END IF;
929 
930       IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
931          DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
932       ELSE
933         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
934            DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
935         END IF;
936 
937         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
938            DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
939         END IF;
940       END IF;
941 
942      IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
943          DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
944       ELSE
945         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
946            DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
947         END IF;
948 
949         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
950            DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
951         END IF;
952       END IF;
953 
954       DBMS_SQL.define_column(query_hdl, 1, doc_number, 25);
955       DBMS_SQL.define_column(query_hdl, 2, doc_header_id);
956 
957       rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
958 
959       LOOP
960          -- fetch a row
961          IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
962          -- fetch columns from the row
963             DBMS_SQL.column_value(query_hdl, 1, doc_number);
964             DBMS_SQL.column_value(query_hdl, 2, doc_header_id);
965 
966             IF j >= inv_mwb_globals.g_tree_node_low_value
967             AND doc_number IS NOT NULL THEN
968             x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
969             x_node_tbl(i).DEPTH  := 1;
970             x_node_tbl(i).label  := doc_number;
971             x_node_tbl(i).icon   := 'tree_document';
972             x_node_tbl(i).VALUE  := doc_header_id;
973             x_node_tbl(i).TYPE   := 'DOCNUM';
974             i                    := i + 1;
975             END IF;
976 
977             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
978             j  := j + 1;
979          ELSE
980             EXIT;
981          END IF;
982       END LOOP;
983 
984    END IF; -- REQUISITION
985    inv_mwb_globals.g_last_query := query_str;
986    inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Ended Adding document_numbers' );
987 EXCEPTION
988    WHEN NO_DATA_FOUND THEN
989       null;
990    WHEN OTHERS THEN
991       RAISE;
992 END add_document_numbers;
993 
994 
995    PROCEDURE add_orgs(
996      x_node_value          IN OUT NOCOPY NUMBER
997    , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
998    , x_tbl_index           IN OUT NOCOPY NUMBER
999    ) IS
1000       query_str      VARCHAR2(10000);
1001       query_hdl      NUMBER;
1002       rows_processed NUMBER;
1003       org_id         mtl_onhand_quantities.organization_id%TYPE;
1004       org_code       mtl_parameters.organization_code%TYPE;
1005       i              NUMBER                                       := x_tbl_index;
1006       j              NUMBER                                       := x_node_value;
1007       table_required VARCHAR2(300);
1008       is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
1009       --ER(3338592) Changes
1010       group_str      VARCHAR2(10000) ;
1011       having_str     VARCHAR2(10000) := ' HAVING 1=1 ';
1012       inb_select_clause  VARCHAR2(500) := ' SELECT DISTINCT mp.organization_code , ms.to_organization_id ';
1013       inb_from_clause  VARCHAR2(10000) := ' FROM ';
1014       inb_where_clause  VARCHAR2(10000) := 'WHERE 1=1 ' ;
1015       inb_query_str  VARCHAR2(20000);
1016       inb_orderby_clause  VARCHAR2(100) := ' ORDER BY organization_code ';
1017       l_inbound_qty    NUMBER;
1018       l_onhand_qty     NUMBER;
1019       l_rcv_qty        NUMBER;
1020       l_org_exists_flag BOOLEAN DEFAULT FALSE;
1021       --End of ER Changes
1022       l_procedure_name CONSTANT VARCHAR2(30)  := 'ADD_ORGS';
1023       l_default_status_id NUMBER; -- Onhand Material Status Support
1024    BEGIN
1025       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
1026 
1027       -- Onhand Material Status Support
1028       IF inv_mwb_globals.g_view_by = 'STATUS' THEN
1029          inv_mwb_globals.g_only_subinventory_status := 1;
1030       ELSE
1031          inv_mwb_globals.g_only_subinventory_status := NULL;
1032       END IF;
1033 
1034       -- Getting the default org status id
1035       if (inv_mwb_globals.g_organization_id is not null) then
1036          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
1037            l_default_status_id :=  inv_cache.org_rec.default_status_id;
1038          end if;
1039       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
1040          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
1041            l_default_status_id :=  inv_cache.org_rec.default_status_id;
1042          end if;
1043       end if;
1044       -- End Onhand Material Status Support
1045 
1046     -- If attributes relating to contents of an LPN are not specified then
1047     -- display all the LPNs in that location with the appropriate from
1048     -- and to LPN criteria
1049 
1050       BEGIN
1051          SELECT sum(inbound)
1052                ,sum(onhand)
1053                ,sum(receiving)
1054     	    INTO  l_inbound_qty
1055                ,l_onhand_qty
1056                ,l_rcv_qty
1057           FROM mtl_mwb_gtmp;
1058       EXCEPTION
1059       WHEN NO_DATA_FOUND THEN
1060 	      null;
1061       END;
1062 
1063 --      IF inv_mwb_globals.g_chk_inbound = 1  THEN
1064 --      AND l_inbound_qty IS NOT NULL THEN
1065          inb_from_clause := inb_from_clause || ' mtl_supply ms , mtl_parameters mp  ';
1066          inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = mp.organization_id ';
1067          inb_where_clause := inb_where_clause ||' AND ms.destination_type_code = ''INVENTORY'' ';
1068 
1069          IF inv_mwb_globals.g_po_header_id IS NOT NULL
1070          OR inv_mwb_globals.g_vendor_id IS NOT NULL
1071          OR inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL
1072          OR inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1073 
1074             inb_from_clause := inb_from_clause || ' , po_headers_all pha ';
1075             inb_where_clause := inb_where_clause ||' AND pha.po_header_id = ms.po_header_id ';
1076             inb_where_clause := inb_where_clause ||' AND pha.authorization_status = ''APPROVED'' ';
1077 
1078 /*            IF inv_mwb_globals.g_include_po_without_asn = 1 THEN
1079                inb_where_clause := inb_where_clause ||' AND ms.supply_type_code IN (''PO'',''SHIPMENT'') ';
1080             ELSIF inv_mwb_globals.g_include_po_without_asn = 0 THEN
1081                inb_where_clause := inb_where_clause ||' AND ms.supply_type_code = ''SHIPMENT'' ';
1082             END IF;
1083 */
1084             IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
1085                inb_where_clause := inb_where_clause ||' AND pha.vendor_id = :inb_vendor_id ';
1086                IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
1087                   inb_where_clause := inb_where_clause ||' AND pha.vendor_site_id = :inb_vendor_site_id ';
1088                END IF;
1089             END IF;
1090 
1091             IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1092                inb_from_clause := inb_from_clause || ' , po_lines_all pla ';
1093                inb_where_clause := inb_where_clause ||' AND pla.po_line_id = ms.po_line_id ';
1094                inb_where_clause := inb_where_clause ||' AND pla.vendor_product_num = :inb_vendor_item ';
1095             END IF;
1096 
1097             IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
1098                inb_where_clause := inb_where_clause ||' AND ms.po_header_id = :inb_po_header_id ';
1099                inb_where_clause := inb_where_clause ||' AND ms.supply_type_code = ''PO'' ';
1100             END IF;
1101 
1102             IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
1103                inb_where_clause := inb_where_clause ||' AND ms.po_release_id = :inb_po_release_id ';
1104             END IF;
1105 
1106             IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
1107                inb_from_clause := inb_from_clause || ' , rcv_shipment_headers rsh ';
1108                inb_where_clause := inb_where_clause ||' AND rsh.shipment_header_id(+) = ms.shipment_header_id ';
1109                inb_where_clause := inb_where_clause ||' AND rsh.shipment_header_id = :inb_shipment_header_id_asn ';
1110             END IF;
1111 
1112             IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1113                inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = :inb_to_organization_id ';
1114             END IF;
1115 
1116             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1117                inb_where_clause := inb_where_clause ||' AND ms.item_id = :inb_item_id ';
1118             END IF;
1119 
1120             IF inv_mwb_globals.g_revision IS NOT NULL THEN
1121                inb_where_clause := inb_where_clause ||' AND ms.item_revision = :inb_item_revision ';
1122             END IF;
1123 
1124             IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1125                inb_where_clause := inb_where_clause ||' AND ms.cost_group_id = :inb_cost_group_id ';
1126             END IF;
1127 
1128             IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1129                inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1130                inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1131                inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date = :inb_expected_from_date ';
1132             END IF;
1133 
1134             IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1135                inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date >= :inb_expected_from_date ';
1136             END IF;
1137 
1138             IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1139                inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date <= :inb_expected_to_date ';
1140             END IF;
1141 
1142             IF inv_mwb_globals.g_inventory_item_id IS NULL
1143             AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1144                 inb_from_clause := inb_from_clause || ' , mtl_system_items_kfv msik ';
1145                 inb_where_clause := inb_where_clause ||' AND ms.item_id = msik.inventory_item_id ';
1146                 inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = msik.organization_id ';
1147                 inb_where_clause := inb_where_clause ||' AND msik.description like :inb_item_description ';
1148             END IF;
1149 
1150          ELSIF inv_mwb_globals.g_source_org_id IS NOT NULL
1151          OR inv_mwb_globals.g_req_header_id IS NOT NULL
1152          OR inv_mwb_globals.g_internal_order_id IS NOT NULL
1153          OR inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1154 
1155             inb_from_clause := inb_from_clause || ' , rcv_shipment_headers rsh ';
1156             inb_from_clause := inb_from_clause || ' , rcv_shipment_lines rsl ';
1157             inb_where_clause := inb_where_clause ||' AND  rsh.shipment_header_id(+) = ms.shipment_header_id ';
1158             inb_where_clause := inb_where_clause ||' AND  rsl.shipment_line_id(+) = ms.shipment_line_id ';
1159             inb_where_clause := inb_where_clause ||' AND  ms.supply_type_code IN (''REQ'',''SHIPMENT'') ';
1160             inb_where_clause := inb_where_clause ||' AND  rsh.asn_type IS NULL ';
1161 
1162             IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1163                inb_where_clause := inb_where_clause ||' AND  rsh.shipment_header_id = :inb_shipment_header_id ';
1164                inb_where_clause := inb_where_clause ||' AND  ms.supply_type_code = ''SHIPMENT'' ';
1165             ELSIF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
1166                inb_where_clause := inb_where_clause ||' AND  ms.req_header_id = :inb_req_header_id ';
1167                inb_where_clause := inb_where_clause ||' AND  ms.supply_type_code = ''REQ'' ';
1168             END IF;
1169 
1170             IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
1171                inb_where_clause := inb_where_clause ||' AND  ms.from_organization_id = :inb_from_organization_id ';
1172             END IF;
1173 
1174             IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1175                inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = :inb_to_organization_id';
1176             END IF;
1177 
1178             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1179                inb_where_clause := inb_where_clause ||' AND ms.item_id = :inb_item_id';
1180             END IF;
1181 
1182             IF inv_mwb_globals.g_revision IS NOT NULL THEN
1183               inb_where_clause := inb_where_clause ||' AND ms.item_revision = :inb_item_revision';
1184             END IF;
1185 
1186             IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1187                inb_where_clause := inb_where_clause ||' AND ms.cost_group_id = :inb_cost_group_id';
1188             END IF;
1189 
1190             IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1191                inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1192                inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1193                inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date = :inb_expected_from_date';
1194             END IF;
1195 
1196             IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1197                inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date >= :inb_expected_from_date';
1198             END IF;
1199 
1200             IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1201                inb_where_clause := inb_where_clause ||' AND ms.expected_delivery_date <= :inb_expected_to_date';
1202             END IF;
1203 
1204             IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
1205             OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
1206                inb_from_clause := inb_from_clause || ' , wms_license_plate_numbers wlpn ';
1207                inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
1208             END IF;
1209 
1210             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1211             inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1212             inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1213                inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = :inb_lpn_from_id';
1214             END IF;
1215 
1216             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1217             inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1218                inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number >= :inb_lpn_from';
1219             END IF;
1220 
1221             IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1222             inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1223                inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number <= :inb_lpn_to';
1224             END IF;
1225 
1226             IF inv_mwb_globals.g_lot_from IS NOT NULL
1227             OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
1228                inb_from_clause := inb_from_clause || ' ,  rcv_lots_supply rls ';
1229                inb_where_clause := inb_where_clause ||' AND rls.shipment_line_id = ms.shipment_line_id ';
1230                inb_where_clause := inb_where_clause ||' AND rls.supply_type_code = ''SHIPMENT''';
1231             END IF;
1232 
1233             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1234             inv_mwb_globals.g_lot_to IS NOT NULL AND
1235             inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1236                inb_where_clause := inb_where_clause ||' AND rls.lot_num = :inb_lot_from';
1237             END IF;
1238 
1239             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1240             inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1241               inb_where_clause := inb_where_clause ||' AND rls.lot_num >= :inb_lot_from';
1242             END IF;
1243 
1244             IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1245             inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1246               inb_where_clause := inb_where_clause ||' AND rls.lot_num <= :inb_lot_to';
1247             END IF;
1248 
1249             IF inv_mwb_globals.g_serial_from IS NOT NULL
1250             OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
1251                inb_from_clause := inb_from_clause || ' ,  rcv_serials_supply rss ';
1252                inb_where_clause := inb_where_clause ||' AND rss.shipment_line_id = ms.shipment_line_id ';
1253                inb_where_clause := inb_where_clause ||' AND rss.supply_type_code = ''SHIPMENT''';
1254             END IF;
1255 
1256             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1257                inv_mwb_globals.g_serial_to IS NOT NULL AND
1258                inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1259                inb_where_clause := inb_where_clause ||' AND rss.serial_num = :inb_serial_from';
1260             END IF;
1261 
1262             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1263                inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1264                inb_where_clause := inb_where_clause ||' AND rss.serial_num >= :inb_serial_from';
1265             END IF;
1266 
1267             IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1268                inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1269                inb_where_clause := inb_where_clause ||' AND rss.serial_num <= :inb_serial_to';
1270             END IF;
1271 
1272             IF inv_mwb_globals.g_inventory_item_id IS NULL
1273             AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1274                inb_from_clause := inb_from_clause || ' ,  mtl_system_items_kfv msik ';
1275                inb_where_clause := inb_where_clause ||' AND  ms.item_id = msik.inventory_item_id ';
1276                inb_where_clause := inb_where_clause ||' AND  ms.to_organization_id = msik.organization_id ';
1277                inb_where_clause := inb_where_clause ||' AND  msik.description like :inb_item_description ';
1278             END IF;
1279          ELSE -- If interorg and supplier tab null
1280 
1281             IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1282                inb_where_clause := inb_where_clause ||' AND ms.to_organization_id = :inb_to_organization_id';
1283             END IF;
1284 
1285             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1286                inb_where_clause := inb_where_clause ||' AND ms.item_id = :inb_item_id';
1287             END IF;
1288 
1289             IF inv_mwb_globals.g_revision IS NOT NULL THEN
1290               inb_where_clause := inb_where_clause ||' AND ms.item_revision = :inb_item_revision';
1291             END IF;
1292 
1293             IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1294                inb_where_clause := inb_where_clause ||' AND ms.cost_group_id = :inb_cost_group_id';
1295             END IF;
1296 
1297             IF inv_mwb_globals.g_lpn_from_id IS NOT NULL
1298             OR inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
1299                inb_from_clause := inb_from_clause || ' ,  rcv_shipment_lines rsl ';
1300                inb_where_clause := inb_where_clause ||' AND rsl.shipment_line_id = ms.shipment_line_id';
1301                inb_from_clause := inb_from_clause || ' , wms_license_plate_numbers wlpn ';
1302                inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = wlpn.lpn_id ';
1303             END IF;
1304 
1305             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1306             inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1307             inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1308                inb_where_clause := inb_where_clause ||' AND rsl.asn_lpn_id = :inb_lpn_from_id';
1309             END IF;
1310 
1311             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1312             inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1313                inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number >= :inb_lpn_from';
1314             END IF;
1315 
1316             IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1317             inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1318                inb_where_clause := inb_where_clause ||' AND wlpn.license_plate_number <= :inb_lpn_to';
1319             END IF;
1320 
1321             IF inv_mwb_globals.g_lot_from IS NOT NULL
1322             OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
1323                inb_from_clause := inb_from_clause || ' ,  rcv_lots_supply rls ';
1324                inb_where_clause := inb_where_clause ||' AND rls.shipment_line_id = ms.shipment_line_id ';
1325                inb_where_clause := inb_where_clause ||' AND rls.supply_type_code = ''SHIPMENT''';
1326             END IF;
1327 
1328             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1329             inv_mwb_globals.g_lot_to IS NOT NULL AND
1330             inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1331                inb_where_clause := inb_where_clause ||' AND rls.lot_num = :inb_lot_from';
1332             END IF;
1333 
1334             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1335             inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1336               inb_where_clause := inb_where_clause ||' AND rls.lot_num >= :inb_lot_from';
1337             END IF;
1338 
1339             IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1340             inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1341               inb_where_clause := inb_where_clause ||' AND rls.lot_num <= :inb_lot_to';
1342             END IF;
1343 
1344             IF inv_mwb_globals.g_serial_from IS NOT NULL
1345             OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
1346                inb_from_clause := inb_from_clause || ' ,  rcv_serials_supply rss ';
1347                inb_where_clause := inb_where_clause ||' AND rss.shipment_line_id = ms.shipment_line_id ';
1348                inb_where_clause := inb_where_clause ||' AND rss.supply_type_code = ''SHIPMENT'' ';
1349             END IF;
1350 
1351             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1352                inv_mwb_globals.g_serial_to IS NOT NULL AND
1353                inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1354                inb_where_clause := inb_where_clause ||' AND rss.serial_num = :inb_serial_from';
1355             END IF;
1356 
1357             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1358                inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1359                inb_where_clause := inb_where_clause ||' AND rss.serial_num >= :inb_serial_from';
1360             END IF;
1361 
1362             IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1363                inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1364                inb_where_clause := inb_where_clause ||' AND rss.serial_num <= :inb_serial_to';
1365             END IF;
1366 
1367             IF inv_mwb_globals.g_inventory_item_id IS NULL
1368             AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1369                inb_from_clause := inb_from_clause || ' ,  mtl_system_items_kfv msik ';
1370                inb_where_clause := inb_where_clause ||' AND  ms.item_id = msik.inventory_item_id ';
1371                inb_where_clause := inb_where_clause ||' AND  ms.to_organization_id = msik.organization_id ';
1372                inb_where_clause := inb_where_clause ||' AND  msik.description like :inb_item_description ';
1373             END IF;
1374          END IF;
1375 
1376 
1377     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Here1'||inb_from_clause);
1378 
1379          inb_where_clause := inb_where_clause ||' AND  ms.supply_type_code NOT IN (''RECEIVING'') ';
1380          inb_query_str := inb_select_clause || inb_from_clause || inb_where_clause || inb_orderby_clause;
1381 
1382          inv_mwb_globals.g_last_query := inb_query_str;
1383 
1384 /*         delete from rtest2;
1385          insert into rtest2 values (inb_query_str);
1386          commit;
1387 */
1388 
1389          query_hdl := DBMS_SQL.open_cursor;
1390          DBMS_SQL.parse(query_hdl, inb_query_str, DBMS_SQL.native);
1391 
1392          IF inv_mwb_globals.g_po_header_id IS NOT NULL
1393          OR inv_mwb_globals.g_vendor_id IS NOT NULL
1394          OR inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL
1395          OR inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1396 
1397             IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
1398                DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
1399                IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
1400                   DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
1401                END IF;
1402             END IF;
1403 
1404             IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
1405                DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
1406             END IF;
1407 
1408             IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
1409                DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
1410             END IF;
1411 
1412             IF inv_mwb_globals.g_po_release_id IS NOT NULL THEN
1413                DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
1414             END IF;
1415 
1416             IF inv_mwb_globals.g_shipment_header_id_asn IS NOT NULL THEN
1417                DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id_asn', inv_mwb_globals.g_shipment_header_id_asn);
1418             END IF;
1419 
1420             IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1421                DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1422             END IF;
1423 
1424             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1425                DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
1426             END IF;
1427 
1428             IF inv_mwb_globals.g_revision IS NOT NULL THEN
1429                DBMS_SQL.bind_variable(query_hdl, 'inb_item_revision', inv_mwb_globals.g_revision);
1430             END IF;
1431 
1432             IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1433                DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
1434             END IF;
1435 
1436             IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1437                inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1438                inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1439                DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1440             END IF;
1441 
1442             IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1443                DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1444             END IF;
1445 
1446             IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1447                DBMS_SQL.bind_variable(query_hdl, 'inb_expected_to_date', inv_mwb_globals.g_expected_to_date);
1448             END IF;
1449 
1450             IF inv_mwb_globals.g_inventory_item_id IS NULL
1451             AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1452                DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
1453             END IF;
1454 
1455          ELSIF inv_mwb_globals.g_source_org_id IS NOT NULL
1456          OR inv_mwb_globals.g_req_header_id IS NOT NULL
1457          OR inv_mwb_globals.g_internal_order_id IS NOT NULL
1458          OR inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1459 
1460 
1461             IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL THEN
1462                DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', inv_mwb_globals.g_shipment_header_id_interorg);
1463             ELSIF inv_mwb_globals.g_req_header_id IS NOT NULL THEN
1464                DBMS_SQL.bind_variable(query_hdl, 'inb_req_header_id', inv_mwb_globals.g_req_header_id);
1465             END IF;
1466 
1467             IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
1468                DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
1469             END IF;
1470 
1471             IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1472                DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1473             END IF;
1474 
1475             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1476                DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
1477             END IF;
1478 
1479             IF inv_mwb_globals.g_revision IS NOT NULL THEN
1480               DBMS_SQL.bind_variable(query_hdl, 'inb_item_revision', inv_mwb_globals.g_revision);
1481             END IF;
1482 
1483             IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1484                DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
1485             END IF;
1486 
1487             IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
1488                inv_mwb_globals.g_expected_to_date IS NOT NULL AND
1489                inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
1490                DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1491             END IF;
1492 
1493             IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
1494                DBMS_SQL.bind_variable(query_hdl, 'inb_expected_from_date', inv_mwb_globals.g_expected_from_date);
1495             END IF;
1496 
1497             IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
1498                DBMS_SQL.bind_variable(query_hdl, 'inb_expected_to_date', inv_mwb_globals.g_expected_to_date);
1499             END IF;
1500 
1501             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1502             inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1503             inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1504                DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
1505             END IF;
1506 
1507             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1508             inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1509                DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
1510             END IF;
1511 
1512             IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1513             inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1514                DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
1515             END IF;
1516 
1517 
1518             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1519             inv_mwb_globals.g_lot_to IS NOT NULL AND
1520             inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1521                DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1522             END IF;
1523 
1524             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1525             inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1526               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1527             END IF;
1528 
1529             IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1530             inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1531               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
1532             END IF;
1533 
1534             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1535                inv_mwb_globals.g_serial_to IS NOT NULL AND
1536                inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1537                DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1538             END IF;
1539 
1540             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1541                inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1542                DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1543             END IF;
1544 
1545             IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1546                inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1547                DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
1548             END IF;
1549 
1550             IF inv_mwb_globals.g_inventory_item_id IS NULL
1551             AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1552                DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
1553             END IF;
1554          ELSE -- If interorg and supplier tab null
1555     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Here2');
1556             IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1557                DBMS_SQL.bind_variable(query_hdl, 'inb_to_organization_id', inv_mwb_globals.g_organization_id);
1558             END IF;
1559 
1560             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1561                DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
1562             END IF;
1563 
1564             IF inv_mwb_globals.g_revision IS NOT NULL THEN
1565               DBMS_SQL.bind_variable(query_hdl, 'inb_item_revision', inv_mwb_globals.g_revision);
1566             END IF;
1567 
1568             IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1569                DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
1570             END IF;
1571 
1572             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1573             inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1574             inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
1575                DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
1576             END IF;
1577 
1578             IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
1579             inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
1580                DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
1581             END IF;
1582 
1583             IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
1584             inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
1585                DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
1586             END IF;
1587 
1588             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1589             inv_mwb_globals.g_lot_to IS NOT NULL AND
1590             inv_mwb_globals.g_lot_from = inv_mwb_globals.g_lot_to) THEN
1591                DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1592             END IF;
1593 
1594             IF (inv_mwb_globals.g_lot_from IS NOT NULL AND
1595             inv_mwb_globals.g_lot_from <> NVL(inv_mwb_globals.g_lot_to, -1) ) THEN
1596               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
1597             END IF;
1598 
1599             IF (inv_mwb_globals.g_lot_to IS NOT NULL AND
1600             inv_mwb_globals.g_lot_to <> NVL(inv_mwb_globals.g_lot_from, -1) ) THEN
1601               inb_where_clause := inb_where_clause ||' AND rls.lot_num <= :inb_lot_to';
1602               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
1603             END IF;
1604 
1605             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1606                inv_mwb_globals.g_serial_to IS NOT NULL AND
1607                inv_mwb_globals.g_serial_from = inv_mwb_globals.g_serial_to) THEN
1608                DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1609             END IF;
1610 
1611             IF (inv_mwb_globals.g_serial_from IS NOT NULL AND
1612                inv_mwb_globals.g_serial_from <> NVL(inv_mwb_globals.g_serial_to, -1) ) THEN
1613                DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
1614             END IF;
1615 
1616             IF (inv_mwb_globals.g_serial_to IS NOT NULL AND
1617                inv_mwb_globals.g_serial_to <> NVL(inv_mwb_globals.g_serial_from, -1) ) THEN
1618                DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
1619             END IF;
1620 
1621             IF inv_mwb_globals.g_inventory_item_id IS NULL
1622             AND inv_mwb_globals.g_item_description IS NOT NULL THEN
1623                DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
1624             END IF;
1625          END IF;
1626 
1627       DBMS_SQL.define_column(query_hdl, 1, org_code, 3);
1628       DBMS_SQL.define_column(query_hdl, 2, org_id);
1629 
1630       BEGIN
1631          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
1632       EXCEPTION
1633          WHEN NO_DATA_FOUND THEN
1634             NULL;
1635 --               RETURN;
1636          WHEN OTHERS THEN
1637             RAISE;
1638       END;
1639 
1640       LOOP
1641       -- fetch a row
1642          IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
1643             DBMS_SQL.column_value(query_hdl, 1, org_code);
1644             DBMS_SQL.column_value(query_hdl, 2, org_id);
1645 
1646             IF j >= inv_mwb_globals.g_tree_node_low_value THEN
1647                x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
1648                x_node_tbl(i).DEPTH  := 1;
1649                x_node_tbl(i).label  := org_code;
1650                x_node_tbl(i).icon   := 'inv_inor';
1651                x_node_tbl(i).VALUE  := TO_CHAR(org_id);
1652                x_node_tbl(i).TYPE   := 'ORG';
1653                i                    := i + 1;
1654             END IF;
1655                EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
1656                j  := j + 1;
1657             ELSE
1658                EXIT;
1659             END IF;
1660       END LOOP;
1661 
1662          DBMS_SQL.close_cursor(query_hdl); -- close cursor
1663          x_node_value    := j;
1664          x_tbl_index     := i;
1665 
1666 --   END IF; -- Inbound checkbox selected
1667 
1668 --   IF inv_mwb_globals.g_chk_receiving = 1 THEN
1669       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
1670          is_grade_t     := TRUE ;
1671       END IF ;
1672    -- NSRIVAST, INVCONV, End
1673 
1674       IF inv_mwb_globals.g_inventory_item_id IS NULL
1675       AND inv_mwb_globals.g_revision IS NULL
1676       AND inv_mwb_globals.g_parent_lot IS NULL			--BUG 7556505
1677       AND inv_mwb_globals.g_lot_from IS NULL
1678       AND inv_mwb_globals.g_lot_to IS NULL
1679       AND inv_mwb_globals.g_serial_from IS NULL
1680       AND inv_mwb_globals.g_serial_to IS NULL
1681       AND inv_mwb_globals.g_serial_controlled = 0   -- Bug #3411938
1682       AND inv_mwb_globals.g_lot_controlled = 0
1683       AND inv_mwb_globals.g_cost_group_id IS NULL
1684       AND inv_mwb_globals.g_status_id IS NULL
1685       AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
1686       AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
1687       AND inv_mwb_globals.g_unit_number IS NULL
1688       AND inv_mwb_globals.g_project_id IS NULL
1689       AND inv_mwb_globals.g_task_id IS NULL
1690       AND inv_mwb_globals.g_planning_org IS NULL
1691       AND inv_mwb_globals.g_owning_org IS NULL
1692       AND( nvl(inv_mwb_globals.g_prepacked,1) <> 1
1693            OR inv_mwb_globals.g_lpn_from IS NOT NULL
1694            OR inv_mwb_globals.g_lpn_to IS NOT NULL)
1695       --ER(3338592) Changes
1696       AND inv_mwb_globals.g_item_description IS NULL
1697       AND inv_mwb_globals.g_qty_from         IS NULL
1698       AND inv_mwb_globals.g_qty_to           IS NULL
1699       THEN
1700       --End of ER Changes
1701 
1702          query_str  := 'SELECT mp.organization_id, mp.organization_code  ';
1703          query_str  := query_str || 'from mtl_parameters mp where organization_id in ';
1704          query_str  := query_str || '(select organization_id ';
1705          query_str  := query_str || 'FROM wms_license_plate_numbers WHERE 1=1 ';
1706 
1707          IF inv_mwb_globals.g_tree_mat_loc_id = 2
1708          OR inv_mwb_globals.g_chk_receiving = 1 THEN
1709             query_str  := query_str || ' AND lpn_context = 3 ';
1710          ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
1711             query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11) ';
1712          ELSIF inv_mwb_globals.g_prepacked = 1 THEN
1713             query_str  := query_str || ' AND (lpn_context = 1) ';
1714          ELSIF inv_mwb_globals.g_prepacked <> 1
1715          AND inv_mwb_globals.g_prepacked <> 999
1716          AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
1717             query_str  := query_str || ' AND lpn_context = :prepacked ';
1718          END IF;
1719 
1720          IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
1721            query_str  := query_str || ' AND locator_id = :loc_id ';
1722          END IF;
1723 
1724          -- NSRIVAST, INVCONV, Start
1725          IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
1726             query_str := query_str || ' AND grade_code = :grade_f ' ;
1727          END IF ;
1728          IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
1729             query_str := query_str || ' AND grade_code = :grade_c ' ;
1730          END IF ;
1731          -- NSRIVAST, INVCONV, End
1732 
1733          IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
1734            query_str  := query_str || ' AND subinventory_code = :sub ';
1735          END IF;
1736 
1737          IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
1738            query_str  := query_str || ' AND organization_id = :org_id ';
1739          END IF;
1740 
1741          --bugfix#3646484
1742          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
1743          --User is querying for single LPN so converted the range query to equality query
1744             query_str := query_str || 'and license_plate_number = :lpn_f ';
1745          ELSE
1746             IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
1747               query_str  := query_str || 'and license_plate_number >= :lpn_f ';
1748             END IF;
1749 
1750             IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
1751               query_str  := query_str || 'and license_plate_number <= :lpn_t ';
1752             END IF;
1753          END IF;
1754 
1755          query_str  := query_str || ') ORDER BY organization_code ';
1756       ELSE
1757          query_str  := ' SELECT mp.organization_id, mp.organization_code FROM mtl_parameters mp ';
1758          query_str  := query_str || ' WHERE exists ( ';
1759 
1760          -- Need to use MTL_ONHAND_TOTAL_V
1761          IF (
1762              inv_mwb_globals.g_serial_from IS NULL
1763          AND inv_mwb_globals.g_serial_to IS NULL
1764          AND inv_mwb_globals.g_unit_number IS NULL
1765          AND inv_mwb_globals.g_status_id IS NULL
1766          AND inv_mwb_globals.g_lpn_from IS NULL
1767          AND inv_mwb_globals.g_lpn_to IS NULL
1768          AND nvl(inv_mwb_globals.g_prepacked,1) = 1
1769          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
1770          ) THEN
1771 
1772             IF  NVL(inv_mwb_globals.g_chk_receiving,0) = 1 THEN
1773                table_required  := ' mtl_rcv_mwb_onhand_v v ';
1774             ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
1775                table_required  := ' mtl_onhand_total_mwb_v v ';
1776                IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
1777                   table_required  := ' mtl_onhand_total_v v ';  -- NSRIVAST, INVCONV
1778                END IF;
1779             ELSE
1780                table_required  := ' mtl_onhand_total_v v ';
1781             END IF;
1782 
1783 	 --bug 6633612
1784 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
1785 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
1786 	END IF;
1787 	--bug 6633612
1788 
1789             IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN	--7556505
1790                query_str  := query_str || 'SELECT v.organization_id from ' || table_required;
1791                query_str  := query_str || 'WHERE 1=1 ';
1792             ELSE
1793                query_str  :=
1794                    query_str
1795                 || ' SELECT v.organization_id from'
1796 		|| ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
1797                 || inv_mwb_globals.g_tree_lot_attr_query
1798                 || ' ) mln, '
1799                 || table_required;
1800                query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
1801 	       	--BUG 7556505
1802 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
1803 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
1804 	           END IF;
1805 		--BUG 7556505
1806             END IF;
1807 
1808             --ER(3338592) Changes (If the user gives the value for the Qty then only
1809             --Group by clause comes in to effect)
1810 
1811             IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
1812                group_str := ' GROUP BY  v.organization_id  ';
1813             END IF;
1814 
1815             IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
1816                query_str  := query_str || ' AND v.subinventory_code = :sub ';
1817                --ER(3338592) Changes
1818                IF group_str IS NOT NULL THEN
1819                   group_str := group_str || ' , v.subinventory_code  ' ;
1820                END IF;
1821             END IF;
1822 
1823             IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
1824              --ER(3338592) Changes
1825                IF group_str IS NOT NULL THEN
1826                   group_str := group_str || ' , v.subinventory_code  ' ;
1827                END IF;
1828             END IF;
1829 
1830             IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
1831                query_str  := query_str || ' AND v.locator_id = :loc_id ';
1832                --ER(3338592) Changes
1833                IF group_str IS NOT NULL THEN
1834                   group_str := group_str || ' , v.locator_id  ' ;
1835                END IF;
1836             END IF;
1837 
1838     	--bug 6633612
1839 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
1840 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
1841 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
1842 					 || ' AND rt.organization_id = mmt.organization_id '
1843 					 || ' AND rt.transaction_type = ''DELIVER'''
1844 					 || ' AND rt.destination_type_code = ''INVENTORY'''
1845 					 || ' AND mmt.transaction_id = v.create_transaction_id '
1846 					 || ' AND mmt.organization_id = v.organization_id ';
1847 
1848 	END IF;
1849 	--bug 6633612
1850 
1851             -- NSRIVAST, INVCONV, Start
1852             IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
1853                query_str := query_str || ' AND v.grade_code = :grade_f ' ;
1854             END IF ;
1855             IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
1856                query_str := query_str || ' AND v.grade_code = :grade_c ' ;
1857             END IF ;
1858             -- NSRIVAST, INVCONV, End
1859 
1860             IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
1861             --ER(3338592) Changes
1862                IF group_str IS NOT NULL THEN
1863                   group_str := group_str || ' , v.locator_id  ' ;
1864                END IF;
1865             END IF;
1866 
1867             IF inv_mwb_globals.g_project_id IS NOT NULL THEN
1868                query_str  := query_str || ' AND v.project_id = :pr_id ';
1869               --ER(3338592) Changes
1870                IF group_str IS NOT NULL THEN
1871                   group_str := group_str || ' , v.project_id  ' ;
1872                END IF;
1873             END IF;
1874 
1875             IF inv_mwb_globals.g_task_id IS NOT NULL THEN
1876                query_str  := query_str || ' AND v.task_id = :ta_id ';
1877                --ER(3338592) Changes
1878                IF group_str IS NOT NULL THEN
1879                   group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
1880                END IF;
1881             END IF;
1882 
1883             IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
1884                query_str  := query_str || ' AND v.inventory_item_id = :item_id ';
1885             END IF;
1886 
1887         --Bug # 3411938
1888         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
1889           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
1890            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
1891         END IF;
1892 
1893         --ER(3338592) Changes
1894         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
1895            query_str := query_str || ' AND v.item_description LIKE :item_description ';
1896         END IF;
1897 
1898         IF inv_mwb_globals.g_revision IS NOT NULL THEN
1899           query_str  := query_str || ' AND v.revision = :rev ';
1900           --ER(3338592) Changes
1901           IF group_str IS NOT NULL THEN
1902              group_str := group_str || ' , v.revision  ' ;
1903           END IF;
1904         END IF;
1905 
1906         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
1907           query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
1908           --End of ER Changes
1909           IF group_str IS NOT NULL THEN
1910              group_str := group_str || ' , v.cost_group_id  ' ;
1911           END IF;
1912         END IF;
1913 
1914         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
1915           query_str  := query_str || ' AND v.lot_number >= :lot_f ';
1916         END IF;
1917 
1918         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
1919           query_str  := query_str || ' AND v.lot_number <= :lot_t ';
1920         END IF;
1921 
1922         IF inv_mwb_globals.g_lot_controlled = 2 THEN
1923           query_str  := query_str ||  ' AND v.lot_number is not null ';
1924         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
1925           query_str  := query_str || ' AND v.lot_number is null ';
1926         END IF;
1927 
1928         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
1929         -- from onhand table (MOQD)
1930         if (l_default_status_id is not null) then
1931           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
1932              query_str  := query_str || ' AND v.onhand_status_id = :st_id ';
1933           ELSE
1934             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
1935                query_str  := query_str || ' AND v.onhand_status_id = :st_id ';
1936             END IF;
1937           END IF;
1938         else
1939           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
1940             query_str  := query_str || ' AND (v.subinventory_status_id = :st_id ';
1941             query_str  := query_str || ' OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
1942           END IF;
1943         end if;
1944 
1945         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
1946            IF inv_mwb_globals.g_containerized = 1 THEN
1947               query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
1948            ELSIF inv_mwb_globals.g_containerized = 2 THEN
1949               query_str  := query_str || ' AND v.containerized_flag = 1 ';
1950            END IF;
1951         END IF;
1952 
1953         IF inv_mwb_globals.g_serial_controlled = 1 THEN
1954           --query_str  := query_str || 'AND serial_number_control_code not in (2,5) ';
1955           query_str  := query_str || ' AND v.item_serial_control not in (2,5) ';
1956         ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
1957           --query_str  := query_str || 'AND serial_number_control_code in (2,5) ';
1958           query_str  := query_str || ' AND v.item_serial_control in (2,5) ';
1959         END IF;
1960 
1961         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
1962           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
1963           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
1964         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
1965           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
1966           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
1967         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
1968           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
1969         END IF;
1970 
1971         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
1972           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
1973           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
1974         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
1975           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
1976           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
1977         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
1978           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
1979         END IF;
1980 
1981         --Bug #3411938
1982         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
1983            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
1984            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
1985            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
1986         END IF;
1987 
1988         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
1989            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
1990         END IF;
1991 
1992         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
1993            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
1994         END IF;
1995 
1996         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
1997           query_str := query_str || ' AND v.organization_id = mp.organization_id  ';
1998           query_str := query_str || group_str || having_str || ' ) ' ;
1999         ELSE
2000           query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
2001         END IF;
2002 
2003         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2004           query_str  := query_str || 'and mp.organization_id = :org_id  ';
2005         --Bug #3411938
2006         ELSE
2007           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
2008           query_str  := query_str || ' FROM org_access_view oav ' ;
2009           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
2010           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
2011           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
2012         END IF;
2013 
2014         query_str  := query_str || ' ORDER BY organization_code ';
2015 
2016       --Need to use MTL_ONHAND_SERIAL_V
2017 
2018       ELSIF(
2019             (
2020              inv_mwb_globals.g_serial_from IS NOT NULL
2021              OR inv_mwb_globals.g_serial_from IS NOT NULL
2022              OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
2023              OR inv_mwb_globals.g_unit_number IS NOT NULL
2024             )
2025             AND inv_mwb_globals.g_lpn_from IS NULL
2026             AND inv_mwb_globals.g_lpn_to IS NULL
2027             AND nvl(inv_mwb_globals.g_prepacked,1) = 1
2028            ) THEN
2029         IF inv_mwb_globals.g_tree_mat_loc_id = 2
2030         OR inv_mwb_globals.g_chk_receiving = 1 THEN
2031           table_required  := ' mtl_rcv_serial_oh_v v ';
2032         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
2033           table_required  := ' mtl_onhand_serial_mwb_v v ';
2034             IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
2035                table_required  := ' mtl_onhand_serial_v v ';  -- NSRIVAST, INVCONV
2036             END IF ;
2037         ELSE
2038           table_required  := ' mtl_onhand_serial_v v ';
2039         END IF;
2040 
2041 	--bug 6633612
2042 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2043 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
2044 	END IF;
2045 	--bug 6633612
2046 
2047         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)		--BUG 7556505
2048            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2049           query_str  := query_str || ' SELECT v.organization_id from ' || table_required;
2050           query_str  := query_str || ' WHERE 1=1 ';
2051         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)		--BUG 7556505
2052               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
2053           query_str  :=
2054                 query_str
2055              || ' SELECT v.organization_id from'
2056              || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
2057              || inv_mwb_globals.g_tree_serial_attr_query
2058              || ') msn, '
2059              || table_required;
2060           query_str  := query_str || ' WHERE msn.serial_num = v.serial_number ';
2061         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)	--BUG 7556505
2062               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2063           query_str  :=
2064                 query_str
2065              || ' SELECT v.organization_id from'
2066              || ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
2067              || inv_mwb_globals.g_tree_lot_attr_query
2068              || ' ) mln, '
2069              || table_required;
2070           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
2071 	       	--BUG 7556505
2072 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2073 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2074 	           END IF;
2075 		--BUG 7556505
2076 	ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)	--BUG 7556505
2077               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
2078           query_str  :=
2079                 query_str
2080              || ' SELECT v.organization_id from'
2081              || ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
2082              || inv_mwb_globals.g_tree_lot_attr_query
2083              || ' ) mln, '
2084              || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
2085              || inv_mwb_globals.g_tree_serial_attr_query
2086              || ' ) msn, '
2087              || table_required;
2088           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
2089 	       	--BUG 7556505
2090 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2091 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2092 	           END IF;
2093 		--BUG 7556505
2094           query_str  := query_str || ' AND msn.serial_num = v.serial_number ';
2095         END IF;
2096 
2097         --ER(3338592) Changes (If the user gives the value for the Qty then only
2098         --Group by clause comes in to effect)
2099 
2100         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2101            group_str := ' GROUP BY  v.organization_id ';
2102         END IF;
2103 
2104         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2105           query_str  := query_str || ' AND v.subinventory_code = :sub ';
2106           --ER(3338592) Changes
2107           IF group_str IS NOT NULL THEN
2108              group_str := group_str || ' , v.subinventory_code  ' ;
2109           END IF;
2110         END IF;
2111 
2112         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
2113           --ER(3338592) Changes
2114           IF group_str IS NOT NULL THEN
2115              group_str := group_str || ' , v.subinventory_code  ' ;
2116           END IF;
2117         END IF;
2118 
2119         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2120           query_str  := query_str || ' AND v.locator_id = :loc_id ';
2121           --ER(3338592) Changes
2122           IF group_str IS NOT NULL THEN
2123              group_str := group_str || '  , v.locator_id  ' ;
2124           END IF;
2125         END IF;
2126 
2127 	--bug 6633612
2128 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2129 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
2130 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
2131 					 || ' AND rt.organization_id = mmt.organization_id '
2132 					 || ' AND rt.transaction_type = ''DELIVER'''
2133 					 || ' AND rt.destination_type_code = ''INVENTORY'''
2134 					 || ' AND mmt.transaction_id = v.last_transaction_id '
2135 					 || ' AND mmt.organization_id = v.organization_id ';
2136 
2137 	END IF;
2138 	--bug 6633612
2139 
2140   -- NSRIVAST, INVCONV, Start
2141       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
2142          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
2143       END IF ;
2144       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
2145          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
2146       END IF ;
2147    -- NSRIVAST, INVCONV, End
2148 
2149         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
2150           --ER(3338592) Changes
2151           IF group_str IS NOT NULL THEN
2152              group_str := group_str || ' , v.locator_id  ' ;
2153           END IF;
2154         END IF;
2155 
2156         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
2157           query_str  := query_str || ' AND v.project_id = :pr_id ';
2158           --ER(3338592) Changes
2159           IF group_str IS NOT NULL THEN
2160              group_str := group_str || ' , v.project_id  ' ;
2161           END IF;
2162         END IF;
2163 
2164         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
2165           query_str  := query_str || ' AND v.task_id = :ta_id ';
2166           --ER(3338592) Changes
2167           IF group_str IS NOT NULL THEN
2168              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
2169           END IF;
2170         END IF;
2171 
2172         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2173           query_str  := query_str || ' AND v.inventory_item_id = :item_id ';
2174         END IF;
2175 
2176         --Bug # 3411938
2177         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
2178           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
2179            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
2180         END IF;
2181 
2182         --ER(3338592) Changes
2183         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
2184            query_str := query_str || ' AND v.item_description LIKE :item_description ';
2185         END IF;
2186 
2187         IF inv_mwb_globals.g_revision IS NOT NULL THEN
2188           query_str  := query_str || ' AND v.revision = :rev ';
2189           --ER(3338592) Changes
2190           IF group_str IS NOT NULL THEN
2191              group_str := group_str || ' , v.revision  ' ;
2192           END IF;
2193         END IF;
2194 
2195         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2196           query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
2197           --ER(3338592) Changes
2198           IF group_str IS NOT NULL THEN
2199              group_str := group_str || ' , v.cost_group_id  ' ;
2200           END IF;
2201         END IF;
2202 
2203         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
2204           query_str  := query_str || ' AND v.lot_number >= :lot_f ';
2205         END IF;
2206 
2207         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
2208           query_str  := query_str || ' AND v.lot_number <= :lot_t ';
2209         END IF;
2210 
2211         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
2212           query_str  := query_str || ' AND v.serial_number >= :serial_f ';
2213         END IF;
2214 
2215         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
2216           query_str  := query_str || ' AND v.serial_number <= :serial_t ';
2217         END IF;
2218 
2219         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
2220           query_str  := query_str || ' AND v.unit_number=:un_id ';
2221         END IF;
2222 
2223         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
2224         -- from serial table (MSN)
2225         if (l_default_status_id is not null) then
2226           IF (inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1)
2227           AND inv_mwb_globals.g_tree_mat_loc_id <> 2
2228              OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
2229             query_str  := query_str || 'AND v.serial_status_id = :st_id ';
2230           END IF;
2231         else
2232           IF (inv_mwb_globals.g_status_id IS NOT NULL)
2233           AND inv_mwb_globals.g_tree_mat_loc_id <> 2
2234             OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
2235             query_str  := query_str || ' AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
2236             query_str  := query_str || ' OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
2237           END IF;
2238         end if;
2239 
2240         IF inv_mwb_globals.g_lot_controlled = 2 THEN
2241           query_str  := query_str || ' AND v.lot_number is not null ';
2242         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
2243           query_str  := query_str || ' AND v.lot_number is null ';
2244         END IF;
2245 
2246         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
2247   	   IF inv_mwb_globals.g_containerized = 1 THEN
2248              query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
2249            ELSIF inv_mwb_globals.g_containerized = 2 THEN
2250              query_str  := query_str || ' AND v.containerized_flag = 1 ';
2251            END IF;
2252         END IF;
2253 
2254 
2255         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
2256            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
2257            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
2258          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
2259            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
2260            query_str := query_str || ' AND  planning_organization_id in ';
2261            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
2262            query_str := query_str || '  where vendor_id = :vendor_id )';
2263         END IF;*/
2264 
2265         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
2266           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
2267           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
2268         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
2269           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
2270           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
2271         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
2272           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
2273         END IF;
2274 
2275         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
2276           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
2277           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
2278         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
2279           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
2280           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
2281         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
2282           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
2283         END IF;
2284 
2285         --Bug #3411938
2286         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2287            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
2288            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
2289            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
2290         END IF;
2291 
2292         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
2293            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
2294         END IF;
2295 
2296         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
2297            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
2298         END IF;
2299 
2300         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2301            query_str := query_str || 'AND v.organization_id = mp.organization_id  ';
2302            query_str := query_str || group_str || having_str || ' ) ' ;
2303         ELSE
2304           query_str := query_str || 'AND v.organization_id = mp.organization_id ) ';
2305         END IF;
2306 
2307         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2308           query_str  := query_str || 'and mp.organization_id = :org_id ';
2309         -- Bug #3411938
2310         ELSE
2311           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
2312           query_str  := query_str || ' FROM org_access_view oav ' ;
2313           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
2314           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
2315           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
2316         END IF;
2317 
2318         query_str  := query_str || ' ORDER BY organization_code ';
2319 
2320       -- Need to use both MTL_ONHAND_TOTAL_V AND MTL_ONHAND_SERIAL_V
2321       ELSIF(
2322             inv_mwb_globals.g_serial_from IS NULL
2323             AND inv_mwb_globals.g_serial_to IS NULL
2324             AND inv_mwb_globals.g_unit_number IS NULL
2325             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
2326             AND inv_mwb_globals.g_status_id IS NOT NULL
2327             AND inv_mwb_globals.g_lpn_from IS NULL
2328             AND inv_mwb_globals.g_lpn_to IS NULL
2329             AND nvl(inv_mwb_globals.g_prepacked,1) = 1
2330            ) THEN
2331         IF (inv_mwb_globals.g_status_id IS NULL) THEN
2332           table_required  := ' mtl_onhand_total_mwb_v v ';
2333 --         ELSIF is_grade_t = TRUE THEN                     -- NSRIVAST, INVCONV
2334 --           table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
2335         ELSE
2336           table_required  := ' mtl_onhand_total_v v ';
2337         END IF;
2338 
2339 	--bug 6633612
2340 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2341 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
2342 	END IF;
2343 	--bug 6633612
2344 
2345         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
2346           query_str  := query_str || 'SELECT v.organization_id from ' || table_required;
2347           query_str  := query_str || 'WHERE 1=1 ';
2348         ELSE
2349           query_str  :=
2350                 query_str
2351              || 'SELECT v.organization_id from'
2352              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
2353              || inv_mwb_globals.g_tree_lot_attr_query
2354              || ') mln, '
2355              || table_required;
2356           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
2357 	  --BUG 7556505
2358 	   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2359 	      query_str  := query_str || 'AND mln.parent_lot_number = :parent_lot ';
2360 	   END IF;
2361           --BUG 7556505
2362         END IF;
2363 
2364         --ER(3338592) Changes (If the user gives the value for the Qty then only
2365         --Group by clause comes in to effect)
2366 
2367         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2368            group_str := ' GROUP BY  v.organization_id ';
2369         END IF;
2370 
2371         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2372           query_str  := query_str || 'AND v.subinventory_code = :sub ';
2373           --ER(3338592) Changes
2374           IF group_str IS NOT NULL THEN
2375              group_str := group_str || ' , v.subinventory_code  ' ;
2376           END IF;
2377         END IF;
2378 
2379 	--bug 6633612
2380 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2381 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
2382 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
2383 					 || ' AND rt.organization_id = mmt.organization_id '
2384 					 || ' AND rt.transaction_type = ''DELIVER'''
2385 					 || ' AND rt.destination_type_code = ''INVENTORY'''
2386 					 || ' AND mmt.transaction_id = v.create_transaction_id '
2387 					 || ' AND mmt.organization_id = v.organization_id ';
2388 
2389 	END IF;
2390 	--bug 6633612
2391 
2392         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
2393           --ER(3338592) Changes
2394           IF group_str IS NOT NULL THEN
2395              group_str := group_str || ' , v.subinventory_code  ' ;
2396           END IF;
2397         END IF;
2398 
2399         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2400           query_str  := query_str || 'AND v.locator_id = :loc_id ';
2401           --ER(3338592) Changes
2402           IF group_str IS NOT NULL THEN
2403              group_str := group_str || ' , v.locator_id  ' ;
2404           END IF;
2405         END IF;
2406 
2407         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
2408           --ER(3338592) Changes
2409           IF group_str IS NOT NULL THEN
2410              group_str := group_str || ' , v.locator_id  ' ;
2411           END IF;
2412         END IF;
2413 
2414   -- NSRIVAST, INVCONV, Start
2415       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
2416          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
2417       END IF ;
2418       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
2419          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
2420       END IF ;
2421    -- NSRIVAST, INVCONV, End
2422 
2423         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
2424           query_str  := query_str || ' AND v.project_id = :pr_id ';
2425           --ER(3338592) Changes
2426           IF group_str IS NOT NULL THEN
2427              group_str := group_str || ' , v.project_id  ' ;
2428           END IF;
2429         END IF;
2430 
2431         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
2432           query_str  := query_str || ' AND v.task_id = :ta_id ';
2433           --ER(3338592) Changes
2434           IF group_str IS NOT NULL THEN
2435              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
2436           END IF;
2437         END IF;
2438 
2439         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2440           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
2441         END IF;
2442 
2443         --Bug # 3411938
2444         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
2445           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
2446            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
2447         END IF;
2448 
2449         --ER(3338592) Changes
2450         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
2451            query_str := query_str || ' AND v.item_description LIKE :item_description ';
2452         END IF;
2453 
2454         IF inv_mwb_globals.g_revision IS NOT NULL THEN
2455           query_str  := query_str || 'AND v.revision = :rev ';
2456           --ER(3338592) Changes
2457           IF group_str IS NOT NULL THEN
2458              group_str := group_str || ' , v.revision  ' ;
2459           END IF;
2460         END IF;
2461 
2462         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2463           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
2464           --ER(3338592) Changes
2465           IF group_str IS NOT NULL THEN
2466              group_str := group_str || ' , v.cost_group_id  ' ;
2467           END IF;
2468         END IF;
2469 
2470         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
2471           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
2472         END IF;
2473 
2474         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
2475           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
2476         END IF;
2477 
2478         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
2479           query_str  := query_str || ' AND v.unit_number=:un_id ';
2480         END IF;
2481 
2482         IF inv_mwb_globals.g_lot_controlled = 2 THEN
2483           query_str  := query_str || 'AND v.lot_number is not null ';
2484         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
2485           query_str  := query_str || 'AND v.lot_number is null ';
2486         END IF;
2487 
2488         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
2489         -- from onhand table (MOQD)
2490         if (l_default_status_id is not null) then
2491           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
2492             query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
2493           END IF;
2494         else
2495           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
2496             query_str  := query_str || 'AND (v.subinventory_status_id = :st_id ';
2497             query_str  := query_str || 'OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
2498           END IF;
2499         end if;
2500 
2501         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
2502            IF inv_mwb_globals.g_containerized = 1 THEN
2503               query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
2504            ELSIF inv_mwb_globals.g_containerized = 2 THEN
2505               query_str  := query_str || ' AND v.containerized_flag = 1 ';
2506            END IF;
2507         END IF;
2508 
2509         IF inv_mwb_globals.g_serial_controlled = 1 THEN
2510           --query_str  := query_str || 'AND serial_number_control_code not in (2,5) ';
2511           query_str  := query_str || 'AND v.item_serial_control not in (2,5) ';
2512         ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
2513           --query_str  := query_str || 'AND serial_number_control_code in (2,5) ';
2514           query_str  := query_str || 'AND v.item_serial_control in (2,5) ';
2515         END IF;
2516 
2517         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
2518            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
2519            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
2520          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
2521            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
2522            query_str := query_str || ' AND  planning_organization_idanization_id in ';
2523            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
2524            query_str := query_str || '  where vendor_id = :vendor_id )';
2525         END IF;*/
2526 
2527         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
2528           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
2529           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
2530         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
2531           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
2532           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
2533         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
2534           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
2535         END IF;
2536 
2537         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
2538           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
2539           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
2540         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
2541           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
2542           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
2543         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
2544           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
2545         END IF;
2546 
2547         --Bug #3411938
2548         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2549            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
2550            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
2551            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
2552         END IF;
2553 
2554         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
2555            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
2556         END IF;
2557 
2558         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
2559            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
2560         END IF;
2561 
2562         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2563           query_str := query_str || 'AND v.organization_id = mp.organization_id  ';
2564           query_str := query_str || group_str || having_str || '  ' ;
2565         ELSE
2566           query_str := query_str || 'AND v.organization_id = mp.organization_id  ';
2567         END IF;
2568 
2569         query_str  := query_str || 'UNION ALL ';
2570 
2571         --Reinitializing the variable
2572         having_str := ' HAVING 1=1 ' ;
2573 
2574         IF (inv_mwb_globals.g_status_id IS NULL) THEN
2575           table_required  := ' mtl_onhand_serial_mwb_v v ';
2576         ELSE
2577           table_required  := ' mtl_onhand_serial_v v ';
2578         END IF;
2579 
2580 	--bug 6633612
2581 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2582 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
2583 	END IF;
2584 	--bug 6633612
2585 
2586 --BUG 7556505
2587         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
2588            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2589           query_str  := query_str || 'SELECT v.organization_id from ' || table_required;
2590           query_str  := query_str || 'WHERE 1=1 ';
2591         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
2592               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2593           query_str  :=
2594                 query_str
2595              || 'SELECT v.organization_id from'
2596              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
2597              || inv_mwb_globals.g_tree_lot_attr_query
2598              || ') mln, '
2599              || table_required;
2600           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
2601 	       	--BUG 7556505
2602 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2603 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2604 	           END IF;
2605 		--BUG 7556505
2606 	END IF;
2607 
2608         --ER(3338592) Changes (If the user gives the value for the Qty then only
2609         --Group by clause comes in to effect)
2610 
2611         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2612            group_str := ' GROUP BY  v.organization_id ';
2613         END IF;
2614 
2615         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2616           query_str  := query_str || 'AND v.subinventory_code = :sub ';
2617           --ER(3338592) Changes
2618           IF group_str IS NOT NULL THEN
2619              group_str := group_str || ' , v.subinventory_code  ' ;
2620           END IF;
2621         END IF;
2622 
2623 	--bug 6633612
2624 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
2625 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
2626 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
2627 					 || ' AND rt.organization_id = mmt.organization_id '
2628 					 || ' AND rt.transaction_type = ''DELIVER'''
2629 					 || ' AND rt.destination_type_code = ''INVENTORY'''
2630 					 || ' AND mmt.transaction_id = v.last_transaction_id '
2631 					 || ' AND mmt.organization_id = v.organization_id ';
2632 
2633 	END IF;
2634 	--bug 6633612
2635 
2636         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
2637           --ER(3338592) Changes
2638           IF group_str IS NOT NULL THEN
2639              group_str := group_str || ' , v.subinventory_code  ' ;
2640           END IF;
2641         END IF;
2642 
2643         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2644           query_str  := query_str || 'AND v.locator_id = :loc_id ';
2645           --ER(3338592) Changes
2646           IF group_str IS NOT NULL THEN
2647              group_str := group_str || ' , v.locator_id  ' ;
2648           END IF;
2649         END IF;
2650 
2651         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
2652           --ER(3338592) Changes
2653           IF group_str IS NOT NULL THEN
2654              group_str := group_str || ' , v.locator_id  ' ;
2655           END IF;
2656         END IF;
2657 
2658         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2659           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
2660         END IF;
2661 
2662         --Bug # 3411938
2663         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
2664           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
2665            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
2666         END IF;
2667 
2668         --ER(3338592) Changes
2669         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
2670            query_str := query_str || ' AND v.item_description LIKE :item_description ';
2671         END IF;
2672 
2673         IF inv_mwb_globals.g_revision IS NOT NULL THEN
2674           query_str  := query_str || 'AND v.revision = :rev ';
2675           --ER(3338592) Changes
2676           IF group_str IS NOT NULL THEN
2677              group_str := group_str || ' , v.revision  ' ;
2678           END IF;
2679         END IF;
2680 
2681         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2682           query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
2683           --ER(3338592) Changes
2684           IF group_str IS NOT NULL THEN
2685              group_str := group_str || ' , v.cost_group_id  ' ;
2686           END IF;
2687         END IF;
2688 
2689         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
2690           query_str  := query_str || ' AND v.lot_number >= :lot_f ';
2691         END IF;
2692 
2693         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
2694           query_str  := query_str || ' AND v.lot_number <= :lot_t ';
2695         END IF;
2696 
2697         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
2698           query_str  := query_str || ' AND v.serial_number >= :serial_f ';
2699         END IF;
2700 
2701         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
2702           query_str  := query_str || ' AND v.serial_number <= :serial_t ';
2703         END IF;
2704 
2705         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
2706         -- from serial table (MSN)
2707         if (l_default_status_id is not null) then
2708           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
2709             query_str  := query_str || 'AND v.serial_status_id = :st_id ';
2710           END IF;
2711         else
2712           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
2713             query_str  := query_str || 'AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
2714             query_str  := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
2715           END IF;
2716         end if;
2717 
2718         IF inv_mwb_globals.g_lot_controlled = 2 THEN
2719           query_str  := query_str || 'AND v.lot_number is not null ';
2720         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
2721           query_str  := query_str || 'AND v.lot_number is null ';
2722         END IF;
2723 
2724         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
2725            IF inv_mwb_globals.g_containerized = 1 THEN
2726               query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
2727            ELSIF inv_mwb_globals.g_containerized = 2 THEN
2728               query_str  := query_str || ' AND v.containerized_flag = 1 ';
2729            END IF;
2730         END IF;
2731 
2732         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2733            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
2734            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
2735            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
2736         END IF;
2737 
2738         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
2739            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
2740         END IF;
2741 
2742         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
2743            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
2744         END IF;
2745 
2746         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2747            query_str := query_str || ' AND v.organization_id = mp.organization_id  ';
2748            query_str := query_str || group_str || having_str || ' ) ' ;
2749         ELSE
2750            query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
2751         END IF;
2752 
2753         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2754           query_str  := query_str || ' and mp.organization_id = :org_id ';
2755         -- Bug # 3411938
2756         ELSE
2757           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
2758           query_str  := query_str || ' FROM org_access_view oav ' ;
2759           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
2760           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
2761           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
2762         END IF;
2763 
2764         query_str  := query_str || ' ORDER BY organization_code ';
2765 
2766       -- Need to use MTL_ONHAND_LPN_V
2767       ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
2768             OR inv_mwb_globals.g_lpn_to IS NOT NULL
2769             OR nvl(inv_mwb_globals.g_prepacked,1) <> 1) THEN
2770         IF inv_mwb_globals.g_tree_mat_loc_id = 2
2771         OR inv_mwb_globals.g_chk_receiving = 1 THEN
2772           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
2773         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
2774           IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
2775             table_required  := ' mtl_onhand_lpn_mwb_v mol ';
2776               IF is_grade_t = TRUE THEN                              -- NSRIVAST, INVCONV
2777                   table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
2778               END IF;
2779           ELSE
2780             table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
2781           END IF;
2782         ELSE
2783           IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
2784             table_required  := ' mtl_onhand_lpn_v mol ';
2785               IF is_grade_t = TRUE THEN                              -- NSRIVAST, INVCONV
2786                   table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
2787               END IF;
2788           ELSE
2789             table_required  := ' mtl_onhand_new_lpn_v mol ';
2790           END IF;
2791         END IF;
2792 
2793         query_str  := query_str || ' SELECT organization_id from ' || table_required;
2794 
2795         IF inv_mwb_globals.g_lpn_from IS NOT NULL
2796            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2797           query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
2798           query_str  := query_str || ' WHERE 1=1 ';
2799 
2800           IF inv_mwb_globals.g_tree_mat_loc_id = 2
2801 	  OR inv_mwb_globals.g_chk_receiving = 1 THEN
2802             query_str  := query_str || ' AND lpn_context = 3 ';
2803           ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
2804             query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 )';
2805           ELSIF inv_mwb_globals.g_prepacked = 1 THEN
2806             query_str  := query_str || ' AND lpn_context = 1 ';
2807           ELSIF inv_mwb_globals.g_prepacked <> 1
2808                 AND inv_mwb_globals.g_prepacked <> 999
2809                 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
2810             query_str  := query_str || ' AND lpn_context = :prepacked ';
2811           END IF;
2812 
2813           IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2814             query_str  := query_str || ' AND wlpn.locator_id = :loc_id ';
2815           END IF;
2816 
2817           IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2818             query_str  := query_str || ' AND wlpn.subinventory_code = :sub ';
2819           END IF;
2820 
2821           IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
2822             query_str  := query_str || ' AND wlpn.organization_id = :org_id ';
2823           END IF;
2824 
2825           IF inv_mwb_globals.g_lpn_from IS NOT NULL
2826              OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2827             IF inv_mwb_globals.g_lpn_from IS NOT NULL
2828                AND inv_mwb_globals.g_lpn_to IS NULL THEN
2829               query_str  := query_str || ' and license_plate_number >= :lpn_f ';
2830             ELSIF inv_mwb_globals.g_lpn_from IS NULL
2831                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2832               query_str  := query_str || ' and license_plate_number <= :lpn_t ';
2833             ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
2834                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2835                   --bugfix#3646484
2836                   IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
2837                    --User is querying for single LPN so converted the range query to equality query
2838                    query_str := query_str || 'and license_plate_number = :lpn_f ';
2839                   ELSE
2840                     query_str  := query_str || ' and license_plate_number >= :lpn_f ';
2841                     query_str  := query_str || ' and license_plate_number <= :lpn_t ';
2842                   END IF;
2843             END IF;
2844           END IF;
2845 
2846           query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
2847         END IF;
2848 
2849 --BUG 7556505
2850 	IF(inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
2851            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2852           query_str  := query_str || 'WHERE 1=1 ';
2853         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
2854               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
2855           query_str  :=
2856                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
2857                      || ') msn ';
2858           query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
2859         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
2860               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
2861           query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
2862           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
2863 	       	--BUG 7556505
2864 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2865 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2866 	           END IF;
2867 		--BUG 7556505
2868         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
2869               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
2870           query_str  :=
2871                 query_str
2872              || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
2873              || inv_mwb_globals.g_tree_lot_attr_query
2874              || ') mln '
2875              || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
2876              || inv_mwb_globals.g_tree_serial_attr_query
2877              || ') msn ';
2878           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
2879 	       	--BUG 7556505
2880 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
2881 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
2882 	           END IF;
2883 		--BUG 7556505
2884           query_str  := query_str || 'AND msn.serial_num = serial_number ';
2885         END IF;
2886 
2887          --ER(3338592) Changes (If the user gives the value for the Qty then only
2888          --Group by clause comes in to effect)
2889 
2890          IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
2891             group_str := ' GROUP BY  organization_id  ';
2892          END IF;
2893 
2894         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
2895           query_str  := query_str || 'AND subinventory_code = :sub ';
2896           --ER(3338592) Changes
2897           IF group_str IS NOT NULL THEN
2898              group_str := group_str || ' , subinventory_code  ' ;
2899           END IF;
2900         END IF;
2901 
2902         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
2903           --ER(3338592) Changes
2904           IF group_str IS NOT NULL THEN
2905              group_str := group_str || ' , subinventory_code  ' ;
2906           END IF;
2907         END IF;
2908 
2909   -- NSRIVAST, INVCONV, Start
2910       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
2911          query_str := query_str || ' AND grade_code = :grade_f ' ;
2912       END IF ;
2913       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
2914          query_str := query_str || ' AND grade_code = :grade_c ' ;
2915       END IF ;
2916    -- NSRIVAST, INVCONV, End
2917 
2918         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
2919           query_str  := query_str || 'AND locator_id = :loc_id ';
2920           --ER(3338592) Changes
2921           IF group_str IS NOT NULL THEN
2922              group_str := group_str || ' , locator_id  ' ;
2923           END IF;
2924         END IF;
2925 
2926         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
2927           --ER(3338592) Changes
2928           IF group_str IS NOT NULL THEN
2929              group_str := group_str || ' , locator_id  ' ;
2930           END IF;
2931         END IF;
2932 
2933         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
2934           query_str  := query_str || ' AND project_id = :pr_id ';
2935           --ER(3338592) Changes
2936           IF group_str IS NOT NULL THEN
2937              group_str := group_str || ' , project_id  ' ;
2938           END IF;
2939         END IF;
2940 
2941         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
2942           query_str  := query_str || ' AND task_id = :ta_id ';
2943           --ER(3338592) Changes
2944           IF group_str IS NOT NULL THEN
2945              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
2946           END IF;
2947         END IF;
2948 
2949         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
2950           query_str  := query_str || ' AND inventory_item_id = :item_id ';
2951         END IF;
2952 
2953         --Bug # 3411938
2954         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
2955           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
2956            group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
2957         END IF;
2958 
2959         --ER(3338592) Changes
2960         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
2961            query_str := query_str || ' AND item_description LIKE :item_description ';
2962         END IF;
2963 
2964         IF inv_mwb_globals.g_revision IS NOT NULL THEN
2965           query_str  := query_str || ' AND revision = :rev ';
2966           --ER(3338592) Changes
2967           IF group_str IS NOT NULL THEN
2968              group_str := group_str || ' , revision  ' ;
2969           END IF;
2970         END IF;
2971 
2972         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
2973           query_str  := query_str || ' AND cost_group_id = :cg_id ';
2974           --ER(3338592) Changes
2975           IF group_str IS NOT NULL THEN
2976              group_str := group_str || ' , cost_group_id  ' ;
2977           END IF;
2978         END IF;
2979 
2980         IF inv_mwb_globals.g_lpn_from IS NOT NULL
2981            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2982           query_str  := query_str || ' AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
2983         END IF;
2984 
2985         --ER(3338592) Changes
2986         IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
2987            --ER(3338592) Changes
2988            IF group_str IS NOT NULL THEN
2989               group_str := group_str || ' , lpn ' ;
2990           END IF;
2991         END IF;
2992 
2993         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
2994           query_str  := query_str || ' AND lot_number >= :lot_f ';
2995         END IF;
2996 
2997         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
2998           query_str  := query_str || ' AND lot_number <= :lot_t ';
2999         END IF;
3000 
3001         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
3002           query_str  := query_str || ' AND serial_number >= :serial_f ';
3003         END IF;
3004 
3005         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
3006           query_str  := query_str || ' AND serial_number <= :serial_t ';
3007         END IF;
3008 
3009         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
3010           query_str  := query_str || ' AND unit_number=:un_id ';
3011         END IF;
3012 
3013 	/*LPN Status Project */
3014 	IF (l_default_status_id IS NOT NULL) THEN
3015           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
3016 	    query_str  := query_str || 'AND onhand_status_id = :st_id ';
3017 	  END IF;
3018 	ELSE
3019 	  IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3020             query_str  := query_str || ' AND (subinventory_status_id = :st_id OR locator_status_id = :st_id ';
3021             query_str  := query_str || ' OR lot_status_id = :st_id OR serial_status_id = :st_id) ';
3022           END IF;
3023         END IF;
3024         /*End of fix for LPN Status Project */
3025 
3026         IF inv_mwb_globals.g_lot_controlled = 2 THEN
3027           query_str  := query_str || ' AND lot_number is not null ';
3028         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
3029           query_str  := query_str || ' AND lot_number is null ';
3030         END IF;
3031 
3032         IF inv_mwb_globals.g_serial_controlled = 1 THEN
3033           query_str  := query_str || ' AND serial_number is null ';
3034         ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
3035           query_str  := query_str || ' AND serial_number is not null ';
3036         END IF;
3037 
3038         IF inv_mwb_globals.g_tree_mat_loc_id = 2
3039         OR inv_mwb_globals.g_chk_receiving = 1 THEN
3040           query_str  := query_str || ' AND lpn_context = 3 ';
3041         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
3042           query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 ) ';
3043         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
3044           query_str  := query_str || 'AND lpn_context = 1 ';
3045         ELSIF inv_mwb_globals.g_prepacked <> 1
3046               AND inv_mwb_globals.g_prepacked <> 999
3047               AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
3048           query_str  := query_str || 'AND lpn_context = :prepacked ';
3049         END IF;
3050 
3051         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
3052            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
3053            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
3054          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
3055            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
3056            query_str := query_str || ' AND  planning_organization_id in ';
3057            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
3058            query_str := query_str || '  where vendor_id = :vendor_id )';
3059         END IF;*/
3060 
3061         IF  (inv_mwb_globals.g_owning_qry_mode = 4) THEN
3062           query_str  := query_str || ' AND owning_organization_id = :own_org ';
3063           query_str  := query_str || ' AND owning_tp_type = 2 ';
3064         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3065           query_str  := query_str || ' AND owning_organization_id = :own_org ';
3066           query_str  := query_str || ' AND owning_tp_type = 1 ';
3067         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
3068           query_str  := query_str || ' AND owning_tp_type = 1 ';
3069         END IF;
3070 
3071         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
3072           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
3073           query_str  := query_str || ' AND planning_tp_type = 2 ';
3074         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
3075           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
3076           query_str  := query_str || ' AND planning_tp_type = 1 ';
3077         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
3078           query_str  := query_str || ' AND planning_tp_type = 1 ';
3079         END IF;
3080 
3081         --Bug #3411938
3082         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3083            group_str := group_str || ' , planning_organization_id, planning_tp_type ';
3084            group_str := group_str || ' , owning_organization_id, owning_tp_type ';
3085            group_str := group_str || ' , item_lot_control, item_serial_control ';
3086         END IF;
3087 
3088         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3089            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
3090         END IF;
3091 
3092         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3093            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
3094         END IF;
3095 
3096         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3097           query_str := query_str || 'AND organization_id = mp.organization_id  ';
3098           query_str := query_str || group_str || having_str || ' ) ' ;
3099         ELSE
3100           query_str := query_str || 'AND organization_id = mp.organization_id ) ';
3101         END IF;
3102 
3103         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3104           query_str  := query_str || 'and mp.organization_id = :org_id ';
3105         --Bug # 3411938
3106         ELSE
3107           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
3108           query_str  := query_str || ' FROM org_access_view oav ' ;
3109           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
3110           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
3111           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
3112         END IF;
3113 
3114         query_str  := query_str || ' ORDER BY organization_code ';
3115 
3116       END IF;
3117     END IF;
3118 
3119        --trace1(query_str, 'add_orgs', 9);
3120 
3121     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
3122 
3123     inv_mwb_globals.g_last_query := query_str;
3124 
3125     query_hdl       := DBMS_SQL.open_cursor;
3126     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
3127 
3128 
3129     IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3130       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
3131     END IF;
3132 
3133     IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3134       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
3135     END IF;
3136 
3137     IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3138       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
3139     END IF;
3140 
3141     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3142       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
3143     END IF;
3144 
3145     IF inv_mwb_globals.g_revision IS NOT NULL THEN
3146       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
3147     END IF;
3148 
3149     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3150       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
3151     END IF;
3152 
3153     --BUG 7556505
3154     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3155       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
3156     END IF;
3157     --BUG 7556505
3158 
3159     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3160       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
3161     END IF;
3162 
3163     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3164       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
3165     END IF;
3166 
3167  -- NSRIVAST, INVCONV, Start
3168     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3169       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
3170     END IF;
3171     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
3172       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
3173     END IF;
3174  -- NSRIVAST, INVCONV, End
3175     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
3176       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
3177     END IF;
3178 
3179     --bug 6633612
3180     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
3181       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
3182     END IF;
3183     --bug 6633612
3184 
3185     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
3186       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
3187     END IF;
3188 
3189       --bugfix#3646484
3190       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
3191       --User is querying for single LPN so converted the range query to equality query
3192       --So it is enought to bind the from lpn alone
3193          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
3194       ELSE
3195           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
3196             DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
3197           END IF;
3198 
3199           IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3200             DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
3201           END IF;
3202       END IF;
3203 
3204     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3205       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
3206     ELSIF inv_mwb_globals.g_only_subinventory_status = 1 and l_default_status_id is not null THEN -- Onhand Material Status Support
3207       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
3208     END IF;
3209 
3210     IF inv_mwb_globals.g_prepacked <> 1
3211        AND inv_mwb_globals.g_prepacked <> 999
3212        AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
3213       DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
3214     END IF;
3215 
3216     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
3217       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
3218     END IF;
3219 
3220     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
3221       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
3222     END IF;
3223 
3224     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
3225       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
3226     END IF;
3227 
3228     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
3229       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
3230     END IF;
3231 
3232     IF (inv_mwb_globals.g_owning_qry_mode = 4)
3233        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3234       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
3235     END IF;
3236 
3237     IF (inv_mwb_globals.g_planning_query_mode = 4)
3238        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
3239       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
3240     END IF;
3241 
3242     --ER(3338592) Changes
3243     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3244       dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
3245     END IF;
3246 
3247     IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3248       dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
3249     END IF;
3250 
3251     IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3252        dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
3253     END IF;
3254     --End of ER Changes
3255 
3256     --Bug #3411938
3257     IF inv_mwb_globals.g_organization_id IS NULL THEN
3258        IF inv_mwb_globals.g_responsibility_id  IS NOT NULL THEN
3259           dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
3260        END IF;
3261 
3262        IF inv_mwb_globals.g_resp_application_id  IS NOT NULL THEN
3263           dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
3264        END IF;
3265     END IF;
3266 
3267     DBMS_SQL.define_column(query_hdl, 1, org_id);
3268     DBMS_SQL.define_column(query_hdl, 2, org_code, 3);
3269 
3270     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Org id , Org code '||org_id||','||org_code );
3271 
3272 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3273    SELECT   mp.organization_id, mp.organization_code
3274       INTO  org_id,org_code
3275        FROM mtl_parameters mp
3276       WHERE EXISTS (SELECT organization_id
3277                       FROM mtl_onhand_total_mwb_v
3278                      WHERE 1 = 1 AND organization_id = mp.organization_id)
3279         AND mp.organization_id = inv_mwb_globals.g_organization_id
3280    ORDER BY organization_code;
3281 END IF;
3282     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
3283 
3284     LOOP
3285       -- fetch a row
3286       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
3287         -- fetch columns from the row
3288         DBMS_SQL.column_value(query_hdl, 1, org_id);
3289         DBMS_SQL.column_value(query_hdl, 2, org_code);
3290         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Coming inside, Org code : '||org_id||org_code );
3291          FOR j in 1 .. x_node_tbl.COUNT LOOP
3292             IF x_node_tbl(j).LABEL = org_code THEN
3293                l_org_exists_flag := TRUE;
3294             END IF;
3295          END LOOP;
3296         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'after loop');
3297 	   IF j >= inv_mwb_globals.g_tree_node_low_value  AND NOT l_org_exists_flag THEN
3298 	      x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
3299               x_node_tbl(i).DEPTH  := 1;
3300 	      x_node_tbl(i).label  := org_code;
3301 	      x_node_tbl(i).icon   := 'inv_inor';
3302 	      x_node_tbl(i).VALUE  := TO_CHAR(org_id);
3303 	      x_node_tbl(i).TYPE   := 'ORG';
3304 	      i                    := i + 1;
3305 	   END IF;
3306         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
3307         j  := j + 1;
3308       ELSE
3309         EXIT;
3310       END IF;
3311     END LOOP;
3312 
3313     DBMS_SQL.close_cursor(query_hdl); -- close cursor
3314     x_node_value    := j;
3315     x_tbl_index     := i;
3316 
3317 --   END IF; -- Receiving checkbox selected
3318 
3319 
3320 /*   IF l_onhand_qty IS NOT NULL
3321       OR l_rcv_qty IS NOT NULL
3322       OR l_inbound_qty IS NOT NULL
3323       OR inv_mwb_globals.g_view_by = 'GRADE'  -- Bug : 4680944
3324       OR inv_mwb_globals.g_view_by = 'STATUS'
3325    THEN
3326    */
3327       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
3328              is_grade_t     := TRUE ;
3329       END IF ;
3330    -- NSRIVAST, INVCONV, End
3331 
3332     IF inv_mwb_globals.g_inventory_item_id IS NULL
3333        AND inv_mwb_globals.g_revision IS NULL
3334        AND inv_mwb_globals.g_parent_lot IS NULL			--BUG 7556505
3335        AND inv_mwb_globals.g_lot_from IS NULL
3336        AND inv_mwb_globals.g_lot_to IS NULL
3337        AND inv_mwb_globals.g_serial_from IS NULL
3338        AND inv_mwb_globals.g_serial_to IS NULL
3339        AND inv_mwb_globals.g_serial_controlled = 0   -- Bug #3411938
3340        AND inv_mwb_globals.g_lot_controlled = 0
3341        AND inv_mwb_globals.g_cost_group_id IS NULL
3342        AND inv_mwb_globals.g_status_id IS NULL
3343        AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
3344        AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
3345        AND inv_mwb_globals.g_unit_number IS NULL
3346        AND inv_mwb_globals.g_project_id IS NULL
3347        AND inv_mwb_globals.g_task_id IS NULL
3348        AND inv_mwb_globals.g_planning_org IS NULL
3349        AND inv_mwb_globals.g_owning_org IS NULL
3350        AND( nvl(inv_mwb_globals.g_prepacked,1) <> 1
3351            OR inv_mwb_globals.g_lpn_from IS NOT NULL
3352            OR inv_mwb_globals.g_lpn_to IS NOT NULL)
3353        --ER(3338592) Changes
3354        AND inv_mwb_globals.g_item_description IS NULL
3355        AND inv_mwb_globals.g_qty_from         IS NULL
3356        AND inv_mwb_globals.g_qty_to           IS NULL THEN
3357       --End of ER Changes
3358       query_str  := 'SELECT mp.organization_id, mp.organization_code  ';
3359       query_str  := query_str || 'from mtl_parameters mp where organization_id in ';
3360       query_str  := query_str || '(select organization_id ';
3361       query_str  := query_str || 'FROM wms_license_plate_numbers WHERE 1=1 ';
3362 
3363       IF inv_mwb_globals.g_tree_mat_loc_id = 2
3364       OR inv_mwb_globals.g_chk_receiving = 1 THEN
3365         query_str  := query_str || ' AND lpn_context = 3 ';
3366       ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
3367         query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11) ';
3368       ELSIF inv_mwb_globals.g_prepacked = 1 THEN
3369         query_str  := query_str || ' AND (lpn_context = 1) ';
3370       ELSIF inv_mwb_globals.g_prepacked <> 1
3371             AND inv_mwb_globals.g_prepacked <> 999
3372             AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
3373          query_str  := query_str || ' AND lpn_context = :prepacked ';
3374       END IF;
3375 
3376       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3377         query_str  := query_str || ' AND locator_id = :loc_id ';
3378       END IF;
3379 
3380   -- NSRIVAST, INVCONV, Start
3381       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3382          query_str := query_str || ' AND grade_code = :grade_f ' ;
3383       END IF ;
3384       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
3385          query_str := query_str || ' AND grade_code = :grade_c ' ;
3386       END IF ;
3387    -- NSRIVAST, INVCONV, End
3388 
3389       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3390         query_str  := query_str || ' AND subinventory_code = :sub ';
3391       END IF;
3392 
3393       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3394         query_str  := query_str || ' AND organization_id = :org_id ';
3395       END IF;
3396 
3397       --bugfix#3646484
3398       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
3399       --User is querying for single LPN so converted the range query to equality query
3400          query_str := query_str || 'and license_plate_number = :lpn_f ';
3401       ELSE
3402          IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
3403            query_str  := query_str || 'and license_plate_number >= :lpn_f ';
3404          END IF;
3405 
3406          IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
3407            query_str  := query_str || 'and license_plate_number <= :lpn_t ';
3408          END IF;
3409       END IF;
3410 
3411       query_str  := query_str || ') ORDER BY organization_code ';
3412     ELSE
3413       query_str  := ' SELECT mp.organization_id, mp.organization_code FROM mtl_parameters mp ';
3414       query_str  := query_str || ' WHERE exists ( ';
3415 
3416       -- Need to use MTL_ONHAND_TOTAL_V
3417       IF (
3418           inv_mwb_globals.g_serial_from IS NULL
3419           AND inv_mwb_globals.g_serial_to IS NULL
3420           AND inv_mwb_globals.g_unit_number IS NULL
3421           AND inv_mwb_globals.g_status_id IS NULL
3422           AND inv_mwb_globals.g_lpn_from IS NULL
3423           AND inv_mwb_globals.g_lpn_to IS NULL
3424           AND nvl(inv_mwb_globals.g_prepacked,1) = 1
3425           AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
3426          ) THEN
3427         IF NVL(inv_mwb_globals.g_chk_onhand,0) = 0
3428 	AND NVL(inv_mwb_globals.g_chk_receiving,0) = 1
3429 	AND NVL(inv_mwb_globals.g_chk_inbound,0) = 0 THEN
3430           table_required  := ' mtl_rcv_mwb_onhand_v v ';
3431         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
3432           table_required  := ' mtl_onhand_total_mwb_v v ';
3433              IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
3434              table_required  := ' mtl_onhand_total_v v ';  -- NSRIVAST, INVCONV
3435              END IF;
3436         ELSE
3437           table_required  := ' mtl_onhand_total_v v ';
3438         END IF;
3439 
3440 	--bug 6633612
3441 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3442 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
3443 	END IF;
3444 	--bug 6633612
3445 
3446         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL  AND inv_mwb_globals.g_parent_lot IS NULL THEN
3447           query_str  := query_str || 'SELECT v.organization_id from ' || table_required;
3448           query_str  := query_str || 'WHERE 1=1 ';
3449         ELSE
3450           query_str  :=
3451                 query_str
3452              || ' SELECT v.organization_id from'
3453              || ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
3454              || inv_mwb_globals.g_tree_lot_attr_query
3455              || ' ) mln, '
3456              || table_required;
3457           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
3458 	       	--BUG 7556505
3459 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3460 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
3461 	           END IF;
3462 		--BUG 7556505
3463         END IF;
3464 
3465         --ER(3338592) Changes (If the user gives the value for the Qty then only
3466         --Group by clause comes in to effect)
3467 
3468         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3469            group_str := ' GROUP BY  v.organization_id  ';
3470         END IF;
3471 
3472         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3473           query_str  := query_str || ' AND v.subinventory_code = :sub ';
3474           --ER(3338592) Changes
3475           IF group_str IS NOT NULL THEN
3476              group_str := group_str || ' , v.subinventory_code  ' ;
3477           END IF;
3478         END IF;
3479 
3480 	--bug 6633612
3481 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3482 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
3483 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
3484 					 || ' AND rt.organization_id = mmt.organization_id '
3485 					 || ' AND rt.transaction_type = ''DELIVER'''
3486 					 || ' AND rt.destination_type_code = ''INVENTORY'''
3487 					 || ' AND mmt.transaction_id = v.create_transaction_id '
3488 					 || ' AND mmt.organization_id = v.organization_id ';
3489 
3490 	END IF;
3491 	--bug 6633612
3492 
3493         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
3494           --ER(3338592) Changes
3495           IF group_str IS NOT NULL THEN
3496              group_str := group_str || ' , v.subinventory_code  ' ;
3497           END IF;
3498         END IF;
3499 
3500         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3501           query_str  := query_str || ' AND v.locator_id = :loc_id ';
3502           --ER(3338592) Changes
3503           IF group_str IS NOT NULL THEN
3504              group_str := group_str || ' , v.locator_id  ' ;
3505           END IF;
3506         END IF;
3507 
3508   -- NSRIVAST, INVCONV, Start
3509       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3510          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
3511       END IF ;
3512       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
3513          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
3514       END IF ;
3515    -- NSRIVAST, INVCONV, End
3516 
3517         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
3518           --ER(3338592) Changes
3519           IF group_str IS NOT NULL THEN
3520              group_str := group_str || ' , v.locator_id  ' ;
3521           END IF;
3522         END IF;
3523 
3524         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
3525           query_str  := query_str || ' AND v.project_id = :pr_id ';
3526            --ER(3338592) Changes
3527            IF group_str IS NOT NULL THEN
3528               group_str := group_str || ' , v.project_id  ' ;
3529            END IF;
3530         END IF;
3531 
3532         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
3533           query_str  := query_str || ' AND v.task_id = :ta_id ';
3534           --ER(3338592) Changes
3535           IF group_str IS NOT NULL THEN
3536              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
3537           END IF;
3538         END IF;
3539 
3540         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3541           query_str  := query_str || ' AND v.inventory_item_id = :item_id ';
3542         END IF;
3543 
3544         --Bug # 3411938
3545         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
3546           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
3547            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
3548         END IF;
3549 
3550         --ER(3338592) Changes
3551         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3552            query_str := query_str || ' AND v.item_description LIKE :item_description ';
3553         END IF;
3554 
3555         IF inv_mwb_globals.g_revision IS NOT NULL THEN
3556           query_str  := query_str || ' AND v.revision = :rev ';
3557           --ER(3338592) Changes
3558           IF group_str IS NOT NULL THEN
3559              group_str := group_str || ' , v.revision  ' ;
3560           END IF;
3561         END IF;
3562 
3563         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3564           query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
3565           --End of ER Changes
3566           IF group_str IS NOT NULL THEN
3567              group_str := group_str || ' , v.cost_group_id  ' ;
3568           END IF;
3569         END IF;
3570 
3571         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3572           query_str  := query_str || ' AND v.lot_number >= :lot_f ';
3573         END IF;
3574 
3575         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3576           query_str  := query_str || ' AND v.lot_number <= :lot_t ';
3577         END IF;
3578 
3579         IF inv_mwb_globals.g_lot_controlled = 2 THEN
3580           query_str  := query_str ||  ' AND v.lot_number is not null ';
3581         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
3582           query_str  := query_str || ' AND v.lot_number is null ';
3583         END IF;
3584 
3585         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
3586         -- from onhand table (MOQD)
3587         if (l_default_status_id is not null) then
3588           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
3589             query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
3590           END IF;
3591         else
3592           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
3593             query_str  := query_str || ' AND (v.subinventory_status_id = :st_id ';
3594             query_str  := query_str || ' OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
3595           END IF;
3596         end if;
3597 
3598         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
3599            IF inv_mwb_globals.g_containerized = 1 THEN
3600               query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
3601            ELSIF inv_mwb_globals.g_containerized = 2 THEN
3602               query_str  := query_str || ' AND v.containerized_flag = 1 ';
3603            END IF;
3604         END IF;
3605 
3606         IF inv_mwb_globals.g_serial_controlled = 1 THEN
3607           --query_str  := query_str || 'AND serial_number_control_code not in (2,5) ';
3608           query_str  := query_str || ' AND v.item_serial_control not in (2,5) ';
3609         ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
3610           --query_str  := query_str || 'AND serial_number_control_code in (2,5) ';
3611           query_str  := query_str || ' AND v.item_serial_control in (2,5) ';
3612         END IF;
3613 
3614         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
3615           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
3616           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
3617         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
3618           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
3619           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
3620         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
3621           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
3622         END IF;
3623 
3624         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
3625           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
3626           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
3627         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3628           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
3629           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
3630         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
3631           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
3632         END IF;
3633 
3634         --Bug #3411938
3635         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3636            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
3637            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
3638            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
3639         END IF;
3640 
3641         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3642            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
3643         END IF;
3644 
3645         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3646            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
3647         END IF;
3648 
3649         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3650           query_str := query_str || ' AND v.organization_id = mp.organization_id  ';
3651           query_str := query_str || group_str || having_str || ' ) ' ;
3652         ELSE
3653           query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
3654         END IF;
3655 
3656         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3657           query_str  := query_str || 'and mp.organization_id = :org_id  ';
3658         --Bug #3411938
3659         ELSE
3660           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
3661           query_str  := query_str || ' FROM org_access_view oav ' ;
3662           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
3663           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
3664           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
3665         END IF;
3666 
3667         query_str  := query_str || ' ORDER BY organization_code ';
3668 
3669       --Need to use MTL_ONHAND_SERIAL_V
3670 
3671       ELSIF(
3672             (
3673              inv_mwb_globals.g_serial_from IS NOT NULL
3674              OR inv_mwb_globals.g_serial_from IS NOT NULL
3675              OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
3676              OR inv_mwb_globals.g_unit_number IS NOT NULL
3677             )
3678             AND inv_mwb_globals.g_lpn_from IS NULL
3679             AND inv_mwb_globals.g_lpn_to IS NULL
3680             AND nvl(inv_mwb_globals.g_prepacked,1) = 1
3681            ) THEN
3682         IF inv_mwb_globals.g_tree_mat_loc_id = 2
3683         OR inv_mwb_globals.g_chk_receiving = 1 THEN
3684           table_required  := ' mtl_rcv_serial_oh_v v ';
3685         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
3686           table_required  := ' mtl_onhand_serial_mwb_v v ';
3687             IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
3688                table_required  := ' mtl_onhand_serial_v v ';  -- NSRIVAST, INVCONV
3689             END IF ;
3690         ELSE
3691           table_required  := ' mtl_onhand_serial_v v ';
3692         END IF;
3693 
3694 	--bug 6633612
3695 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3696 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
3697 	END IF;
3698 	--bug 6633612
3699 
3700         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)		--BUG 7556505
3701            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
3702           query_str  := query_str || ' SELECT v.organization_id from ' || table_required;
3703           query_str  := query_str || ' WHERE 1=1 ';
3704         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)		--BUG 7556505
3705               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
3706           query_str  :=
3707                 query_str
3708              || ' SELECT v.organization_id from'
3709              || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
3710              || inv_mwb_globals.g_tree_serial_attr_query
3711              || ') msn, '
3712              || table_required;
3713           query_str  := query_str || ' WHERE msn.serial_num = v.serial_number ';
3714         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)	--BUG 7556505
3715               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
3716           query_str  :=
3717                 query_str
3718              || ' SELECT v.organization_id from'
3719              || ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
3720              || inv_mwb_globals.g_tree_lot_attr_query
3721              || ' ) mln, '
3722              || table_required;
3723           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
3724 	       	--BUG 7556505
3725 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3726 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
3727 	           END IF;
3728 		--BUG 7556505
3729 	ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)	--BUG 7556505
3730               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
3731           query_str  :=
3732                 query_str
3733              || ' SELECT v.organization_id from'
3734              || ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
3735              || inv_mwb_globals.g_tree_lot_attr_query
3736              || ' ) mln, '
3737              || ' (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
3738              || inv_mwb_globals.g_tree_serial_attr_query
3739              || ' ) msn, '
3740              || table_required;
3741           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
3742 	       	--BUG 7556505
3743 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
3744 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
3745 	           END IF;
3746 		--BUG 7556505
3747           query_str  := query_str || ' AND msn.serial_num = v.serial_number ';
3748         END IF;
3749 
3750         --ER(3338592) Changes (If the user gives the value for the Qty then only
3751         --Group by clause comes in to effect)
3752 
3753         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3754            group_str := ' GROUP BY  v.organization_id ';
3755         END IF;
3756 
3757         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
3758           query_str  := query_str || ' AND v.subinventory_code = :sub ';
3759           --ER(3338592) Changes
3760           IF group_str IS NOT NULL THEN
3761              group_str := group_str || ' , v.subinventory_code  ' ;
3762           END IF;
3763         END IF;
3764 
3765 	--bug 6633612
3766 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3767 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
3768 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
3769 					 || ' AND rt.organization_id = mmt.organization_id '
3770 					 || ' AND rt.transaction_type = ''DELIVER'''
3771 					 || ' AND rt.destination_type_code = ''INVENTORY'''
3772 					 || ' AND mmt.transaction_id = v.last_transaction_id '
3773 					 || ' AND mmt.organization_id = v.organization_id ';
3774 
3775 	END IF;
3776 	--bug 6633612
3777 
3778         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
3779           --ER(3338592) Changes
3780           IF group_str IS NOT NULL THEN
3781              group_str := group_str || ' , v.subinventory_code  ' ;
3782           END IF;
3783         END IF;
3784 
3785         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
3786           query_str  := query_str || ' AND v.locator_id = :loc_id ';
3787           --ER(3338592) Changes
3788           IF group_str IS NOT NULL THEN
3789              group_str := group_str || '  , v.locator_id  ' ;
3790           END IF;
3791         END IF;
3792 
3793   -- NSRIVAST, INVCONV, Start
3794       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
3795          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
3796       END IF ;
3797       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
3798          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
3799       END IF ;
3800    -- NSRIVAST, INVCONV, End
3801 
3802         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
3803           --ER(3338592) Changes
3804           IF group_str IS NOT NULL THEN
3805              group_str := group_str || ' , v.locator_id  ' ;
3806           END IF;
3807         END IF;
3808 
3809         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
3810           query_str  := query_str || ' AND v.project_id = :pr_id ';
3811           --ER(3338592) Changes
3812           IF group_str IS NOT NULL THEN
3813              group_str := group_str || ' , v.project_id  ' ;
3814           END IF;
3815         END IF;
3816 
3817         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
3818           query_str  := query_str || ' AND v.task_id = :ta_id ';
3819           --ER(3338592) Changes
3820           IF group_str IS NOT NULL THEN
3821              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
3822           END IF;
3823         END IF;
3824 
3825         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
3826           query_str  := query_str || ' AND v.inventory_item_id = :item_id ';
3827         END IF;
3828 
3829         --Bug # 3411938
3830         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
3831           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
3832            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
3833         END IF;
3834 
3835         --ER(3338592) Changes
3836         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
3837            query_str := query_str || ' AND v.item_description LIKE :item_description ';
3838         END IF;
3839 
3840         IF inv_mwb_globals.g_revision IS NOT NULL THEN
3841           query_str  := query_str || ' AND v.revision = :rev ';
3842           --ER(3338592) Changes
3843           IF group_str IS NOT NULL THEN
3844              group_str := group_str || ' , v.revision  ' ;
3845           END IF;
3846         END IF;
3847 
3848         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
3849           query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
3850           --ER(3338592) Changes
3851           IF group_str IS NOT NULL THEN
3852              group_str := group_str || ' , v.cost_group_id  ' ;
3853           END IF;
3854         END IF;
3855 
3856         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
3857           query_str  := query_str || ' AND v.lot_number >= :lot_f ';
3858         END IF;
3859 
3860         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
3861           query_str  := query_str || ' AND v.lot_number <= :lot_t ';
3862         END IF;
3863 
3864         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
3865           query_str  := query_str || ' AND v.serial_number >= :serial_f ';
3866         END IF;
3867 
3868         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
3869           query_str  := query_str || ' AND v.serial_number <= :serial_t ';
3870         END IF;
3871 
3872         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
3873           query_str  := query_str || ' AND v.unit_number=:un_id ';
3874         END IF;
3875 
3876         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
3877         -- from serial table (MSN)
3878         if (l_default_status_id is not null) then
3879           IF (inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1)
3880           AND inv_mwb_globals.g_tree_mat_loc_id <> 2
3881              OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
3882              query_str  := query_str || 'AND v.serial_status_id = :st_id ';
3883           END IF;
3884         else
3885           IF (inv_mwb_globals.g_status_id IS NOT NULL)
3886              AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
3887              query_str  := query_str || ' AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
3888              query_str  := query_str || ' OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
3889           END IF;
3890         end if;
3891 
3892         IF inv_mwb_globals.g_lot_controlled = 2 THEN
3893           query_str  := query_str || ' AND v.lot_number is not null ';
3894         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
3895           query_str  := query_str || ' AND v.lot_number is null ';
3896         END IF;
3897 
3898         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
3899   	   IF inv_mwb_globals.g_containerized = 1 THEN
3900              query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
3901            ELSIF inv_mwb_globals.g_containerized = 2 THEN
3902              query_str  := query_str || ' AND v.containerized_flag = 1 ';
3903            END IF;
3904         END IF;
3905 
3906 
3907         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
3908            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
3909            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
3910          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
3911            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
3912            query_str := query_str || ' AND  planning_organization_id in ';
3913            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
3914            query_str := query_str || '  where vendor_id = :vendor_id )';
3915         END IF;*/
3916 
3917         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
3918           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
3919           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
3920         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
3921           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
3922           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
3923         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
3924           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
3925         END IF;
3926 
3927         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
3928           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
3929           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
3930         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
3931           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
3932           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
3933         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
3934           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
3935         END IF;
3936 
3937         --Bug #3411938
3938         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3939            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
3940            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
3941            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
3942         END IF;
3943 
3944         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
3945            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
3946         END IF;
3947 
3948         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
3949            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
3950         END IF;
3951 
3952         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
3953            query_str := query_str || 'AND v.organization_id = mp.organization_id  ';
3954            query_str := query_str || group_str || having_str || ' ) ' ;
3955         ELSE
3956           query_str := query_str || 'AND v.organization_id = mp.organization_id ) ';
3957         END IF;
3958 
3959         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
3960           query_str  := query_str || 'and mp.organization_id = :org_id ';
3961         -- Bug #3411938
3962         ELSE
3963           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
3964           query_str  := query_str || ' FROM org_access_view oav ' ;
3965           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
3966           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
3967           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
3968         END IF;
3969 
3970         query_str  := query_str || ' ORDER BY organization_code ';
3971 
3972       -- Need to use both MTL_ONHAND_TOTAL_V AND MTL_ONHAND_SERIAL_V
3973       ELSIF(
3974             inv_mwb_globals.g_serial_from IS NULL
3975             AND inv_mwb_globals.g_serial_to IS NULL
3976             AND inv_mwb_globals.g_unit_number IS NULL
3977             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
3978             AND inv_mwb_globals.g_status_id IS NOT NULL
3979             AND inv_mwb_globals.g_lpn_from IS NULL
3980             AND inv_mwb_globals.g_lpn_to IS NULL
3981             AND nvl(inv_mwb_globals.g_prepacked,1) = 1
3982            ) THEN
3983         IF (inv_mwb_globals.g_status_id IS NULL) THEN
3984           table_required  := ' mtl_onhand_total_mwb_v v ';
3985 --         ELSIF is_grade_t = TRUE THEN                     -- NSRIVAST, INVCONV
3986 --           table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
3987         ELSE
3988           table_required  := ' mtl_onhand_total_v v ';
3989         END IF;
3990 
3991 	--bug 6633612
3992 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
3993 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
3994 	END IF;
3995 	--bug 6633612
3996 
3997         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
3998           query_str  := query_str || 'SELECT v.organization_id from ' || table_required;
3999           query_str  := query_str || 'WHERE 1=1 ';
4000         ELSE
4001           query_str  :=
4002                 query_str
4003              || 'SELECT v.organization_id from'
4004              || ' (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '		--BUG 7556505
4005              || inv_mwb_globals.g_tree_lot_attr_query
4006              || ') mln, '
4007              || table_required;
4008           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
4009 	       	--BUG 7556505
4010 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4011 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4012 	           END IF;
4013 		--BUG 7556505
4014         END IF;
4015 
4016         --ER(3338592) Changes (If the user gives the value for the Qty then only
4017         --Group by clause comes in to effect)
4018 
4019         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4020            group_str := ' GROUP BY  v.organization_id ';
4021         END IF;
4022 
4023 	--bug 6633612
4024 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4025 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
4026 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
4027 					 || ' AND rt.organization_id = mmt.organization_id '
4028 					 || ' AND rt.transaction_type = ''DELIVER'''
4029 					 || ' AND rt.destination_type_code = ''INVENTORY'''
4030 					 || ' AND mmt.transaction_id = v.create_transaction_id '
4031 					 || ' AND mmt.organization_id = v.organization_id ';
4032 
4033 	END IF;
4034 	--bug 6633612
4035 
4036         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4037           query_str  := query_str || 'AND v.subinventory_code = :sub ';
4038           --ER(3338592) Changes
4039           IF group_str IS NOT NULL THEN
4040              group_str := group_str || ' , v.subinventory_code  ' ;
4041           END IF;
4042         END IF;
4043 
4044         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
4045           --ER(3338592) Changes
4046           IF group_str IS NOT NULL THEN
4047              group_str := group_str || ' , v.subinventory_code  ' ;
4048           END IF;
4049         END IF;
4050 
4051         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4052           query_str  := query_str || 'AND v.locator_id = :loc_id ';
4053           --ER(3338592) Changes
4054           IF group_str IS NOT NULL THEN
4055              group_str := group_str || ' , v.locator_id  ' ;
4056           END IF;
4057         END IF;
4058 
4059         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
4060           --ER(3338592) Changes
4061           IF group_str IS NOT NULL THEN
4062              group_str := group_str || ' , v.locator_id  ' ;
4063           END IF;
4064         END IF;
4065 
4066   -- NSRIVAST, INVCONV, Start
4067       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4068          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
4069       END IF ;
4070       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
4071          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
4072       END IF ;
4073    -- NSRIVAST, INVCONV, End
4074 
4075         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
4076           query_str  := query_str || ' AND v.project_id = :pr_id ';
4077           --ER(3338592) Changes
4078           IF group_str IS NOT NULL THEN
4079              group_str := group_str || ' , v.project_id  ' ;
4080           END IF;
4081         END IF;
4082 
4083         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
4084           query_str  := query_str || ' AND v.task_id = :ta_id ';
4085           --ER(3338592) Changes
4086           IF group_str IS NOT NULL THEN
4087              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
4088           END IF;
4089         END IF;
4090 
4091         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4092           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
4093         END IF;
4094 
4095         --Bug # 3411938
4096         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
4097           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
4098            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
4099         END IF;
4100 
4101         --ER(3338592) Changes
4102         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4103            query_str := query_str || ' AND v.item_description LIKE :item_description ';
4104         END IF;
4105 
4106         IF inv_mwb_globals.g_revision IS NOT NULL THEN
4107           query_str  := query_str || 'AND v.revision = :rev ';
4108           --ER(3338592) Changes
4109           IF group_str IS NOT NULL THEN
4110              group_str := group_str || ' , v.revision  ' ;
4111           END IF;
4112         END IF;
4113 
4114         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4115           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
4116           --ER(3338592) Changes
4117           IF group_str IS NOT NULL THEN
4118              group_str := group_str || ' , v.cost_group_id  ' ;
4119           END IF;
4120         END IF;
4121 
4122         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
4123           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
4124         END IF;
4125 
4126         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
4127           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
4128         END IF;
4129 
4130         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
4131           query_str  := query_str || ' AND v.unit_number=:un_id ';
4132         END IF;
4133 
4134         IF inv_mwb_globals.g_lot_controlled = 2 THEN
4135           query_str  := query_str || 'AND v.lot_number is not null ';
4136         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
4137           query_str  := query_str || 'AND v.lot_number is null ';
4138         END IF;
4139 
4140         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
4141         -- from onhand table (MOQD)
4142         if (l_default_status_id is not null) then
4143           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
4144              query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
4145           END IF;
4146         else
4147           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
4148             query_str  := query_str || 'AND (v.subinventory_status_id = :st_id ';
4149             query_str  := query_str || 'OR v.locator_status_id = :st_id OR v.lot_status_id = :st_id) ';
4150           END IF;
4151         end if;
4152 
4153         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
4154            IF inv_mwb_globals.g_containerized = 1 THEN
4155               query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
4156            ELSIF inv_mwb_globals.g_containerized = 2 THEN
4157               query_str  := query_str || ' AND v.containerized_flag = 1 ';
4158            END IF;
4159         END IF;
4160 
4161         IF inv_mwb_globals.g_serial_controlled = 1 THEN
4162           --query_str  := query_str || 'AND serial_number_control_code not in (2,5) ';
4163           query_str  := query_str || 'AND v.item_serial_control not in (2,5) ';
4164         ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
4165           --query_str  := query_str || 'AND serial_number_control_code in (2,5) ';
4166           query_str  := query_str || 'AND v.item_serial_control in (2,5) ';
4167         END IF;
4168 
4169         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
4170            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
4171            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
4172          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
4173            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
4174            query_str := query_str || ' AND  planning_organization_idanization_id in ';
4175            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
4176            query_str := query_str || '  where vendor_id = :vendor_id )';
4177         END IF;*/
4178 
4179         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
4180           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
4181           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
4182         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
4183           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
4184           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
4185         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
4186           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
4187         END IF;
4188 
4189         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
4190           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
4191           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
4192         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
4193           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
4194           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
4195         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
4196           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
4197         END IF;
4198 
4199         --Bug #3411938
4200         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4201            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
4202            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
4203            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
4204         END IF;
4205 
4206         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
4207            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
4208         END IF;
4209 
4210         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
4211            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
4212         END IF;
4213 
4214         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4215           query_str := query_str || 'AND v.organization_id = mp.organization_id  ';
4216           query_str := query_str || group_str || having_str || '  ' ;
4217         ELSE
4218           query_str := query_str || 'AND v.organization_id = mp.organization_id  ';
4219         END IF;
4220 
4221         query_str  := query_str || 'UNION ALL ';
4222 
4223         --Reinitializing the variable
4224         having_str := ' HAVING 1=1 ' ;
4225 
4226         IF (inv_mwb_globals.g_status_id IS NULL) THEN
4227           table_required  := ' mtl_onhand_serial_mwb_v v ';
4228         ELSE
4229           table_required  := ' mtl_onhand_serial_v v ';
4230         END IF;
4231 
4232 	--bug 6633612
4233 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4234 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
4235 	END IF;
4236 	--bug 6633612
4237 
4238         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
4239            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
4240           query_str  := query_str || 'SELECT v.organization_id from ' || table_required;
4241           query_str  := query_str || 'WHERE 1=1 ';
4242         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
4243               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
4244           query_str  :=
4245                 query_str
4246              || 'SELECT v.organization_id from'
4247              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
4248              || inv_mwb_globals.g_tree_lot_attr_query
4249              || ') mln, '
4250              || table_required;
4251           query_str  := query_str || ' WHERE mln.lot_num = v.lot_number ';
4252 	       	--BUG 7556505
4253 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4254 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4255 	           END IF;
4256 		--BUG 7556505
4257         END IF;
4258 
4259         --ER(3338592) Changes (If the user gives the value for the Qty then only
4260         --Group by clause comes in to effect)
4261 
4262         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4263            group_str := ' GROUP BY  v.organization_id ';
4264         END IF;
4265 
4266         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4267           query_str  := query_str || 'AND v.subinventory_code = :sub ';
4268           --ER(3338592) Changes
4269           IF group_str IS NOT NULL THEN
4270              group_str := group_str || ' , v.subinventory_code  ' ;
4271           END IF;
4272         END IF;
4273 
4274 	--bug 6633612
4275 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
4276 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
4277 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
4278 					 || ' AND rt.organization_id = mmt.organization_id '
4279 					 || ' AND rt.transaction_type = ''DELIVER'''
4280 					 || ' AND rt.destination_type_code = ''INVENTORY'''
4281 					 || ' AND mmt.transaction_id = v.last_transaction_id '
4282 					 || ' AND mmt.organization_id = v.organization_id ';
4283 
4284 	END IF;
4285 	--bug 6633612
4286 
4287         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
4288           --ER(3338592) Changes
4289           IF group_str IS NOT NULL THEN
4290              group_str := group_str || ' , v.subinventory_code  ' ;
4291           END IF;
4292         END IF;
4293 
4294         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4295           query_str  := query_str || 'AND v.locator_id = :loc_id ';
4296           --ER(3338592) Changes
4297           IF group_str IS NOT NULL THEN
4298              group_str := group_str || ' , v.locator_id  ' ;
4299           END IF;
4300         END IF;
4301 
4302         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
4303           --ER(3338592) Changes
4304           IF group_str IS NOT NULL THEN
4305              group_str := group_str || ' , v.locator_id  ' ;
4306           END IF;
4307         END IF;
4308 
4309         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4310           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
4311         END IF;
4312 
4313         --Bug # 3411938
4314         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
4315           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
4316            group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
4317         END IF;
4318 
4319         --ER(3338592) Changes
4320         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4321            query_str := query_str || ' AND v.item_description LIKE :item_description ';
4322         END IF;
4323 
4324         IF inv_mwb_globals.g_revision IS NOT NULL THEN
4325           query_str  := query_str || 'AND v.revision = :rev ';
4326           --ER(3338592) Changes
4327           IF group_str IS NOT NULL THEN
4328              group_str := group_str || ' , v.revision  ' ;
4329           END IF;
4330         END IF;
4331 
4332         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4333           query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
4334           --ER(3338592) Changes
4335           IF group_str IS NOT NULL THEN
4336              group_str := group_str || ' , v.cost_group_id  ' ;
4337           END IF;
4338         END IF;
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_serial_from IS NOT NULL THEN
4349           query_str  := query_str || ' AND v.serial_number >= :serial_f ';
4350         END IF;
4351 
4352         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
4353           query_str  := query_str || ' AND v.serial_number <= :serial_t ';
4354         END IF;
4355 
4356         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
4357         -- from serial table (MSN)
4358         if (l_default_status_id is not null) then
4359           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
4360              query_str  := query_str || 'AND v.serial_status_id = :st_id ';
4361           END IF;
4362         else
4363           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
4364             query_str  := query_str || 'AND (v.subinventory_status_id = :st_id OR v.locator_status_id = :st_id ';
4365             query_str  := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
4366           END IF;
4367         end if;
4368 
4369         IF inv_mwb_globals.g_lot_controlled = 2 THEN
4370           query_str  := query_str || 'AND v.lot_number is not null ';
4371         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
4372           query_str  := query_str || 'AND v.lot_number is null ';
4373         END IF;
4374 
4375         IF inv_mwb_globals.g_chk_receiving <> 1 THEN
4376            IF inv_mwb_globals.g_containerized = 1 THEN
4377               query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
4378            ELSIF inv_mwb_globals.g_containerized = 2 THEN
4379               query_str  := query_str || ' AND v.containerized_flag = 1 ';
4380            END IF;
4381         END IF;
4382 
4383         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4384            group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
4385            group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
4386            group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
4387         END IF;
4388 
4389         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
4390            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
4391         END IF;
4392 
4393         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
4394            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
4395         END IF;
4396 
4397         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4398            query_str := query_str || ' AND v.organization_id = mp.organization_id  ';
4399            query_str := query_str || group_str || having_str || ' ) ' ;
4400         ELSE
4401            query_str := query_str || ' AND v.organization_id = mp.organization_id ) ';
4402         END IF;
4403 
4404         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4405           query_str  := query_str || ' and mp.organization_id = :org_id ';
4406         -- Bug # 3411938
4407         ELSE
4408           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
4409           query_str  := query_str || ' FROM org_access_view oav ' ;
4410           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
4411           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
4412           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
4413         END IF;
4414 
4415         query_str  := query_str || ' ORDER BY organization_code ';
4416 
4417       -- Need to use MTL_ONHAND_LPN_V
4418       ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
4419             OR inv_mwb_globals.g_lpn_to IS NOT NULL
4420             OR nvl(inv_mwb_globals.g_prepacked,1) <> 1) THEN
4421         IF inv_mwb_globals.g_tree_mat_loc_id = 2
4422         OR inv_mwb_globals.g_chk_receiving = 1 THEN
4423           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
4424         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
4425           IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
4426             table_required  := ' mtl_onhand_lpn_mwb_v mol ';
4427               IF is_grade_t = TRUE THEN                              -- NSRIVAST, INVCONV
4428                   table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
4429               END IF;
4430           ELSE
4431             table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
4432           END IF;
4433         ELSE
4434           IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
4435             table_required  := ' mtl_onhand_lpn_v mol ';
4436               IF is_grade_t = TRUE THEN                              -- NSRIVAST, INVCONV
4437                   table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
4438               END IF;
4439           ELSE
4440             table_required  := ' mtl_onhand_new_lpn_v mol ';
4441           END IF;
4442         END IF;
4443 
4444         query_str  := query_str || ' SELECT organization_id from ' || table_required;
4445 
4446         IF inv_mwb_globals.g_lpn_from IS NOT NULL
4447            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4448           query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
4449           query_str  := query_str || ' WHERE 1=1 ';
4450 
4451           IF inv_mwb_globals.g_tree_mat_loc_id = 2
4452 	  OR inv_mwb_globals.g_chk_receiving = 1 THEN
4453             query_str  := query_str || ' AND lpn_context = 3 ';
4454           ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
4455             query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 )';
4456           ELSIF inv_mwb_globals.g_prepacked = 1 THEN
4457             query_str  := query_str || ' AND lpn_context = 1 ';
4458           ELSIF inv_mwb_globals.g_prepacked <> 1
4459                 AND inv_mwb_globals.g_prepacked <> 999
4460                 AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
4461             query_str  := query_str || ' AND lpn_context = :prepacked ';
4462           END IF;
4463 
4464           IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4465             query_str  := query_str || ' AND wlpn.locator_id = :loc_id ';
4466           END IF;
4467 
4468           IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4469             query_str  := query_str || ' AND wlpn.subinventory_code = :sub ';
4470           END IF;
4471 
4472           IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4473             query_str  := query_str || ' AND wlpn.organization_id = :org_id ';
4474           END IF;
4475 
4476           IF inv_mwb_globals.g_lpn_from IS NOT NULL
4477              OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4478             IF inv_mwb_globals.g_lpn_from IS NOT NULL
4479                AND inv_mwb_globals.g_lpn_to IS NULL THEN
4480               query_str  := query_str || ' and license_plate_number >= :lpn_f ';
4481             ELSIF inv_mwb_globals.g_lpn_from IS NULL
4482                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4483               query_str  := query_str || ' and license_plate_number <= :lpn_t ';
4484             ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
4485                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4486                   --bugfix#3646484
4487                   IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
4488                    --User is querying for single LPN so converted the range query to equality query
4489                    query_str := query_str || 'and license_plate_number = :lpn_f ';
4490                   ELSE
4491                     query_str  := query_str || ' and license_plate_number >= :lpn_f ';
4492                     query_str  := query_str || ' and license_plate_number <= :lpn_t ';
4493                   END IF;
4494             END IF;
4495           END IF;
4496 
4497           query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
4498         END IF;
4499 
4500         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
4501            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
4502           query_str  := query_str || 'WHERE 1=1 ';
4503         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
4504               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
4505           query_str  :=
4506                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
4507                      || ') msn ';
4508           query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
4509         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
4510               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
4511           query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
4512           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
4513  		--BUG 7556505
4514 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4515 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4516 	           END IF;
4517 		--BUG 7556505
4518         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
4519               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
4520           query_str  :=
4521                 query_str
4522              || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
4523              || inv_mwb_globals.g_tree_lot_attr_query
4524              || ') mln '
4525              || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
4526              || inv_mwb_globals.g_tree_serial_attr_query
4527              || ') msn ';
4528           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
4529  		--BUG 7556505
4530 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4531 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
4532 	           END IF;
4533 		--BUG 7556505
4534           query_str  := query_str || 'AND msn.serial_num = serial_number ';
4535         END IF;
4536 
4537          --ER(3338592) Changes (If the user gives the value for the Qty then only
4538          --Group by clause comes in to effect)
4539 
4540          IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4541             group_str := ' GROUP BY  organization_id  ';
4542          END IF;
4543 
4544         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4545           query_str  := query_str || 'AND subinventory_code = :sub ';
4546           --ER(3338592) Changes
4547           IF group_str IS NOT NULL THEN
4548              group_str := group_str || ' , subinventory_code  ' ;
4549           END IF;
4550         END IF;
4551 
4552         IF inv_mwb_globals.g_subinventory_code IS NULL AND inv_mwb_globals.g_detailed = 1 THEN   --Bug # 3412002
4553           --ER(3338592) Changes
4554           IF group_str IS NOT NULL THEN
4555              group_str := group_str || ' , subinventory_code  ' ;
4556           END IF;
4557         END IF;
4558 
4559   -- NSRIVAST, INVCONV, Start
4560       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4561          query_str := query_str || ' AND grade_code = :grade_f ' ;
4562       END IF ;
4563       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
4564          query_str := query_str || ' AND grade_code = :grade_c ' ;
4565       END IF ;
4566    -- NSRIVAST, INVCONV, End
4567 
4568         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4569           query_str  := query_str || 'AND locator_id = :loc_id ';
4570           --ER(3338592) Changes
4571           IF group_str IS NOT NULL THEN
4572              group_str := group_str || ' , locator_id  ' ;
4573           END IF;
4574         END IF;
4575 
4576         IF inv_mwb_globals.g_locator_id IS NULL AND inv_mwb_globals.g_detailed = 1 THEN  --Bug # 3412002
4577           --ER(3338592) Changes
4578           IF group_str IS NOT NULL THEN
4579              group_str := group_str || ' , locator_id  ' ;
4580           END IF;
4581         END IF;
4582 
4583         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
4584           query_str  := query_str || ' AND project_id = :pr_id ';
4585           --ER(3338592) Changes
4586           IF group_str IS NOT NULL THEN
4587              group_str := group_str || ' , project_id  ' ;
4588           END IF;
4589         END IF;
4590 
4591         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
4592           query_str  := query_str || ' AND task_id = :ta_id ';
4593           --ER(3338592) Changes
4594           IF group_str IS NOT NULL THEN
4595              group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
4596           END IF;
4597         END IF;
4598 
4599         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4600           query_str  := query_str || ' AND inventory_item_id = :item_id ';
4601         END IF;
4602 
4603         --Bug # 3411938
4604         IF (inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL)
4605           AND (NVL(inv_mwb_globals.g_view_by,' ') NOT IN ('LOT' , 'SERIAL'))  THEN
4606            group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
4607         END IF;
4608 
4609         --ER(3338592) Changes
4610         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4611            query_str := query_str || ' AND item_description LIKE :item_description ';
4612         END IF;
4613 
4614         IF inv_mwb_globals.g_revision IS NOT NULL THEN
4615           query_str  := query_str || ' AND revision = :rev ';
4616           --ER(3338592) Changes
4617           IF group_str IS NOT NULL THEN
4618              group_str := group_str || ' , revision  ' ;
4619           END IF;
4620         END IF;
4621 
4622         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4623           query_str  := query_str || ' AND cost_group_id = :cg_id ';
4624           --ER(3338592) Changes
4625           IF group_str IS NOT NULL THEN
4626              group_str := group_str || ' , cost_group_id  ' ;
4627           END IF;
4628         END IF;
4629 
4630         IF inv_mwb_globals.g_lpn_from IS NOT NULL
4631            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4632           query_str  := query_str || ' AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
4633         END IF;
4634 
4635         --ER(3338592) Changes
4636         IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4637            --ER(3338592) Changes
4638            IF group_str IS NOT NULL THEN
4639               group_str := group_str || ' , lpn ' ;
4640           END IF;
4641         END IF;
4642 
4643         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
4644           query_str  := query_str || ' AND lot_number >= :lot_f ';
4645         END IF;
4646 
4647         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
4648           query_str  := query_str || ' AND lot_number <= :lot_t ';
4649         END IF;
4650 
4651         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
4652           query_str  := query_str || ' AND serial_number >= :serial_f ';
4653         END IF;
4654 
4655         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
4656           query_str  := query_str || ' AND serial_number <= :serial_t ';
4657         END IF;
4658 
4659         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
4660           query_str  := query_str || ' AND unit_number=:un_id ';
4661         END IF;
4662 
4663 	/*LPN Status Project */
4664 	IF (l_default_status_id IS NOT NULL) THEN
4665           IF inv_mwb_globals.g_status_id IS NOT NULL OR inv_mwb_globals.g_only_subinventory_status = 1 THEN
4666 	    query_str  := query_str || 'AND onhand_status_id = :st_id ';
4667 	  END IF;
4668 	ELSE
4669           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
4670             query_str  := query_str || ' AND (subinventory_status_id = :st_id OR locator_status_id = :st_id ';
4671             query_str  := query_str || ' OR lot_status_id = :st_id OR serial_status_id = :st_id) ';
4672           END IF;
4673         END IF;
4674        /*End of fix for LPN Status Project */
4675 
4676         IF inv_mwb_globals.g_lot_controlled = 2 THEN
4677           query_str  := query_str || ' AND lot_number is not null ';
4678         ELSIF inv_mwb_globals.g_lot_controlled = 1 THEN
4679           query_str  := query_str || ' AND lot_number is null ';
4680         END IF;
4681 
4682         IF inv_mwb_globals.g_serial_controlled = 1 THEN
4683           query_str  := query_str || ' AND serial_number is null ';
4684         ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
4685           query_str  := query_str || ' AND serial_number is not null ';
4686         END IF;
4687 
4688         IF inv_mwb_globals.g_tree_mat_loc_id = 2
4689         OR inv_mwb_globals.g_chk_receiving = 1 THEN
4690           query_str  := query_str || ' AND lpn_context = 3 ';
4691         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
4692           query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 ) ';
4693         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
4694           query_str  := query_str || 'AND lpn_context = 1 ';
4695         ELSIF inv_mwb_globals.g_prepacked <> 1
4696               AND inv_mwb_globals.g_prepacked <> 999
4697               AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
4698           query_str  := query_str || 'AND lpn_context = :prepacked ';
4699         END IF;
4700 
4701         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
4702            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
4703            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
4704          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
4705            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
4706            query_str := query_str || ' AND  planning_organization_id in ';
4707            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
4708            query_str := query_str || '  where vendor_id = :vendor_id )';
4709         END IF;*/
4710 
4711         IF  (inv_mwb_globals.g_owning_qry_mode = 4) THEN
4712           query_str  := query_str || ' AND owning_organization_id = :own_org ';
4713           query_str  := query_str || ' AND owning_tp_type = 2 ';
4714         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
4715           query_str  := query_str || ' AND owning_organization_id = :own_org ';
4716           query_str  := query_str || ' AND owning_tp_type = 1 ';
4717         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
4718           query_str  := query_str || ' AND owning_tp_type = 1 ';
4719         END IF;
4720 
4721         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
4722           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
4723           query_str  := query_str || ' AND planning_tp_type = 2 ';
4724         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
4725           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
4726           query_str  := query_str || ' AND planning_tp_type = 1 ';
4727         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
4728           query_str  := query_str || ' AND planning_tp_type = 1 ';
4729         END IF;
4730 
4731         --Bug #3411938
4732         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4733            group_str := group_str || ' , planning_organization_id, planning_tp_type ';
4734            group_str := group_str || ' , owning_organization_id, owning_tp_type ';
4735            group_str := group_str || ' , item_lot_control, item_serial_control ';
4736         END IF;
4737 
4738         IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
4739            having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
4740         END IF;
4741 
4742         IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
4743            having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
4744         END IF;
4745 
4746         IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
4747           query_str := query_str || 'AND organization_id = mp.organization_id  ';
4748           query_str := query_str || group_str || having_str || ' ) ' ;
4749         ELSE
4750           query_str := query_str || 'AND organization_id = mp.organization_id ) ';
4751         END IF;
4752 
4753         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4754           query_str  := query_str || 'and mp.organization_id = :org_id ';
4755         --Bug # 3411938
4756         ELSE
4757           query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
4758           query_str  := query_str || ' FROM org_access_view oav ' ;
4759           query_str  := query_str || ' WHERE oav.organization_id = mp.organization_id ' ;
4760           query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
4761           query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
4762         END IF;
4763 
4764         query_str  := query_str || ' ORDER BY organization_code ';
4765 
4766       END IF;
4767     END IF;
4768 
4769        --trace1(query_str, 'add_orgs', 9);
4770 
4771     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
4772 
4773     inv_mwb_globals.g_last_query := query_str;
4774 
4775     query_hdl       := DBMS_SQL.open_cursor;
4776     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
4777 
4778 
4779     IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4780       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
4781     END IF;
4782 
4783     IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
4784       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
4785     END IF;
4786 
4787     IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
4788       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
4789     END IF;
4790 
4791     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
4792       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
4793     END IF;
4794 
4795     IF inv_mwb_globals.g_revision IS NOT NULL THEN
4796       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
4797     END IF;
4798 
4799     --bug 6633612
4800     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
4801       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
4802     END IF;
4803     --bug 6633612
4804 
4805     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
4806       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
4807     END IF;
4808 
4809     --BUG 7556505
4810     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
4811       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
4812     END IF;
4813     --BUG 7556505
4814 
4815     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
4816       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
4817     END IF;
4818 
4819     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
4820       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
4821     END IF;
4822 
4823  -- NSRIVAST, INVCONV, Start
4824     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
4825       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
4826     END IF;
4827     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
4828       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
4829     END IF;
4830  -- NSRIVAST, INVCONV, End
4831     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
4832       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
4833     END IF;
4834 
4835     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
4836       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
4837     END IF;
4838 
4839       --bugfix#3646484
4840       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
4841       --User is querying for single LPN so converted the range query to equality query
4842       --So it is enought to bind the from lpn alone
4843          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
4844       ELSE
4845           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
4846             DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
4847           END IF;
4848 
4849           IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
4850             DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
4851           END IF;
4852       END IF;
4853 
4854     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
4855       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
4856     ELSIF inv_mwb_globals.g_only_subinventory_status = 1 AND l_default_status_id is not null THEN -- Onhand Material Status Support
4857       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
4858     END IF;
4859 
4860     IF inv_mwb_globals.g_prepacked <> 1
4861        AND inv_mwb_globals.g_prepacked <> 999
4862        AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
4863       DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
4864     END IF;
4865 
4866     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
4867       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
4868     END IF;
4869 
4870     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
4871       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
4872     END IF;
4873 
4874     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
4875       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
4876     END IF;
4877 
4878     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
4879       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
4880     END IF;
4881 
4882     IF (inv_mwb_globals.g_owning_qry_mode = 4)
4883        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
4884       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
4885     END IF;
4886 
4887     IF (inv_mwb_globals.g_planning_query_mode = 4)
4888        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
4889       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
4890     END IF;
4891 
4892     --ER(3338592) Changes
4893     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
4894       dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
4895     END IF;
4896 
4897     IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
4898       dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
4899     END IF;
4900 
4901     IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
4902        dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
4903     END IF;
4904     --End of ER Changes
4905 
4906     --Bug #3411938
4907     IF inv_mwb_globals.g_organization_id IS NULL THEN
4908        IF inv_mwb_globals.g_responsibility_id  IS NOT NULL THEN
4909           dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
4910        END IF;
4911 
4912        IF inv_mwb_globals.g_resp_application_id  IS NOT NULL THEN
4913           dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
4914        END IF;
4915     END IF;
4916 
4917     DBMS_SQL.define_column(query_hdl, 1, org_id);
4918     DBMS_SQL.define_column(query_hdl, 2, org_code, 3);
4919 
4920     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Org id , Org code '||org_id||','||org_code );
4921 
4922 IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
4923    SELECT   mp.organization_id, mp.organization_code
4924       INTO  org_id,org_code
4925        FROM mtl_parameters mp
4926       WHERE EXISTS (SELECT organization_id
4927                       FROM mtl_onhand_total_mwb_v
4928                      WHERE 1 = 1 AND organization_id = mp.organization_id)
4929         AND mp.organization_id = inv_mwb_globals.g_organization_id
4930    ORDER BY organization_code;
4931 END IF;
4932     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
4933 
4934     LOOP
4935       -- fetch a row
4936       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
4937         -- fetch columns from the row
4938 
4939         DBMS_SQL.column_value(query_hdl, 1, org_id);
4940         DBMS_SQL.column_value(query_hdl, 2, org_code);
4941         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Coming inside, Org code : '||org_id||org_code );
4942 	FOR j in 1 .. x_node_tbl.COUNT LOOP
4943            IF x_node_tbl(j).LABEL = org_code THEN
4944               inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'In loop: '||x_node_tbl(j).LABEL );
4945 	      inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, x_node_tbl(j).VALUE);
4946 	      RETURN;
4947 	   END IF;
4948 	END LOOP;
4949         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'after loop');
4950 	   IF j >= inv_mwb_globals.g_tree_node_low_value THEN
4951 	      x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
4952               x_node_tbl(i).DEPTH  := 1;
4953 	      x_node_tbl(i).label  := org_code;
4954 	      x_node_tbl(i).icon   := 'inv_inor';
4955 	      x_node_tbl(i).VALUE  := TO_CHAR(org_id);
4956 	      x_node_tbl(i).TYPE   := 'ORG';
4957 	      i                    := i + 1;
4958 	   END IF;
4959         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
4960         j  := j + 1;
4961       ELSE
4962         EXIT;
4963       END IF;
4964     END LOOP;
4965 
4966     DBMS_SQL.close_cursor(query_hdl); -- close cursor
4967     x_node_value    := j;
4968     x_tbl_index     := i;
4969 
4970 --   END IF; -- in onhand > 0
4971   EXCEPTION
4972     WHEN NO_DATA_FOUND THEN
4973       NULL;
4974     WHEN OTHERS THEN
4975       RAISE;
4976   END add_orgs;
4977 
4978   -- Add status nodes for the given parameters
4979   PROCEDURE add_statuses(
4980     x_node_value          IN OUT NOCOPY NUMBER
4981   , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
4982   , x_tbl_index           IN OUT NOCOPY NUMBER
4983     ) IS
4984     query_str      VARCHAR2(10000);
4985     query_hdl      NUMBER;
4986     rows_processed NUMBER;
4987     status_id      mtl_material_statuses_vl.status_id%TYPE;
4988     status_code    mtl_material_statuses_vl.status_code%TYPE;
4989     i              NUMBER                                      := x_tbl_index;
4990     j              NUMBER                                      := x_node_value;
4991     serial_control NUMBER;
4992     table_required VARCHAR2(300);
4993 
4994     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
4995 
4996     --ER(3338592) Changes
4997     group_str      VARCHAR2(10000) ;
4998     having_str     VARCHAR2(10000) := ' HAVING 1=1 ';
4999     --End of ER Changes
5000 
5001     l_procedure_name CONSTANT VARCHAR2(30)  := 'ADD_STATUSES';
5002     l_default_status_id NUMBER; -- Onhand Material Status Support
5003    BEGIN
5004       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
5005 
5006       -- Onhand Material Status Support
5007       if (inv_mwb_globals.g_organization_id is not null) then
5008          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
5009            l_default_status_id :=  inv_cache.org_rec.default_status_id;
5010          end if;
5011       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
5012          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
5013            l_default_status_id :=  inv_cache.org_rec.default_status_id;
5014          end if;
5015       end if;
5016 
5017    -- NSRIVAST, INVCONV, Start
5018      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
5019              is_grade_t     := TRUE ;
5020      END IF ;
5021    -- NSRIVAST, INVCONV, End
5022 
5023     query_str       := 'SELECT mms.status_id, mms.status_code ';
5024     query_str       := query_str || 'FROM mtl_material_statuses_vl mms ';
5025     query_str       := query_str || ' WHERE exists (';
5026 
5027     IF inv_mwb_globals.g_organization_id IS NOT NULL
5028        AND inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5029       SELECT serial_number_control_code
5030         INTO serial_control
5031         FROM mtl_system_items
5032        WHERE organization_id = inv_mwb_globals.g_organization_id
5033          AND inventory_item_id = inv_mwb_globals.g_inventory_item_id;
5034     END IF;
5035 
5036     IF (serial_control IN(2, 5)
5037         OR inv_mwb_globals.g_serial_from IS NOT NULL
5038         OR inv_mwb_globals.g_serial_to IS NOT NULL
5039         OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL)
5040        AND inv_mwb_globals.g_lpn_from IS NULL
5041        AND inv_mwb_globals.g_lpn_to IS NULL THEN
5042       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
5043          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5044         query_str  := query_str || 'SELECT v.organization_id from mtl_onhand_serial_v v ';
5045 	--bug 6633612
5046 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5047 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5048 	END IF;
5049 	--bug 6633612
5050         query_str  := query_str || 'WHERE 1=1 ';
5051       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
5052             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
5053         query_str  :=
5054               query_str
5055            || 'SELECT v.organization_id from'
5056            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
5057            || inv_mwb_globals.g_tree_serial_attr_query
5058            || ') msn, mtl_onhand_serial_v v ';
5059 	--bug 6633612
5060 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5061 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5062 	END IF;
5063 	--bug 6633612
5064         query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
5065       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
5066             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5067         query_str  :=
5068               query_str
5069            || 'SELECT v.organization_id from'
5070            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5071            || inv_mwb_globals.g_tree_lot_attr_query
5072            || ') mln, mtl_onhand_serial_v v ';
5073    	--bug 6633612
5074 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5075 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5076 	END IF;
5077 	--bug 6633612
5078         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
5079  		--BUG 7556505
5080 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5081 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5082 	           END IF;
5083 		--BUG 7556505
5084       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
5085             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
5086         query_str  :=
5087               query_str
5088            || 'SELECT v.organization_id from'
5089            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5090            || inv_mwb_globals.g_tree_lot_attr_query
5091            || ') mln, '
5092            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
5093            || inv_mwb_globals.g_tree_serial_attr_query
5094            || ') msn, mtl_onhand_serial_v v ';
5095    	--bug 6633612
5096 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5097 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5098 	END IF;
5099 	--bug 6633612
5100         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
5101  		--BUG 7556505
5102 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5103 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5104 	           END IF;
5105 		--BUG 7556505
5106         query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
5107       END IF;
5108 
5109       --ER(3338592) Changes (If the user gives the value for the Qty then only
5110       --Group by clause comes in to effect)
5111 
5112       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5113          group_str := ' GROUP BY  v.organization_id  ';
5114       END IF;
5115 
5116       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5117         query_str  := query_str || 'AND v.organization_id = :org_id ';
5118       END IF;
5119 
5120       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5121         query_str  := query_str || 'AND v.subinventory_code <= :sub ';
5122         --ER(3338592) Changes
5123         IF group_str IS NOT NULL THEN
5124            group_str := group_str || ' , v.subinventory_code  ' ;
5125         END IF;
5126       END IF;
5127 	--bug 6633612
5128 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5129 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
5130 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
5131 					 || ' AND rt.organization_id = mmt.organization_id '
5132 					 || ' AND rt.transaction_type = ''DELIVER'''
5133 					 || ' AND rt.destination_type_code = ''INVENTORY'''
5134 					 || ' AND mmt.transaction_id = v.last_transaction_id '
5135 					 || ' AND mmt.organization_id = v.organization_id ';
5136 
5137 	END IF;
5138 	--bug 6633612
5139 
5140   -- NSRIVAST, INVCONV, Start
5141       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
5142          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
5143       END IF ;
5144       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
5145          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
5146       END IF ;
5147    -- NSRIVAST, INVCONV, End
5148 
5149       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5150         query_str  := query_str || 'AND v.locator_id = :loc_id ';
5151         --ER(3338592) Changes
5152         IF group_str IS NOT NULL THEN
5153            group_str := group_str || ' , v.locator_id  ' ;
5154         END IF;
5155       END IF;
5156 
5157       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
5158         query_str  := query_str || ' AND v.project_id = :pr_id ';
5159         --ER(3338592) Changes
5160         IF group_str IS NOT NULL THEN
5161            group_str := group_str || ' , v.project_id  ' ;
5162         END IF;
5163       END IF;
5164 
5165       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
5166         query_str  := query_str || ' AND v.task_id = :ta_id ';
5167         --ER(3338592) Changes
5168         IF group_str IS NOT NULL THEN
5169            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
5170         END IF;
5171       END IF;
5172 
5173       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5174          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
5175       END IF;
5176 
5177       --Bug # 3411938
5178       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5179          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
5180       END IF;
5181 
5182       --ER(3338592) Changes
5183       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5184          query_str := query_str || ' AND v.item_description LIKE :item_description ';
5185       END IF;
5186 
5187       IF inv_mwb_globals.g_revision IS NOT NULL THEN
5188         query_str  := query_str || 'AND v.revision <= :rev ';
5189         --ER(3338592) Changes
5190         IF group_str IS NOT NULL THEN
5191            group_str := group_str || ' , v.revision  ' ;
5192         END IF;
5193       END IF;
5194 
5195       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5196         query_str  := query_str || 'AND v.cost_group_id = :cg_id  ';
5197         --ER(3338592) Changes
5198         IF group_str IS NOT NULL THEN
5199            group_str := group_str || ' , v.cost_group_id  ' ;
5200         END IF;
5201       END IF;
5202 
5203       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5204         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
5205       END IF;
5206 
5207       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5208         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
5209       END IF;
5210 
5211       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
5212         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
5213       END IF;
5214 
5215       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
5216         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
5217       END IF;
5218 
5219       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
5220         query_str  := query_str || ' AND v.unit_number=:un_id ';
5221       END IF;
5222 
5223       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
5224          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5225          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
5226        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
5227          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
5228          query_str := query_str || ' AND  planning_organization_id in ';
5229          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
5230          query_str := query_str || '  where vendor_id = :vendor_id )';
5231       END IF;*/
5232 
5233       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
5234         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
5235         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
5236       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
5237         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
5238         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
5239       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
5240         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
5241       END IF;
5242 
5243       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
5244         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
5245         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
5246       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5247         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
5248         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
5249       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
5250         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
5251       END IF;
5252 
5253       --Bug #3411938
5254       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5255          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
5256          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
5257          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
5258       END IF;
5259 
5260       -- Onhand Material Status Support
5261       if (l_default_status_id is not null) then
5262          query_str  := query_str || ' AND v.serial_status_id = mms.status_id ';
5263       else
5264          query_str  := query_str || ' AND (v.subinventory_status_id = mms.status_id ';
5265          query_str  := query_str || ' or v.locator_status_id = mms.status_id or ';
5266          query_str  := query_str || ' v.lot_status_id = mms.status_id or v.serial_status_id = mms.status_id) ';
5267       end if;
5268 
5269       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5270          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5271       END IF;
5272 
5273       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5274          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5275       END IF;
5276 
5277       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5278         query_str  := query_str || 'AND v.organization_id = :org_id ';
5279       ELSE
5280         query_str  := query_str || ' AND  EXISTS ( SELECT 1 ' ;
5281         query_str  := query_str || ' FROM org_access_view oav ' ;
5282         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
5283         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
5284         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
5285       END IF;
5286 
5287       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5288          query_str := query_str || group_str || having_str || '  ' ;
5289       END IF;
5290 
5291       query_str  := query_str || ') ';
5292 
5293       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5294         query_str  := query_str || 'and mms.status_id = :st_id ';
5295       END IF;
5296 
5297       query_str  := query_str || ' ORDER BY status_code ';
5298 
5299     ELSIF inv_mwb_globals.g_lpn_from IS NULL
5300           AND inv_mwb_globals.g_lpn_to IS NULL THEN
5301       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
5302         query_str  := query_str || 'SELECT v.organization_id from mtl_onhand_total_v v ';
5303         query_str  := query_str || 'WHERE 1=1 ';
5304       ELSE
5305         query_str  :=
5306               query_str
5307            || 'SELECT v.organization_id from'
5308            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5309            || inv_mwb_globals.g_tree_lot_attr_query
5310            || ') mln, mtl_onhand_total_v v ';
5311 	--bug 6633612
5312 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5313 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5314 	END IF;
5315 	--bug 6633612
5316         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
5317  		--BUG 7556505
5318 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5319 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5320 	           END IF;
5321 		--BUG 7556505
5322       END IF;
5323 
5324       --ER(3338592) Changes (If the user gives the value for the Qty then only
5325       --Group by clause comes in to effect)
5326 	--bug 6633612
5327 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5328 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
5329 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
5330 					 || ' AND rt.organization_id = mmt.organization_id '
5331 					 || ' AND rt.transaction_type = ''DELIVER'''
5332 					 || ' AND rt.destination_type_code = ''INVENTORY'''
5333 					 || ' AND mmt.transaction_id = v.create_transaction_id '
5334 					 || ' AND mmt.organization_id = v.organization_id ';
5335 
5336 	END IF;
5337 	--bug 6633612
5338 
5339       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5340          group_str := ' GROUP BY  v.organization_id  ';
5341       END IF;
5342 
5343       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5344         query_str  := query_str || 'AND v.organization_id = :org_id ';
5345       END IF;
5346 
5347       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5348         query_str  := query_str || 'AND v.subinventory_code = :sub ';
5349         --ER(3338592) Changes
5350         IF group_str IS NOT NULL THEN
5351            group_str := group_str || ' , v.subinventory_code  ' ;
5352         END IF;
5353       END IF;
5354 
5355   -- NSRIVAST, INVCONV, Start
5356       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
5357          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
5358       END IF ;
5359       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
5360          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
5361       END IF ;
5362    -- NSRIVAST, INVCONV, End
5363 
5364       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5365         query_str  := query_str || 'AND v.locator_id = :loc_id ';
5366         --ER(3338592) Changes
5367         IF group_str IS NOT NULL THEN
5368            group_str := group_str || ' , v.locator_id  ' ;
5369         END IF;
5370       END IF;
5371 
5372       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
5373         query_str  := query_str || ' AND v.project_id = :pr_id ';
5374         --ER(3338592) Changes
5375         IF group_str IS NOT NULL THEN
5376            group_str := group_str || ' , v.project_id  ' ;
5377         END IF;
5378       END IF;
5379 
5380       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
5381         query_str  := query_str || ' AND v.task_id = :ta_id ';
5382         --ER(3338592) Changes
5383         IF group_str IS NOT NULL THEN
5384            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
5385         END IF;
5386       END IF;
5387 
5388       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5389          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
5390       END IF;
5391 
5392       --Bug # 3411938
5393       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5394          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
5395       END IF;
5396 
5397       --ER(3338592) Changes
5398       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5399          query_str := query_str || ' AND v.item_description LIKE :item_description ';
5400       END IF;
5401 
5402       IF inv_mwb_globals.g_revision IS NOT NULL THEN
5403         query_str  := query_str || 'AND v.revision = :rev ';
5404         --ER(3338592) Changes
5405         IF group_str IS NOT NULL THEN
5406            group_str := group_str || ' , v.revision  ' ;
5407         END IF;
5408       END IF;
5409 
5410       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5411         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
5412         --ER(3338592) Changes
5413         IF group_str IS NOT NULL THEN
5414            group_str := group_str || ' , v.cost_group_id  ' ;
5415         END IF;
5416       END IF;
5417 
5418       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5419         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
5420       END IF;
5421 
5422       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5423         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
5424       END IF;
5425 
5426       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
5427         query_str  := query_str || ' AND v.unit_number=:un_id ';
5428       END IF;
5429 
5430       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
5431          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5432          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
5433        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
5434          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
5435          query_str := query_str || ' AND  planning_organization_id in ';
5436          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
5437          query_str := query_str || '  where vendor_id = :vendor_id )';
5438       END IF;*/
5439 
5440       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
5441         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
5442         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
5443         --ER(3338592) Changes
5444         IF group_str IS NOT NULL THEN
5445            group_str := group_str || ' , v.planning_organization_id , v.planning_tp_type ' ;
5446         END IF;
5447       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
5448         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
5449         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
5450         --ER(3338592) Changes
5451         IF group_str IS NOT NULL THEN
5452            group_str := group_str || ' , v.planning_organization_id , v.planning_tp_type ' ;
5453         END IF;
5454       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
5455         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
5456         --ER(3338592) Changes
5457         IF group_str IS NOT NULL THEN
5458            group_str := group_str || ' , v.planning_tp_type ' ;
5459         END IF;
5460       END IF;
5461 
5462       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
5463         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
5464         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
5465         --ER(3338592) Changes
5466         IF group_str IS NOT NULL THEN
5467            group_str := group_str || ' , v.owning_organization_id , v.owning_tp_type ' ;
5468         END IF;
5469       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5470         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
5471         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
5472         --ER(3338592) Changes
5473         IF group_str IS NOT NULL THEN
5474            group_str := group_str || ' , v.owning_organization_id , v.owning_tp_type ' ;
5475         END IF;
5476       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
5477         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
5478         --ER(3338592) Changes
5479         IF group_str IS NOT NULL THEN
5480            group_str := group_str || ' , v.owning_tp_type ' ;
5481         END IF;
5482       END IF;
5483 
5484       --Bug #3411938
5485       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5486          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
5487          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
5488          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
5489       END IF;
5490 
5491       -- Onhand Material Status Support
5492       if (l_default_status_id is not null) then
5493          query_str  := query_str || ' AND v.onhand_status_id = mms.status_id ';
5494       else
5495          query_str  := query_str || 'AND (v.subinventory_status_id = mms.status_id ';
5496          query_str  := query_str || 'or v.locator_status_id = mms.status_id or ';
5497          query_str  := query_str || 'v.lot_status_id = mms.status_id) ';
5498       end if;
5499 
5500       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5501          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5502       END IF;
5503 
5504       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5505          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5506       END IF;
5507 
5508       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5509         query_str  := query_str || 'AND v.organization_id = :org_id ';
5510       ELSE
5511         query_str  := query_str || ' AND  EXISTS ( SELECT 1 ' ;
5512         query_str  := query_str || ' FROM org_access_view oav ' ;
5513         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
5514         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
5515         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
5516       END IF;
5517 
5518       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5519          query_str := query_str || group_str || having_str || '  ' ;
5520       END IF;
5521 
5522       --Reinitializing
5523       having_str := ' HAVING 1=1 ' ;
5524 
5525       query_str  := query_str || 'UNION ';
5526 
5527       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
5528          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5529         query_str  := query_str || 'SELECT v.organization_id from mtl_onhand_serial_v v ';
5530         query_str  := query_str || 'WHERE 1=1 ';
5531       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
5532             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5533         query_str  :=
5534               query_str
5535            || 'SELECT v.organization_id from'
5536            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5537            || inv_mwb_globals.g_tree_lot_attr_query
5538            || ') mln, mtl_onhand_serial_v v  ';
5539 
5540 	--bug 6633612
5541 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5542 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
5543 	END IF;
5544 	--bug 6633612
5545 
5546         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
5547  		--BUG 7556505
5548 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5549 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5550 	           END IF;
5551 		--BUG 7556505
5552       END IF;
5553 
5554       --ER(3338592) Changes (If the user gives the value for the Qty then only
5555       --Group by clause comes in to effect)
5556 
5557       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5558          group_str := ' GROUP BY  v.organization_id ';
5559       END IF;
5560 
5561       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5562         query_str  := query_str || 'AND v.organization_id = :org_id ';
5563       END IF;
5564 
5565       --bug 6633612
5566 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
5567 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
5568 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
5569 					 || ' AND rt.organization_id = mmt.organization_id '
5570 					 || ' AND rt.transaction_type = ''DELIVER'''
5571 					 || ' AND rt.destination_type_code = ''INVENTORY'''
5572 					 || ' AND mmt.transaction_id = v.last_transaction_id '
5573 					 || ' AND mmt.organization_id = v.organization_id ';
5574 
5575 	END IF;
5576 	--bug 6633612
5577 
5578       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5579         query_str  := query_str || 'AND v.subinventory_code = :sub ';
5580         --ER(3338592) Changes
5581         IF group_str IS NOT NULL THEN
5582            group_str := group_str || ' , v.subinventory_code  ' ;
5583         END IF;
5584       END IF;
5585 
5586       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5587         query_str  := query_str || 'AND v.locator_id = :loc_id ';
5588         --ER(3338592) Changes
5589         IF group_str IS NOT NULL THEN
5590            group_str := group_str || ' , v.locator_id  ' ;
5591         END IF;
5592       END IF;
5593 
5594       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
5595         query_str  := query_str || ' AND v.project_id = :pr_id ';
5596         --ER(3338592) Changes
5597         IF group_str IS NOT NULL THEN
5598            group_str := group_str || ' , v.project_id  ' ;
5599         END IF;
5600       END IF;
5601 
5602       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
5603         query_str  := query_str || ' AND v.task_id = :ta_id ';
5604         --ER(3338592) Changes
5605         IF group_str IS NOT NULL THEN
5606            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
5607         END IF;
5608       END IF;
5609 
5610       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5611          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
5612       END IF;
5613 
5614       --Bug # 3411938
5615       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5616          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
5617       END IF;
5618 
5619       --ER(3338592) Changes
5620       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5621          query_str := query_str || ' AND v.item_description LIKE :item_description ';
5622       END IF;
5623 
5624       IF inv_mwb_globals.g_revision IS NOT NULL THEN
5625         query_str  := query_str || 'AND v.revision = :rev ';
5626         --ER(3338592) Changes
5627         IF group_str IS NOT NULL THEN
5628            group_str := group_str || ' , v.revision  ' ;
5629         END IF;
5630       END IF;
5631 
5632       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5633         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
5634         --ER(3338592) Changes
5635         IF group_str IS NOT NULL THEN
5636            group_str := group_str || ' , v.cost_group_id  ' ;
5637         END IF;
5638       END IF;
5639 
5640       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5641         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
5642       END IF;
5643 
5644       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5645         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
5646       END IF;
5647 
5648       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
5649         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
5650       END IF;
5651 
5652       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
5653         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
5654       END IF;
5655 
5656       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
5657         query_str  := query_str || ' AND v.unit_number=:un_id ';
5658       END IF;
5659 
5660       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
5661          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5662          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
5663        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
5664          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
5665          query_str := query_str || ' AND  planning_organization_id in ';
5666          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
5667          query_str := query_str || '  where vendor_id = :vendor_id )';
5668       END IF;*/
5669 
5670       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
5671         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
5672         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
5673       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
5674         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
5675         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
5676       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
5677         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
5678       END IF;
5679 
5680       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
5681         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
5682         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
5683       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5684         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
5685         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
5686       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
5687         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
5688       END IF;
5689 
5690       --Bug #3411938
5691       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5692          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
5693          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
5694          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
5695       END IF;
5696 
5697       -- Onhand Material Status Support
5698       if (l_default_status_id is not null) then
5699          query_str  := query_str || ' AND v.serial_status_id = mms.status_id ';
5700       else
5701          query_str  := query_str || 'AND (v.subinventory_status_id = mms.status_id ';
5702          query_str  := query_str || 'or v.locator_status_id = mms.status_id or ';
5703          query_str  := query_str || 'v.lot_status_id = mms.status_id or v.serial_status_id = mms.status_id) ';
5704       end if;
5705 
5706       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5707          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5708       END IF;
5709 
5710       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5711          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5712       END IF;
5713 
5714       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5715         query_str  := query_str || 'AND v.organization_id = :org_id ';
5716       ELSE
5717         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
5718         query_str  := query_str || ' FROM org_access_view oav ' ;
5719         query_str  := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
5720         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
5721         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
5722       END IF;
5723 
5724       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5725          query_str := query_str || group_str || having_str || '  ' ;
5726       END IF;
5727 
5728       query_str  := query_str || ') ';
5729 
5730       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5731         query_str  := query_str || 'and mms.status_id = :st_id ';
5732       END IF;
5733 
5734       query_str  := query_str || ' ORDER BY status_code ';
5735 
5736     ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
5737           AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5738           IF is_grade_t = TRUE THEN                           -- NSRIVAST, INVCONV
5739                table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
5740           ELSE
5741              table_required  := ' MTL_ONHAND_NEW_LPN_V mol ';
5742           END IF;
5743       query_str       := query_str || 'SELECT organization_id from ' || table_required;
5744 
5745       IF (inv_mwb_globals.g_lpn_from IS NOT NULL
5746           OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
5747         query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
5748         query_str  := query_str || ' WHERE 1=1 ';
5749 
5750         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5751           query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
5752         END IF;
5753 
5754         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5755           query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
5756         END IF;
5757 
5758         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5759           query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
5760         END IF;
5761 
5762         IF inv_mwb_globals.g_lpn_from IS NOT NULL
5763            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5764           IF inv_mwb_globals.g_lpn_from IS NOT NULL
5765              AND inv_mwb_globals.g_lpn_to IS NULL THEN
5766             query_str  := query_str || ' and license_plate_number >= :lpn_f ';
5767           ELSIF inv_mwb_globals.g_lpn_from IS NULL
5768                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5769             query_str  := query_str || ' and license_plate_number <= :lpn_t ';
5770           ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
5771                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5772                   --bugfix#3646484
5773                   IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
5774                      --User is querying for single LPN so converted the range query to equality query
5775                      query_str := query_str || 'and license_plate_number = :lpn_f ';
5776                   ELSE
5777                      query_str  := query_str || ' and license_plate_number >= :lpn_f ';
5778                      query_str  := query_str || ' and license_plate_number <= :lpn_t ';
5779                   END IF;
5780           END IF;
5781         END IF;
5782 
5783         query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
5784       END IF;
5785 
5786       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
5787          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5788         query_str  := query_str || 'WHERE 1=1 ';
5789       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
5790             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
5791         query_str  :=
5792                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
5793                      || ') msn ';
5794         query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
5795       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
5796             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
5797         query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
5798         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
5799  		--BUG 7556505
5800 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5801 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5802 	           END IF;
5803 		--BUG 7556505
5804       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
5805             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
5806         query_str  :=
5807               query_str
5808            || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
5809            || inv_mwb_globals.g_tree_lot_attr_query
5810            || ') mln '
5811            || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
5812            || inv_mwb_globals.g_tree_serial_attr_query
5813            || ') msn ';
5814         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
5815  		--BUG 7556505
5816 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
5817 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
5818 	           END IF;
5819 		--BUG 7556505
5820         query_str  := query_str || 'AND msn.serial_num = serial_number ';
5821       END IF;
5822 
5823       --ER(3338592) Changes (If the user gives the value for the Qty then only
5824       --Group by clause comes in to effect)
5825 
5826       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5827          group_str := ' GROUP BY  organization_id ';
5828       END IF;
5829 
5830       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
5831         query_str  := query_str || 'AND subinventory_code = :sub ';
5832         --ER(3338592) Changes
5833         IF group_str IS NOT NULL THEN
5834            group_str := group_str || ' , subinventory_code  ' ;
5835         END IF;
5836       END IF;
5837 
5838       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
5839         query_str  := query_str || 'AND locator_id = :loc_id ';
5840         --ER(3338592) Changes
5841         IF group_str IS NOT NULL THEN
5842            group_str := group_str || ' , locator_id  ' ;
5843         END IF;
5844       END IF;
5845 
5846       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
5847         query_str  := query_str || ' AND project_id = :pr_id ';
5848         --ER(3338592) Changes
5849         IF group_str IS NOT NULL THEN
5850            group_str := group_str || ' , project_id  ' ;
5851         END IF;
5852       END IF;
5853 
5854       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
5855         query_str  := query_str || ' AND task_id = :ta_id ';
5856         --ER(3338592) Changes
5857         IF group_str IS NOT NULL THEN
5858            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
5859         END IF;
5860       END IF;
5861 
5862       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
5863          query_str  := query_str || 'AND inventory_item_id = :item_id ';
5864       END IF;
5865 
5866       --Bug # 3411938
5867       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5868          group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
5869       END IF;
5870 
5871       --ER(3338592) Changes
5872       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
5873          query_str := query_str || ' AND item_description LIKE :item_description ';
5874       END IF;
5875 
5876       IF inv_mwb_globals.g_revision IS NOT NULL THEN
5877         query_str  := query_str || 'AND revision = :rev ';
5878         --ER(3338592) Changes
5879         IF group_str IS NOT NULL THEN
5880            group_str := group_str || ' , revision  ' ;
5881         END IF;
5882       END IF;
5883 
5884       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
5885         query_str  := query_str || 'AND cost_group_id = :cg_id ';
5886         --ER(3338592) Changes
5887         IF group_str IS NOT NULL THEN
5888            group_str := group_str || ' , cost_group_id  ' ;
5889         END IF;
5890       END IF;
5891 
5892       IF inv_mwb_globals.g_lpn_from IS NOT NULL
5893          OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
5894         query_str  := query_str || ' AND mol.outermost_lpn_id = x.outermost_lpn_id ';
5895          --ER(3338592) Changes
5896          IF group_str IS NOT NULL THEN
5897             group_str := group_str || ' , lpn ' ;
5898          END IF;
5899       END IF;
5900 
5901       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
5902         query_str  := query_str || 'AND lot_number >= :lot_f ';
5903       END IF;
5904 
5905       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
5906         query_str  := query_str || 'AND lot_number <= :lot_t ';
5907       END IF;
5908 
5909       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
5910         query_str  := query_str || 'AND serial_number >= :serial_f ';
5911       END IF;
5912 
5913       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
5914         query_str  := query_str || 'AND serial_number <= :serial_t ';
5915       END IF;
5916 
5917       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
5918         query_str  := query_str || ' AND unit_number=:un_id ';
5919       END IF;
5920 
5921       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
5922          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
5923          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
5924        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
5925          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
5926          query_str := query_str || ' AND  planning_organization_id in ';
5927          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
5928          query_str := query_str || '  where vendor_id = :vendor_id )';
5929       END IF;*/
5930 
5931       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
5932         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
5933         query_str  := query_str || ' AND planning_tp_type = 2 ';
5934       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
5935         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
5936         query_str  := query_str || ' AND planning_tp_type = 1 ';
5937       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
5938         query_str  := query_str || ' AND planning_tp_type = 1 ';
5939       END IF;
5940 
5941       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
5942         query_str  := query_str || ' AND owning_organization_id = :own_org ';
5943         query_str  := query_str || ' AND owning_tp_type = 2 ';
5944       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
5945         query_str  := query_str || ' AND owning_organization_id = :own_org ';
5946         query_str  := query_str || ' AND owning_tp_type = 1 ';
5947       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
5948         query_str  := query_str || ' AND owning_tp_type = 1 ';
5949       END IF;
5950 
5951       --Bug #3411938
5952       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5953          group_str := group_str || ' , planning_organization_id, planning_tp_type ';
5954          group_str := group_str || ' , owning_organization_id, owning_tp_type ';
5955          group_str := group_str || ' , item_lot_control, item_serial_control ';
5956       END IF;
5957 
5958       /* LPN Status Project */
5959       IF (l_default_status_id is not null) THEN
5960 	query_str  := query_str || ' AND onhand_status_id = mms.status_id ';
5961       ELSE
5962         query_str       := query_str || 'AND (subinventory_status_id = mms.status_id ';
5963 	query_str       := query_str || 'or locator_status_id = mms.status_id or ';
5964 	query_str       := query_str || 'lot_status_id = mms.status_id or serial_status_id = mms.status_id) ';
5965       END IF;
5966       /* End of fix for LPN Status Project */
5967 
5968       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
5969          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
5970       END IF;
5971 
5972       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
5973          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
5974       END IF;
5975 
5976       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
5977         query_str  := query_str || 'AND organization_id = :org_id ';
5978       ELSE
5979         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
5980         query_str  := query_str || ' FROM org_access_view oav ' ;
5981         query_str  := query_str || ' WHERE oav.organization_id = mol.organization_id ' ;
5982         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
5983         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
5984       END IF;
5985 
5986       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
5987          query_str := query_str || group_str || having_str || '  ' ;
5988       END IF;
5989 
5990       query_str       := query_str || ') ';
5991 
5992       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
5993         query_str  := query_str || 'and mms.status_id = :st_id ';
5994       END IF;
5995 
5996       query_str       := query_str || ' ORDER BY status_code ';
5997 
5998     END IF;
5999 
6000        -- Enable this during debugging
6001        inv_trx_util_pub.trace(query_str, 'Add-Status Material Workbench', 9);
6002        --trace1('Add_Statuses - ' || query_str);
6003     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
6004 
6005     inv_mwb_globals.g_last_query := query_str;
6006 
6007     query_hdl       := DBMS_SQL.open_cursor;
6008     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
6009 
6010 
6011     IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
6012       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
6013     END IF;
6014 
6015     IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6016       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
6017     END IF;
6018 
6019     IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6020       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
6021     END IF;
6022 
6023     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6024       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
6025     END IF;
6026 
6027     IF inv_mwb_globals.g_revision IS NOT NULL THEN
6028       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
6029     END IF;
6030 
6031     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6032       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
6033     END IF;
6034 
6035     --BUG 7556505
6036     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6037       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
6038     END IF;
6039     --BUG 7556505
6040 
6041     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6042       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
6043     END IF;
6044 
6045     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6046       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
6047     END IF;
6048 
6049 -- NSRIVAST, INVCONV, Start
6050     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6051       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
6052     END IF;
6053     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
6054       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
6055     END IF;
6056 -- NSRIVAST, INVCONV, End
6057 
6058     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
6059       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
6060     END IF;
6061 
6062     --bug 6633612
6063     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
6064       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
6065     END IF;
6066     --bug 6633612
6067 
6068     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
6069       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
6070     END IF;
6071 
6072       --bugfix#3646484
6073       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
6074       --User is querying for single LPN so converted the range query to equality query
6075       --So it is enought to bind the from lpn alone
6076          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
6077       ELSE
6078           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
6079             DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
6080           END IF;
6081 
6082           IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
6083             DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
6084           END IF;
6085       END IF;
6086 
6087     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6088       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
6089     END IF;
6090 
6091     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
6092       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
6093     END IF;
6094 
6095     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6096       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
6097     END IF;
6098 
6099     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6100       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
6101     END IF;
6102 
6103     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
6104       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
6105     END IF;
6106 
6107     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6108        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
6109      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6110        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
6111     END IF;*/
6112     IF (inv_mwb_globals.g_owning_qry_mode = 4)
6113        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6114       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
6115     END IF;
6116 
6117     IF (inv_mwb_globals.g_planning_query_mode = 4)
6118        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
6119       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
6120     END IF;
6121 
6122     --ER(3338592) Changes
6123     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6124        dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
6125     END IF;
6126 
6127     IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
6128        dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
6129     END IF;
6130 
6131     IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
6132        dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
6133     END IF;
6134     --End of ER Changes
6135 
6136     -- Bug # 3411938
6137     IF inv_mwb_globals.g_organization_id IS NULL THEN
6138       IF inv_mwb_globals.g_responsibility_id  IS NOT NULL THEN
6139          dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
6140       END IF;
6141 
6142       IF inv_mwb_globals.g_resp_application_id  IS NOT NULL THEN
6143          dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
6144       END IF;
6145     END IF;
6146 
6147     DBMS_SQL.define_column(query_hdl, 1, status_id);
6148     DBMS_SQL.define_column(query_hdl, 2, status_code, 80);
6149     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
6150 
6151     LOOP
6152       -- fetch a row
6153       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
6154         -- fetch columns from the row
6155         DBMS_SQL.column_value(query_hdl, 1, status_id);
6156         DBMS_SQL.column_value(query_hdl, 2, status_code);
6157 
6158         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
6159           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
6160           x_node_tbl(i).DEPTH  := 1;
6161           x_node_tbl(i).label  := status_code;
6162           x_node_tbl(i).icon   := 'inv_stat';
6163           x_node_tbl(i).VALUE  := TO_CHAR(status_id);
6164           x_node_tbl(i).TYPE   := 'STATUS';
6165           i                    := i + 1;
6166         END IF;
6167 
6168         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
6169         j  := j + 1;
6170       ELSE
6171         EXIT;
6172       END IF;
6173     END LOOP;
6174 
6175     DBMS_SQL.close_cursor(query_hdl); -- close cursor
6176     x_node_value    := j;
6177     x_tbl_index     := i;
6178   EXCEPTION
6179     WHEN NO_DATA_FOUND THEN
6180       NULL;
6181     WHEN OTHERS THEN
6182       RAISE;
6183   END add_statuses;
6184 
6185   PROCEDURE add_subs(
6186     x_node_value               IN OUT NOCOPY NUMBER
6187   , x_node_tbl                 IN OUT NOCOPY fnd_apptree.node_tbl_type
6188   , x_tbl_index                IN OUT NOCOPY NUMBER
6189   ) IS
6190     query_str      VARCHAR2(10000);
6191     query_hdl      NUMBER;
6192     rows_processed NUMBER;
6193     sub_code       mtl_onhand_quantities.subinventory_code%TYPE;
6194     i              NUMBER                                         := x_tbl_index;
6195     j              NUMBER                                         := x_node_value;
6196     table_required VARCHAR2(300);
6197     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
6198 
6199     l_procedure_name CONSTANT VARCHAR2(30) := 'ADD SUBS';
6200     l_default_status_id NUMBER; -- Onhand Material Status Support
6201    BEGIN
6202       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
6203 
6204       IF inv_mwb_globals.g_view_by = 'STATUS' THEN
6205          inv_mwb_globals.g_only_subinventory_status := 1;
6206       ELSE
6207          inv_mwb_globals.g_only_subinventory_status := NULL;
6208       END IF;
6209 
6210       -- Onhand Material Status Support
6211       if (inv_mwb_globals.g_organization_id is not null) then
6212          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
6213            l_default_status_id :=  inv_cache.org_rec.default_status_id;
6214          end if;
6215       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
6216          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
6217            l_default_status_id :=  inv_cache.org_rec.default_status_id;
6218          end if;
6219       end if;
6220 
6221  -- NSRIVAST, INVCONV, Start
6222      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
6223              is_grade_t     := TRUE ;
6224      END IF ;
6225 -- NSRIVAST, INVCONV, End
6226     -- display all the LPNs in that location with the appropriate from
6227     -- and to LPN criteria, so include the subs that have them
6228     IF inv_mwb_globals.g_inventory_item_id IS NULL
6229        AND inv_mwb_globals.g_revision IS NULL
6230        AND inv_mwb_globals.g_parent_lot IS NULL				--BUG 7556505
6231        AND inv_mwb_globals.g_lot_from IS NULL
6232        AND inv_mwb_globals.g_lot_to IS NULL
6233        AND inv_mwb_globals.g_serial_from IS NULL
6234        AND inv_mwb_globals.g_serial_to IS NULL
6235        AND inv_mwb_globals.g_cost_group_id IS NULL
6236        AND inv_mwb_globals.g_status_id IS NULL
6237        AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
6238        AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
6239        AND inv_mwb_globals.g_unit_number IS NULL
6240        AND inv_mwb_globals.g_project_id IS NULL
6241        AND inv_mwb_globals.g_task_id IS NULL
6242        AND inv_mwb_globals.g_planning_org IS NULL
6243        AND inv_mwb_globals.g_owning_org IS NULL
6244        AND(inv_mwb_globals.g_lpn_from IS NOT NULL
6245            OR inv_mwb_globals.g_lpn_to IS NOT NULL)
6246        --ER(3338592) Changes
6247        AND inv_mwb_globals.g_item_description  IS NULL THEN
6248        --End of ER Changes
6249       query_str  := 'select wlpn.subinventory_code ';
6250       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 ';
6251 
6252       --     query_str := query_str || 'AND (lpn_context = 1 or lpn_context=11 ');
6253 
6254       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
6255         query_str  := query_str || ' AND wlpn.lpn_context = 3 ';
6256       ELSIF inv_mwb_globals.g_tree_mat_loc_id = 1 THEN
6257         query_str  := query_str || ' AND (wlpn.lpn_context = 1 or wlpn.lpn_context=9 or wlpn.lpn_context=11 ) ';
6258       END IF;
6259 
6260       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6261         query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
6262       END IF;
6263 
6264   -- NSRIVAST, INVCONV, Start
6265       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6266          query_str := query_str || ' AND wlpn.grade_code = :grade_f ' ;
6267       END IF ;
6268       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
6269          query_str := query_str || ' AND wlpn.grade_code = :grade_c ' ;
6270       END IF ;
6271    -- NSRIVAST, INVCONV, End
6272 
6273       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6274         query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
6275       END IF;
6276 
6277       IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6278         query_str  := query_str || 'AND msi.status_id = :st_id ';
6279       END IF;
6280 
6281 
6282       IF inv_mwb_globals.g_organization_id IS NOT NULL
6283       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
6284         query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
6285       END IF;
6286 
6287       --bugfix#3646484
6288       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
6289       --User is querying for single LPN so converted the range query to equality query
6290          query_str := query_str || 'and license_plate_number = :lpn_f ';
6291       ELSE
6292          IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
6293            query_str  := query_str || 'and license_plate_number >= :lpn_f ';
6294          END IF;
6295 
6296          IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
6297            query_str  := query_str || 'and license_plate_number <= :lpn_t ';
6298          END IF;
6299       END IF;
6300 
6301       query_str  := query_str || ' GROUP BY subinventory_code ';
6302       query_str  := query_str || ' ORDER BY subinventory_code ';
6303     ELSE
6304       query_str  := 'SELECT msi.secondary_inventory_name subinventory_code FROM mtl_secondary_inventories msi ';
6305       query_str  := query_str || ' WHERE msi.secondary_inventory_name in ( ';
6306 
6307       -- Need to use MTL_ONHAND_TOTAL_V
6308       IF (
6309           inv_mwb_globals.g_serial_from IS NULL
6310           AND inv_mwb_globals.g_serial_to IS NULL
6311           AND inv_mwb_globals.g_unit_number IS NULL
6312           AND inv_mwb_globals.g_status_id IS NULL
6313           AND inv_mwb_globals.g_lpn_from IS NULL
6314           AND inv_mwb_globals.g_lpn_to IS NULL
6315           AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
6316          ) THEN
6317         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
6318           table_required  := ' mtl_rcv_mwb_onhand_v v ';
6319         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
6320           table_required  := ' mtl_onhand_total_mwb_v v ';
6321              IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
6322              table_required  := ' mtl_onhand_total_v v ';  -- NSRIVAST, INVCONV
6323              END IF;
6324         ELSE
6325           table_required  := ' mtl_onhand_total_v v ';
6326         END IF;
6327 		--bug 6633612
6328 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6329 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6330 		END IF;
6331 		--bug 6633612
6332 
6333         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
6334           query_str  := query_str || ' SELECT v.subinventory_code from ' || table_required;
6335           query_str  := query_str || ' WHERE 1=1 ';
6336         ELSE
6337           query_str  :=
6338                 query_str
6339              || ' SELECT v.subinventory_code from '
6340              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6341              || inv_mwb_globals.g_tree_lot_attr_query
6342              || ') mln, '
6343              || table_required;
6344 	query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
6345  		--BUG 7556505
6346 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6347 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6348 	           END IF;
6349 		--BUG 7556505
6350         END IF;
6351 
6352         -- Select Only subinventory status if only subbinventory status is not 1
6353         /*
6354         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6355           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6356             query_str  := query_str || ' AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
6357             query_str  := query_str || ' OR lot_status_id = :st_id or serial_status_id = :st_id) ';
6358           ELSE
6359             query_str  := query_str || ' AND subinventory_status_id = :st_id ';
6360           END IF;
6361         END IF;
6362          */
6363 
6364 
6365   -- NSRIVAST, INVCONV, Start
6366       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6367          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
6368       END IF ;
6369       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
6370          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
6371       END IF ;
6372    -- NSRIVAST, INVCONV, End
6373 
6374 	--bug 6633612
6375 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6376 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6377 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6378 					 || ' AND rt.organization_id = mmt.organization_id '
6379 					 || ' AND rt.transaction_type = ''DELIVER'''
6380 					 || ' AND rt.destination_type_code = ''INVENTORY'''
6381 					 || ' AND mmt.transaction_id = v.create_transaction_id '
6382 					 || ' AND mmt.organization_id = v.organization_id ';
6383 
6384 	END IF;
6385 	--bug 6633612
6386 
6387 
6388         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6389           query_str  := query_str || ' AND v.project_id = :pr_id ';
6390         END IF;
6391 
6392         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6393           query_str  := query_str || ' AND v.task_id = :ta_id ';
6394         END IF;
6395 
6396         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6397            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6398            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
6399          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6400            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
6401            query_str := query_str || ' AND  planning_organization_id in ';
6402            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
6403            query_str := query_str || '  where vendor_id = :vendor_id )';
6404         END IF;*/
6405         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
6406           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
6407           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
6408         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6409           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
6410           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
6411         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
6412           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
6413         END IF;
6414 
6415         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
6416           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
6417           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
6418         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
6419           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
6420           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
6421         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
6422           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
6423         END IF;
6424 
6425         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6426           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
6427         END IF;
6428 
6429         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6430           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
6431         END IF;
6432 
6433         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6434           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
6435         END IF;
6436 
6437         IF inv_mwb_globals.g_revision IS NOT NULL THEN
6438           query_str  := query_str || 'AND v.revision = :rev ';
6439         END IF;
6440 
6441         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6442           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
6443         END IF;
6444 
6445         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6446           query_str  := query_str || 'AND v.locator_id = :loc_id ';
6447         END IF;
6448 
6449         --ER(3338592) Changes
6450         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6451            query_str := query_str || ' AND v.item_description LIKE :item_description ';
6452         END IF;
6453         --End of ER Changes
6454 
6455         query_str  := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
6456 
6457         IF inv_mwb_globals.g_organization_id IS NOT NULL
6458         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
6459           query_str  := query_str || 'AND v.organization_id = :org_id ';
6460         END IF;
6461 
6462         -- Onhand Material Status Support : If the status is tracked at the onhand level check
6463         -- for the status from the onhand table (MOQD).
6464         IF l_default_status_id IS NOT NULL THEN
6465            IF inv_mwb_globals.g_only_subinventory_status = 1
6466               OR inv_mwb_globals.g_status_id IS NOT NULL THEN
6467               query_str  := query_str || ' AND v.onhand_status_id = :st_id ';
6468            END IF;
6469         END IF;
6470 
6471         query_str  := query_str || ') ';
6472 
6473         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6474           query_str  := query_str || 'and msi.secondary_inventory_name = :sub ';
6475         END IF;
6476 
6477         IF inv_mwb_globals.g_organization_id IS NOT NULL
6478         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
6479           query_str  := query_str || ' and msi.organization_id = :org_id ';
6480         END IF;
6481 
6482          /*
6483           *  IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
6484           *  in this case restrict the subinventories by tree_status_id not Query find status
6485           *
6486           */
6487         -- Onhand Material Status Support : Add the following where clause only if the status
6488         -- not tracked at onhand level.
6489         if (l_default_status_id is null) then
6490            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6491                query_str  := query_str || ' AND msi.status_id = :st_id ';
6492            ELSE
6493               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6494                  query_str  := query_str || ' AND msi.status_id = :st_id ';
6495               END IF;
6496            END IF;
6497         end if;
6498 
6499         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
6500           query_str  := query_str || ' AND msi.subinventory_type = 2 ';
6501         END IF;
6502 
6503         query_str  := query_str || ' ORDER BY subinventory_code ';
6504       -- Need to use MTL_ONHAND_SERIAL_V
6505       ELSIF(
6506             (
6507              inv_mwb_globals.g_serial_from IS NOT NULL
6508              OR inv_mwb_globals.g_serial_to IS NOT NULL
6509              OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
6510              OR inv_mwb_globals.g_unit_number IS NOT NULL
6511             )
6512             AND inv_mwb_globals.g_lpn_from IS NULL
6513             AND inv_mwb_globals.g_lpn_to IS NULL
6514            ) THEN
6515         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
6516           table_required  := ' mtl_rcv_serial_oh_v v ';
6517         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
6518           table_required  := ' mtl_onhand_serial_mwb_v v ';
6519            IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
6520               table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
6521            END IF;
6522         ELSE
6523           table_required  := ' mtl_onhand_serial_v v ';
6524         END IF;
6525 
6526 		 --bug 6633612
6527 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6528 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6529 		END IF;
6530 		--bug 6633612
6531 
6532         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
6533            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6534           query_str  := query_str || 'SELECT v.subinventory_code from ' || table_required;
6535           query_str  := query_str || 'WHERE 1=1 ';
6536         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
6537               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
6538           query_str  :=
6539                 query_str
6540              || 'SELECT v.subinventory_code from'
6541              || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
6542              || inv_mwb_globals.g_tree_serial_attr_query
6543              || ') msn, '
6544              || table_required;
6545           query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
6546         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
6547               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6548           query_str  :=
6549                 query_str
6550              || 'SELECT v.subinventory_code from'
6551              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6552              || inv_mwb_globals.g_tree_lot_attr_query
6553              || ') mln, '
6554              || table_required;
6555           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
6556  		--BUG 7556505
6557 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6558 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6559 	           END IF;
6560 		--BUG 7556505
6561 	ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
6562               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
6563           query_str  :=
6564                 query_str
6565              || 'SELECT v.subinventory_code from'
6566              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6567              || inv_mwb_globals.g_tree_lot_attr_query
6568              || ') mln, '
6569              || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
6570              || inv_mwb_globals.g_tree_serial_attr_query
6571              || ') msn, '
6572              || table_required;
6573           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
6574  		--BUG 7556505
6575 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6576 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6577 	           END IF;
6578 		--BUG 7556505
6579           query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
6580         END IF;
6581 
6582 
6583 	--bug 6633612
6584 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6585 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6586 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6587 					 || ' AND rt.organization_id = mmt.organization_id '
6588 					 || ' AND rt.transaction_type = ''DELIVER'''
6589 					 || ' AND rt.destination_type_code = ''INVENTORY'''
6590 					 || ' AND mmt.transaction_id = v.last_transaction_id '
6591 					 || ' AND mmt.organization_id = v.organization_id ';
6592 
6593 	END IF;
6594 	--bug 6633612
6595 
6596 
6597 
6598         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6599           query_str  := query_str || ' AND v.project_id = :pr_id ';
6600         END IF;
6601 
6602         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6603           query_str  := query_str || ' AND v.task_id = :ta_id ';
6604         END IF;
6605 
6606         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
6607           query_str  := query_str || ' AND v.unit_number=:un_id ';
6608         END IF;
6609 
6610         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6611            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6612            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
6613          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6614            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
6615            query_str := query_str || ' AND  planning_organization_id in ';
6616            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
6617            query_str := query_str || '  where vendor_id = :vendor_id )';
6618         END IF;*/
6619         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
6620           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
6621           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
6622         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6623           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
6624           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
6625         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
6626           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
6627         END IF;
6628 
6629         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
6630           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
6631           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
6632         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
6633           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
6634           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
6635         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
6636           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
6637         END IF;
6638 
6639         /*
6640         IF inv_mwb_globals.g_status_id IS NOT NULL
6641            AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
6642           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6643             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
6644             query_str  := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
6645           ELSE
6646             query_str  := query_str || ' and subinventory_status_id = :st_id ';
6647           END IF;
6648         END IF;
6649         */
6650 
6651         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6652           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
6653         END IF;
6654 
6655         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6656           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
6657         END IF;
6658 
6659         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6660           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
6661         END IF;
6662 
6663         IF inv_mwb_globals.g_revision IS NOT NULL THEN
6664           query_str  := query_str || 'AND v.revision = :rev ';
6665         END IF;
6666 
6667         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
6668           query_str  := query_str || 'AND v.serial_number >= :serial_f ';
6669         END IF;
6670 
6671         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
6672           query_str  := query_str || 'AND v.serial_number <= :serial_t ';
6673         END IF;
6674 
6675         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6676           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
6677         END IF;
6678 
6679   -- NSRIVAST, INVCONV, Start
6680       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6681          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
6682       END IF ;
6683       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
6684          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
6685       END IF ;
6686    -- NSRIVAST, INVCONV, End
6687 
6688         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6689           query_str  := query_str || 'AND v.locator_id = :loc_id ';
6690         END IF;
6691 
6692         --ER(3338592) Changes
6693         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6694            query_str := query_str || ' AND v.item_description LIKE :item_description ';
6695         END IF;
6696         --End of ER Changes
6697 
6698         query_str  := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
6699 
6700         IF inv_mwb_globals.g_organization_id IS NOT NULL
6701         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
6702           query_str  := query_str || 'AND v.organization_id = :org_id ';
6703         END IF;
6704 
6705         -- Onhand Material Status Support : If the status is tracked at the onhand level check
6706         -- for the status from the serial table (MSN).
6707         IF l_default_status_id IS NOT NULL THEN
6708            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6709               query_str  := query_str || ' AND v.serial_status_id = :st_id ';
6710            ELSE
6711               IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
6712                  query_str  := query_str || ' AND v.serial_status_id = :st_id ';
6713               END IF;
6714            END IF;
6715         END IF;
6716 
6717         query_str  := query_str || ') ';
6718 
6719         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
6720           query_str  := query_str || 'and msi.secondary_inventory_name = :sub ';
6721         END IF;
6722 
6723         IF inv_mwb_globals.g_organization_id IS NOT NULL
6724         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
6725           query_str  := query_str || ' and msi.organization_id = :org_id ';
6726         END IF;
6727 
6728          /*
6729           *  IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
6730           *  in this case restrict the subinventories by tree_status_id not Query find status
6731           *
6732           */
6733         -- Onhand Material Status Support : Add the following where clause only if the status
6734         -- not tracked at onhand level.
6735         if (l_default_status_id is null) then
6736            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6737                query_str  := query_str || ' AND msi.status_id = :st_id ';
6738            ELSE
6739               IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
6740                  query_str  := query_str || ' AND msi.status_id = :st_id ';
6741               END IF;
6742            END IF;
6743         end if;
6744 
6745         query_str  := query_str || ' ORDER BY subinventory_code ';
6746       -- Need to use both MTL_ONHAND_TOTAL_V and MTL_ONHAND_SERIAL_V
6747       ELSIF(
6748             inv_mwb_globals.g_serial_from IS NULL
6749             AND inv_mwb_globals.g_serial_to IS NULL
6750             AND inv_mwb_globals.g_unit_number IS NULL
6751             AND inv_mwb_globals.g_status_id IS NOT NULL
6752             AND inv_mwb_globals.g_lpn_from IS NULL
6753             AND inv_mwb_globals.g_lpn_to IS NULL
6754            ) THEN
6755         IF (inv_mwb_globals.g_status_id IS NULL) THEN
6756           table_required  := ' mtl_onhand_total_mwb_v v ';
6757 --          IF is_grade_t = TRUE THEN                         -- NSRIVAST, INVCONV
6758 --             table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
6759 --           END IF;
6760         ELSE
6761           table_required  := ' mtl_onhand_total_v v ';
6762         END IF;
6763 
6764 	    --bug 6633612
6765 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6766 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6767 		END IF;
6768 	--bug 6633612
6769 
6770         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
6771           query_str  := query_str || 'SELECT v.subinventory_code from ' || table_required;
6772           query_str  := query_str || 'WHERE 1=1 ';
6773         ELSE
6774           query_str  :=
6775                 query_str
6776              || 'SELECT v.subinventory_code from'
6777              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6778              || inv_mwb_globals.g_tree_lot_attr_query
6779              || ') mln, '
6780              || table_required;
6781           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
6782 	   	--BUG 7556505
6783 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6784 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6785 	           END IF;
6786 		--BUG 7556505
6787         END IF;
6788 
6789 	--bug 6633612
6790 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6791 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6792 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6793 					 || ' AND rt.organization_id = mmt.organization_id '
6794 					 || ' AND rt.transaction_type = ''DELIVER'''
6795 					 || ' AND rt.destination_type_code = ''INVENTORY'''
6796 					 || ' AND mmt.transaction_id = v.create_transaction_id '
6797 					 || ' AND mmt.organization_id = v.organization_id ';
6798 
6799 	END IF;
6800 	--bug 6633612
6801 
6802         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
6803           query_str  := query_str || ' AND v.project_id = :pr_id ';
6804         END IF;
6805 
6806         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
6807           query_str  := query_str || ' AND v.task_id = :ta_id ';
6808         END IF;
6809 
6810         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
6811            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
6812            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
6813          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
6814            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
6815            query_str := query_str || ' AND  planning_organization_id in ';
6816            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
6817            query_str := query_str || '  where vendor_id = :vendor_id )';
6818         END IF;*/
6819         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
6820           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
6821           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
6822         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
6823           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
6824           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
6825         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
6826           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
6827         END IF;
6828 
6829         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
6830           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
6831           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
6832         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
6833           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
6834           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
6835         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
6836           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
6837         END IF;
6838 
6839         -- Select Only subinventory status if status is not 1
6840         /*
6841         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6842           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6843             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
6844             query_str  := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
6845           ELSE
6846             query_str  := query_str || ' and subinventory_status_id = :st_id ';
6847           END IF;
6848         END IF;
6849         */
6850 
6851         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6852           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
6853         END IF;
6854 
6855         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6856           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
6857         END IF;
6858 
6859         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6860           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
6861         END IF;
6862 
6863         IF inv_mwb_globals.g_revision IS NOT NULL THEN
6864           query_str  := query_str || 'AND v.revision = :rev ';
6865         END IF;
6866 
6867         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
6868           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
6869         END IF;
6870 
6871      -- NSRIVAST, INVCONV, Start
6872         IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
6873          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
6874         END IF ;
6875         IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
6876          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
6877         END IF ;
6878      -- NSRIVAST, INVCONV, End
6879 
6880         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
6881           query_str  := query_str || 'AND v.locator_id = :loc_id ';
6882         END IF;
6883 
6884         --ER(3338592) Changes
6885         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
6886            query_str := query_str || ' AND v.item_description LIKE :item_description ';
6887         END IF;
6888         --ER(3338592) Changes
6889 
6890         query_str  := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
6891 
6892         IF inv_mwb_globals.g_organization_id IS NOT NULL
6893         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
6894           query_str  := query_str || 'AND v.organization_id = :org_id ';
6895         END IF;
6896 
6897         -- Onhand Material Status Support : If the status is tracked at the onhand level check
6898         -- for the status from the onhand table (MOQD).
6899         IF l_default_status_id IS NOT NULL THEN
6900            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6901               query_str  := query_str || ' AND v.onhand_status_id = :st_id ';
6902            ELSE
6903               IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
6904                  query_str  := query_str || ' AND v.onhand_status_id = :st_id ';
6905               END IF;
6906            END IF;
6907         else
6908            -- Bug 6060233
6909            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6910                query_str  := query_str || ' and v.subinventory_status_id = :st_id ';
6911            ELSE
6912                IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6913                   query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
6914                   query_str  := query_str || 'OR v.lot_status_id = :st_id) ';
6915                END IF;
6916            END IF;
6917         END IF;
6918 
6919         query_str  := query_str || 'UNION ALL ';
6920 
6921         IF (inv_mwb_globals.g_status_id IS NULL) THEN
6922           table_required  := ' mtl_onhand_serial_mwb_v v ';
6923         ELSE
6924           table_required  := ' mtl_onhand_serial_v v ';
6925         END IF;
6926 
6927 		--bug 6633612
6928 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6929 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
6930 		END IF;
6931 		--bug 6633612
6932 
6933         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
6934            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6935           query_str  := query_str || 'SELECT v.subinventory_code from ' || table_required;
6936           query_str  := query_str || 'WHERE 1=1 ';
6937         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
6938               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
6939           query_str  :=
6940                 query_str
6941              || 'SELECT v.subinventory_code from'
6942              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
6943              || inv_mwb_globals.g_tree_lot_attr_query
6944              || ') mln, '
6945              || table_required;
6946           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
6947  		--BUG 7556505
6948 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
6949 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
6950 	           END IF;
6951 		--BUG 7556505
6952         END IF;
6953 
6954         -- Select Only subinventory status if status is not 1
6955         /*
6956         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
6957           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
6958             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
6959             query_str  := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
6960           ELSE
6961             query_str  := query_str || ' and subinventory_status_id = :st_id ';
6962           END IF;
6963         END IF;
6964         */
6965 	--bug 6633612
6966 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
6967 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
6968 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
6969 					 || ' AND rt.organization_id = mmt.organization_id '
6970 					 || ' AND rt.transaction_type = ''DELIVER'''
6971 					 || ' AND rt.destination_type_code = ''INVENTORY'''
6972 					 || ' AND mmt.transaction_id = v.last_transaction_id '
6973 					 || ' AND mmt.organization_id = v.organization_id ';
6974 
6975 	END IF;
6976 	--bug 6633612
6977 
6978         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
6979           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
6980         END IF;
6981 
6982         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
6983           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
6984         END IF;
6985 
6986         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
6987           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
6988         END IF;
6989 
6990         IF inv_mwb_globals.g_revision IS NOT NULL THEN
6991           query_str  := query_str || 'AND v.revision = :rev ';
6992         END IF;
6993 
6994         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
6995           query_str  := query_str || 'AND v.serial_number >= :serial_f ';
6996         END IF;
6997 
6998         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
6999           query_str  := query_str || 'AND v.serial_number <= :serial_t ';
7000         END IF;
7001 
7002         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7003           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
7004         END IF;
7005 
7006         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7007           query_str  := query_str || 'AND v.locator_id = :loc_id ';
7008         END IF;
7009 
7010         --ER(3338592) Changes
7011         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7012            query_str := query_str || ' AND v.item_description LIKE :item_description ';
7013         END IF;
7014         --ER(3338592) Changes
7015 
7016         query_str  := query_str || 'AND v.subinventory_code = msi.secondary_inventory_name ';
7017 
7018         IF inv_mwb_globals.g_organization_id IS NOT NULL
7019         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7020           query_str  := query_str || 'AND v.organization_id = :org_id ';
7021         END IF;
7022 
7023         -- Onhand Material Status Support : If the status is tracked at the onhand level check
7024         -- for the status from the serial table (MSN).
7025         IF l_default_status_id IS NOT NULL THEN
7026            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7027               query_str  := query_str || ' AND v.serial_status_id = :st_id ';
7028            ELSE
7029               IF inv_mwb_globals.g_status_id IS NOT NULL AND inv_mwb_globals.g_tree_mat_loc_id <> 2 THEN
7030                  query_str  := query_str || ' AND v.serial_status_id = :st_id ';
7031               END IF;
7032            END IF;
7033         else
7034            -- Bug 6060233
7035            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7036                query_str  := query_str || ' and v.subinventory_status_id = :st_id ';
7037            ELSE
7038                IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7039                   query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
7040                   query_str  := query_str || 'OR v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
7041                END IF;
7042            END IF;
7043         END IF;
7044 
7045         query_str  := query_str || ') ';
7046 
7047         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7048           query_str  := query_str || 'and msi.secondary_inventory_name = :sub ';
7049         END IF;
7050 
7051         IF inv_mwb_globals.g_organization_id IS NOT NULL
7052         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7053           query_str  := query_str || ' and msi.organization_id = :org_id ';
7054         END IF;
7055 
7056          /*
7057           *  IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
7058           *  in this case restrict the subinventories by tree_status_id not Query find status
7059           *
7060           */
7061 
7062         -- Onhand Material Status Support : Add the following where clause only if the status
7063         -- not tracked at onhand level.
7064         -- Bug 6060233: Commenting the following code as the status restriction has been added
7065         -- in the subqueries
7066         /*
7067         if (l_default_status_id is null) then
7068            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7069                query_str  := query_str || ' AND msi.status_id = :st_id ';
7070            ELSE
7071               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7072                  query_str  := query_str || ' AND msi.status_id = :st_id ';
7073               END IF;
7074            END IF;
7075         end if;
7076         */
7077 
7078         query_str  := query_str || ' ORDER BY subinventory_code ';
7079       -- Need to use MTL_ONHAND_LPN_V
7080       ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
7081             OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
7082         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7083           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
7084         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
7085           table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
7086            IF is_grade_t = TRUE THEN                         -- NSRIVAST, INVCONV
7087              table_required  := ' mtl_onhand_new_lpn_v ';    -- NSRIVAST, INVCONV
7088            END IF;                                           -- NSRIVAST, INVCONV
7089         ELSE
7090           table_required  := ' mtl_onhand_new_lpn_v mol ';
7091         END IF;
7092 
7093         query_str  := query_str || 'SELECT subinventory_code from ' || table_required;
7094 
7095         IF inv_mwb_globals.g_lpn_from IS NOT NULL
7096            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7097           query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
7098           query_str  := query_str || ' WHERE 1=1 ';
7099 
7100           IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7101             query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
7102           END IF;
7103 
7104 --rsagar
7105           IF inv_mwb_globals.g_tree_mat_loc_id  = 1 THEN
7106             query_str  := query_str || 'AND wlpn.lpn_context IN (1,9,11) ';
7107           ELSIF inv_mwb_globals.g_tree_mat_loc_id  = 2 THEN
7108             query_str  := query_str || 'AND wlpn.lpn_context = 3 ';
7109           END IF;
7110 --rsagar
7111      -- NSRIVAST, INVCONV, Start
7112         IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7113          query_str := query_str || ' AND grade_code = :grade_f ' ;
7114         END IF ;
7115         IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
7116          query_str := query_str || ' AND grade_code = :grade_c ' ;
7117         END IF ;
7118      -- NSRIVAST, INVCONV, End
7119 
7120           IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7121             query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
7122           END IF;
7123 
7124         IF inv_mwb_globals.g_organization_id IS NOT NULL
7125         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7126             query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
7127           END IF;
7128 
7129           IF inv_mwb_globals.g_lpn_from IS NOT NULL
7130              OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7131             IF inv_mwb_globals.g_lpn_from IS NOT NULL
7132                AND inv_mwb_globals.g_lpn_to IS NULL THEN
7133               query_str  := query_str || ' and license_plate_number >= :lpn_f ';
7134             ELSIF inv_mwb_globals.g_lpn_from IS NULL
7135                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7136               query_str  := query_str || ' and license_plate_number <= :lpn_t ';
7137             ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
7138                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7139                --bugfix#3646484
7140                IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to) THEN
7141                --User is querying for single LPN so converted the range query to equality query
7142                   query_str := query_str || 'and license_plate_number = :lpn_f ';
7143                ELSE
7144                  query_str  := query_str || ' and license_plate_number >= :lpn_f ';
7145                  query_str  := query_str || ' and license_plate_number <= :lpn_t ';
7146                END IF;
7147             END IF;
7148           END IF;
7149 
7150           query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
7151         END IF;
7152 
7153         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
7154            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
7155           query_str  := query_str || 'WHERE 1=1 ';
7156         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
7157               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
7158           query_str  :=
7159                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
7160                      || ') msn ';
7161           query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
7162         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
7163               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
7164           query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
7165           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
7166  		--BUG 7556505
7167 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7168 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7169 	           END IF;
7170 		--BUG 7556505
7171 	ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
7172               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
7173           query_str  :=
7174                 query_str
7175              || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7176              || inv_mwb_globals.g_tree_lot_attr_query
7177              || ') mln '
7178              || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
7179              || inv_mwb_globals.g_tree_serial_attr_query
7180              || ') msn ';
7181           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
7182  		--BUG 7556505
7183 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7184 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7185 	           END IF;
7186 		--BUG 7556505
7187           query_str  := query_str || 'AND msn.serial_num = serial_number ';
7188         END IF;
7189 
7190         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7191           query_str  := query_str || ' AND project_id = :pr_id ';
7192         END IF;
7193 
7194         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7195           query_str  := query_str || ' AND task_id = :ta_id ';
7196         END IF;
7197 
7198         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7199           query_str  := query_str || ' AND unit_number=:un_id ';
7200         END IF;
7201 
7202         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7203            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7204            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
7205          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7206            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
7207            query_str := query_str || ' AND  planning_organization_id in ';
7208            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
7209            query_str := query_str || '  where vendor_id = :vendor_id )';
7210         END IF;*/
7211         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
7212           query_str  := query_str || ' AND owning_organization_id = :own_org ';
7213           query_str  := query_str || ' AND owning_tp_type = 2 ';
7214         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7215           query_str  := query_str || ' AND owning_organization_id = :own_org ';
7216           query_str  := query_str || ' AND owning_tp_type = 1 ';
7217         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
7218           query_str  := query_str || ' AND owning_tp_type = 1 ';
7219         END IF;
7220 
7221         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
7222           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
7223           query_str  := query_str || ' AND planning_tp_type = 2 ';
7224         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
7225           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
7226           query_str  := query_str || ' AND planning_tp_type = 1 ';
7227         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
7228           query_str  := query_str || ' AND planning_tp_type = 1 ';
7229         END IF;
7230 
7231         /*
7232         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7233           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7234             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id ';
7235             query_str  := query_str || 'OR lot_status_id = :st_id or serial_status_id = :st_id) ';
7236           ELSE
7237             query_str  := query_str || 'AND subinventory_status_id = :st_id ';
7238           END IF;
7239         END IF;
7240         */
7241 
7242         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7243           query_str  := query_str || 'AND lot_number >= :lot_f ';
7244         END IF;
7245 
7246         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7247           query_str  := query_str || 'AND lot_number <= :lot_t ';
7248         END IF;
7249 
7250         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7251           query_str  := query_str || 'AND cost_group_id = :cg_id ';
7252         END IF;
7253 
7254         IF inv_mwb_globals.g_revision IS NOT NULL THEN
7255           query_str  := query_str || 'AND revision = :rev ';
7256         END IF;
7257 
7258         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
7259           query_str  := query_str || 'AND serial_number >= :serial_f ';
7260         END IF;
7261 
7262         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
7263           query_str  := query_str || 'AND serial_number <= :serial_t ';
7264         END IF;
7265 
7266         IF inv_mwb_globals.g_lpn_from IS NOT NULL
7267            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7268           query_str  := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
7269         END IF;
7270 
7271         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7272           query_str  := query_str || 'AND inventory_item_id = :item_id ';
7273         END IF;
7274 
7275         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7276           query_str  := query_str || 'AND locator_id = :loc_id ';
7277         END IF;
7278 
7279         --ER(3338592) Changes
7280         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7281            query_str := query_str || ' AND item_description LIKE :item_description ';
7282         END IF;
7283         --ER(3338592) Changes
7284 
7285         query_str  := query_str || 'AND subinventory_code = msi.secondary_inventory_name ';
7286 
7287         IF inv_mwb_globals.g_organization_id IS NOT NULL
7288         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7289           query_str  := query_str || 'AND organization_id = :org_id ';
7290         END IF;
7291 
7292 	/* LPN Status Project If the status is tracked at the onhand level check
7293         -- for the status from the onhand table (MOQD).*/
7294 	IF l_default_status_id IS NOT NULL THEN
7295 	  IF inv_mwb_globals.g_only_subinventory_status = 1
7296               OR inv_mwb_globals.g_status_id IS NOT NULL THEN
7297 	    query_str  := query_str || ' AND onhand_status_id = :st_id ';
7298 	  END IF;
7299         END IF;
7300 	/* End of fix for LPN Status Project */
7301 
7302         query_str  := query_str || ') ';
7303 
7304         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7305           query_str  := query_str || 'and msi.secondary_inventory_name = :sub ';
7306         END IF;
7307 
7308         IF inv_mwb_globals.g_organization_id IS NOT NULL
7309         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7310           query_str  := query_str || ' and msi.organization_id = :org_id ';
7311         END IF;
7312 
7313          /*
7314           *  IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
7315           *  in this case restrict the subinventories by tree_status_id not Query find status
7316           *
7317           */
7318 
7319 	/* LPN Stauts Project : Add the following where clause only if the status
7320            not tracked at onhand level. */
7321         IF (l_default_status_id IS NULL) THEN
7322           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7323               query_str  := query_str || ' AND msi.status_id = :st_id ';
7324           ELSE
7325              IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7326                 query_str  := query_str || ' AND msi.status_id = :st_id ';
7327              END IF;
7328           END IF;
7329         END IF ;
7330 	/* End of fix for LPN Status Project */
7331 
7332         query_str  := query_str || ' ORDER BY subinventory_code ';
7333       END IF;
7334     END IF;
7335 --    inv_trx_util_pub.trace( query_str, 'Add_subs Material Workbench', 9);
7336        --trace1(query_str, 'add_subs', 9);
7337 
7338     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
7339 
7340     inv_mwb_globals.g_last_query := query_str;
7341 
7342     query_hdl       := DBMS_SQL.open_cursor;
7343 --    inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
7344     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
7345 
7346 
7347     IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7348       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
7349     ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
7350       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
7351     END IF;
7352 
7353     IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
7354       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
7355     END IF;
7356 
7357     IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7358       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
7359     END IF;
7360 
7361     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7362       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
7363     END IF;
7364 
7365     IF inv_mwb_globals.g_revision IS NOT NULL THEN
7366       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
7367     END IF;
7368 
7369     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7370       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
7371     END IF;
7372 
7373  --BUG 7556505
7374     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7375       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
7376     END IF;
7377  --BUG 7556505
7378 
7379     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7380       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
7381     END IF;
7382 
7383     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7384       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
7385     END IF;
7386 
7387 -- NSRIVAST, INVCONV, Start
7388     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7389       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
7390     END IF;
7391     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
7392       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
7393     END IF;
7394 -- NSRIVAST, INVCONV, End
7395     --bug 6633612
7396     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
7397       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
7398     END IF;
7399     --bug 6633612
7400 
7401     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
7402       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
7403     END IF;
7404 
7405     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
7406       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
7407     END IF;
7408 
7409       --bugfix#3646484
7410       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
7411       --User is querying for single LPN so converted the range query to equality query
7412       --So it is enought to bind the from lpn alone
7413          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
7414       ELSE
7415           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
7416             DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
7417           END IF;
7418 
7419           IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7420             DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
7421           END IF;
7422       END IF;
7423 
7424          /*
7425           *  IF g_only_subinventory_status = 1, it means we are doing a view by 'STATUS'
7426           *  in this case restrict the subinventories by tree_status_id not Query find status
7427           *
7428           */
7429         IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7430            DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
7431         ELSE
7432            IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7433               DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
7434            END IF;
7435         END IF;
7436 
7437     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
7438       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
7439     END IF;
7440 
7441     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7442       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
7443     END IF;
7444 
7445     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7446       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
7447     END IF;
7448 
7449     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7450       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
7451     END IF;
7452 
7453     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7454        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
7455      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7456        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
7457     END IF;*/
7458     IF (inv_mwb_globals.g_owning_qry_mode = 4)
7459        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7460       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
7461     END IF;
7462 
7463     IF (inv_mwb_globals.g_planning_query_mode = 4)
7464        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
7465       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
7466     END IF;
7467 
7468     --ER(3338592) Changes
7469     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7470        dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
7471     END IF;
7472 
7473     DBMS_SQL.define_column(query_hdl, 1, sub_code, 10);
7474     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
7475 
7476     LOOP
7477       -- fetch a row
7478       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
7479         -- fetch columns from the row
7480         DBMS_SQL.column_value(query_hdl, 1, sub_code);
7481 
7482         IF j >= inv_mwb_globals.g_tree_node_low_value
7483            AND sub_code IS NOT NULL THEN
7484           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
7485           x_node_tbl(i).DEPTH  := 1;
7486           x_node_tbl(i).label  := sub_code;
7487           x_node_tbl(i).icon   := 'inv_sbin';
7488           x_node_tbl(i).VALUE  := sub_code;
7489           x_node_tbl(i).TYPE   := 'SUB';
7490           i                    := i + 1;
7491         END IF;
7492 
7493         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
7494         j  := j + 1;
7495       ELSE
7496         EXIT;
7497       END IF;
7498     END LOOP;
7499 
7500     DBMS_SQL.close_cursor(query_hdl); -- close cursor
7501     x_node_value    := j;
7502     x_tbl_index     := i;
7503   EXCEPTION
7504     WHEN NO_DATA_FOUND THEN
7505       NULL;
7506     WHEN OTHERS THEN
7507       RAISE;
7508   END add_subs;
7509 
7510   PROCEDURE add_locs(
7511     x_node_value          IN OUT NOCOPY NUMBER
7512   , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
7513   , x_tbl_index           IN OUT NOCOPY NUMBER
7514   ) IS
7515     query_str      VARCHAR2(10000);
7516     query_hdl      NUMBER;
7517     rows_processed NUMBER;
7518     loc_id         mtl_item_locations_kfv.inventory_location_id%TYPE;
7519     loc_code       mtl_item_locations_kfv.concatenated_segments%TYPE;
7520     stock_loc_code mtl_parameters.stock_locator_control_code%TYPE;
7521     loc_type       NUMBER;
7522     i              NUMBER                                              := x_tbl_index;
7523     j              NUMBER                                              := x_node_value;
7524     table_required VARCHAR2(300);
7525     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
7526     l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_LOCS';
7527     l_default_status_id NUMBER; -- Onhand Material Status Support
7528    BEGIN
7529       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
7530 
7531       IF inv_mwb_globals.g_view_by = 'STATUS' THEN
7532          inv_mwb_globals.g_only_subinventory_status := 1;
7533       ELSE
7534          inv_mwb_globals.g_only_subinventory_status := NULL;
7535       END IF;
7536 
7537       -- Onhand Material Status Support
7538       if (inv_mwb_globals.g_organization_id is not null) then
7539          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
7540            l_default_status_id :=  inv_cache.org_rec.default_status_id;
7541          end if;
7542       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
7543          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
7544            l_default_status_id :=  inv_cache.org_rec.default_status_id;
7545          end if;
7546       end if;
7547 
7548   -- NSRIVAST, INVCONV, Start
7549      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
7550              is_grade_t     := TRUE ;
7551      END IF ;
7552 -- NSRIVAST, INVCONV, End
7553 
7554     /* 1625119 Should check at the Org parameters first for Locator control */
7555      IF inv_mwb_globals.g_organization_id IS NOT NULL
7556      OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7557       SELECT stock_locator_control_code
7558         INTO stock_loc_code
7559         FROM mtl_parameters
7560        WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id ,
7561                                    inv_mwb_globals.g_organization_id);
7562 
7563       IF stock_loc_code = 1 THEN
7564         RETURN;
7565       ELSIF stock_loc_code = 4 THEN  /* check in Subinventory  bug 1625119 */
7566         -- Exit out of the procedure if the subinventory is not locator controlled
7567      IF (inv_mwb_globals.g_organization_id IS NOT NULL
7568      OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
7569      AND (inv_mwb_globals.g_subinventory_code IS NOT NULL
7570           OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL) THEN
7571           SELECT locator_type
7572             INTO loc_type
7573             FROM mtl_secondary_inventories
7574            WHERE secondary_inventory_name = NVL(inv_mwb_globals.g_tree_subinventory_code,
7575                                                 inv_mwb_globals.g_subinventory_code)
7576              AND organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
7577                                        inv_mwb_globals.g_organization_id);
7578 
7579           IF loc_type = 1 THEN
7580             RETURN;
7581           END IF;
7582         END IF;
7583       END IF;
7584     END IF;
7585 
7586     -- display all the LPNs in that location with the appropriate from
7587     -- and to LPN criteria, so include the locs which have them
7588     IF inv_mwb_globals.g_inventory_item_id IS NULL
7589        AND inv_mwb_globals.g_revision IS NULL
7590        AND inv_mwb_globals.g_parent_lot IS NULL			--BUG 7556505
7591        AND inv_mwb_globals.g_lot_from IS NULL
7592        AND inv_mwb_globals.g_lot_to IS NULL
7593        AND inv_mwb_globals.g_serial_from IS NULL
7594        AND inv_mwb_globals.g_serial_to IS NULL
7595        AND inv_mwb_globals.g_cost_group_id IS NULL
7596        AND inv_mwb_globals.g_status_id IS NULL
7597        AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
7598        AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
7599        AND inv_mwb_globals.g_unit_number IS NULL
7600        AND inv_mwb_globals.g_project_id IS NULL
7601        AND inv_mwb_globals.g_task_id IS NULL
7602        AND(inv_mwb_globals.g_lpn_from IS NOT NULL
7603            OR inv_mwb_globals.g_lpn_to IS NOT NULL)
7604        --ER(3338592) Changes
7605        AND inv_mwb_globals.g_item_description   IS NULL  THEN
7606        --ER(3338592) Changes
7607       query_str  := 'SELECT wlpn.locator_id, mil.concatenated_segments ';
7608       query_str  := query_str || 'FROM mtl_item_locations_kfv mil, wms_license_plate_numbers wlpn WHERE 1=1 ';
7609       query_str  := query_str || 'AND mil.inventory_location_id = wlpn.locator_id ';
7610       query_str  := query_str || 'AND mil.organization_id = wlpn.organization_id ';
7611 
7612       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7613         query_str  := query_str || 'AND lpn_context = 3 ';
7614       ELSE
7615         query_str  := query_str || ' AND (lpn_context = 1 or lpn_context=9 or lpn_context=11 ) ';
7616       END IF;
7617 
7618       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7619         query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
7620       END IF;
7621 
7622   -- NSRIVAST, INVCONV, Start
7623       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7624          query_str := query_str || ' AND grade_code = :grade_f ' ;
7625       END IF ;
7626       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
7627          query_str := query_str || ' AND grade_code = :grade_c ' ;
7628       END IF ;
7629    -- NSRIVAST, INVCONV, End
7630 
7631         IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7632             query_str  := query_str || 'AND mil.status_id = :st_id ';
7633         ELSE
7634            IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7635               query_str  := query_str || 'AND mil.status_id = :st_id ';
7636            END IF;
7637         END IF;
7638 
7639      IF (inv_mwb_globals.g_subinventory_code IS NOT NULL
7640      OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL) THEN
7641         query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
7642       END IF;
7643 
7644      IF (inv_mwb_globals.g_organization_id IS NOT NULL
7645      OR inv_mwb_globals.g_tree_organization_id IS NOT NULL) THEN
7646         query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
7647      END IF;
7648 
7649       --bugfix#3646484
7650       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
7651       --User is querying for single LPN so converted the range query to equality query
7652          query_str := query_str || 'and wlpn.license_plate_number = :lpn_f ';
7653       ELSE
7654          IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
7655            query_str  := query_str || 'and wlpn.license_plate_number >= :lpn_f ';
7656          END IF;
7657 
7658          IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
7659            query_str  := query_str || 'and wlpn.license_plate_number <= :lpn_t ';
7660          END IF;
7661       END IF;
7662 
7663       query_str  := query_str || ' GROUP BY locator_id, concatenated_segments ';
7664       query_str  := query_str || ' ORDER BY concatenated_segments ';
7665     ELSE
7666       IF (
7667           inv_mwb_globals.g_serial_from IS NULL
7668           AND inv_mwb_globals.g_serial_to IS NULL
7669           AND inv_mwb_globals.g_unit_number IS NULL
7670           AND inv_mwb_globals.g_status_id IS NULL
7671           AND inv_mwb_globals.g_lpn_from IS NULL
7672           AND inv_mwb_globals.g_lpn_to IS NULL
7673           AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
7674          ) THEN
7675         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7676           table_required  := ' mtl_rcv_mwb_onhand_v v ';
7677         ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
7678           table_required  := ' mtl_onhand_total_mwb_v v ';
7679              IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
7680              table_required  := ' mtl_onhand_total_v v ';  -- NSRIVAST, INVCONV
7681              END IF;
7682         ELSE
7683           table_required  := ' mtl_onhand_total_v v ';
7684         END IF;
7685 
7686 	--bug 6633612
7687 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7688 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
7689 		END IF;
7690 	--bug 6633612
7691 
7692         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
7693           query_str  := query_str || 'SELECT v.locator_id, v.locator from ' || table_required;
7694           query_str  := query_str || 'WHERE 1=1 ';
7695         ELSE
7696           query_str  :=
7697                 query_str
7698              || 'SELECT v.locator_id, v.locator from'
7699              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7700              || inv_mwb_globals.g_tree_lot_attr_query
7701              || ') mln, '
7702              || table_required;
7703           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
7704  		--BUG 7556505
7705 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7706 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7707 	           END IF;
7708 		--BUG 7556505
7709         END IF;
7710 
7711 	--bug 6633612
7712 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7713 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
7714 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
7715 					 || ' AND rt.organization_id = mmt.organization_id '
7716 					 || ' AND rt.transaction_type = ''DELIVER'''
7717 					 || ' AND rt.destination_type_code = ''INVENTORY'''
7718 					 || ' AND mmt.transaction_id = v.create_transaction_id '
7719 					 || ' AND mmt.organization_id = v.organization_id ';
7720 
7721 	END IF;
7722 	--bug 6633612
7723         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7724           query_str  := query_str || ' AND v.project_id = :pr_id ';
7725         END IF;
7726 
7727         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7728           query_str  := query_str || ' AND v.task_id = :ta_id ';
7729         END IF;
7730 
7731         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7732           query_str  := query_str || ' AND v.unit_number=:un_id ';
7733         END IF;
7734 
7735         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
7736            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
7737            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
7738          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
7739            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
7740            query_str := query_str || ' AND  planning_organization_id in ';
7741            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
7742            query_str := query_str || '  where vendor_id = :vendor_id )';
7743         END IF;*/
7744         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
7745           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
7746           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
7747         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
7748           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
7749           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
7750         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
7751           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
7752         END IF;
7753 
7754         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
7755           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
7756           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
7757         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
7758           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
7759           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
7760         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
7761           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
7762         END IF;
7763 
7764 /*
7765         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7766           IF inv_mwb_globals.g_only_locator_status = 1 THEN
7767             query_str  := query_str || 'AND (subinventory_status_id = :st_id or ';
7768             query_str  := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
7769           ELSE
7770             query_str  := query_str || 'AND locator_status_id = :st_id ';
7771           END IF;
7772         END IF;
7773 */
7774         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
7775         -- from onhand table (MOQD)
7776         if (l_default_status_id is not null) then -- Status at onhand level
7777            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7778                query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
7779            ELSE
7780               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7781                  query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
7782               END IF;
7783            END IF;
7784         else
7785            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7786                query_str  := query_str || 'AND v.locator_status_id = :st_id ';
7787            ELSE
7788               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7789                  query_str  := query_str || 'AND v.locator_status_id = :st_id ';
7790               END IF;
7791            END IF;
7792         end if;
7793 
7794         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7795           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
7796         END IF;
7797 
7798         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7799           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
7800         END IF;
7801 
7802         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7803           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
7804         END IF;
7805 
7806         IF inv_mwb_globals.g_revision IS NOT NULL THEN
7807           query_str  := query_str || 'AND v.revision = :rev ';
7808         END IF;
7809 
7810         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
7811           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
7812         END IF;
7813 
7814         query_str  := query_str || 'AND v.locator_id is not null ';
7815 
7816         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
7817           query_str  := query_str || 'AND v.locator_id = :loc_id ';
7818         END IF;
7819 
7820   -- NSRIVAST, INVCONV, Start
7821       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7822          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
7823       END IF ;
7824       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
7825          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
7826       END IF ;
7827    -- NSRIVAST, INVCONV, End
7828 
7829         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
7830         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
7831           query_str  := query_str || 'AND v.subinventory_code = :sub ';
7832         END IF;
7833 
7834         --ER(3338592) Changes
7835         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
7836            query_str := query_str || ' AND v.item_description LIKE :item_description ';
7837         END IF;
7838         --ER(3338592) Changes
7839 
7840         IF inv_mwb_globals.g_organization_id IS NOT NULL
7841         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
7842           query_str  := query_str || 'AND v.organization_id = :org_id ';
7843         END IF;
7844 
7845         query_str  := query_str || 'GROUP BY v.locator_id, v.locator ';
7846         query_str  := query_str || 'ORDER BY v.locator ';
7847       ELSIF(
7848             (
7849              inv_mwb_globals.g_serial_from IS NOT NULL
7850              OR inv_mwb_globals.g_serial_to IS NOT NULL
7851              OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
7852              OR inv_mwb_globals.g_unit_number IS NOT NULL
7853             )
7854             AND inv_mwb_globals.g_lpn_from IS NULL
7855             AND inv_mwb_globals.g_lpn_to IS NULL
7856            ) THEN
7857         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
7858           table_required  := ' mtl_rcv_serial_oh_v v ';
7859         ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
7860           table_required  := ' mtl_onhand_serial_mwb_v v ';
7861            IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
7862              table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
7863           END IF;                                          -- NSRIVAST, INVCONV
7864         ELSE
7865           table_required  := ' mtl_onhand_serial_v v ';
7866         END IF;
7867 		--bug 6633612
7868 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7869 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
7870 		END IF;
7871 		--bug 6633612
7872 
7873         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
7874            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
7875           query_str  := query_str || 'SELECT v.locator_id, v.locator from ' || table_required;
7876           query_str  := query_str || 'WHERE 1=1 ';
7877         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
7878               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
7879           query_str  :=
7880                 query_str
7881              || 'SELECT v.locator_id, v.locator from'
7882              || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
7883              || inv_mwb_globals.g_tree_serial_attr_query
7884              || ') msn, '
7885              || table_required;
7886           query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
7887         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
7888               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
7889           query_str  :=
7890                 query_str
7891              || 'SELECT v.locator_id, v.locator from'
7892              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7893              || inv_mwb_globals.g_tree_lot_attr_query
7894              || ') mln, '
7895              || table_required;
7896           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
7897  		--BUG 7556505
7898 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7899 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7900 	           END IF;
7901 		--BUG 7556505
7902         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
7903               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
7904           query_str  :=
7905                 query_str
7906              || 'SELECT v.locator_id, v.locator from'
7907              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
7908              || inv_mwb_globals.g_tree_lot_attr_query
7909              || ') mln, '
7910              || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
7911              || inv_mwb_globals.g_tree_serial_attr_query
7912              || ') msn, '
7913              || table_required;
7914           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
7915  		--BUG 7556505
7916 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
7917 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
7918 	           END IF;
7919 		--BUG 7556505
7920           query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
7921         END IF;
7922 
7923 	--bug 6633612
7924 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
7925 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
7926 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
7927 					 || ' AND rt.organization_id = mmt.organization_id '
7928 					 || ' AND rt.transaction_type = ''DELIVER'''
7929 					 || ' AND rt.destination_type_code = ''INVENTORY'''
7930 					 || ' AND mmt.transaction_id = v.last_transaction_id '
7931 					 || ' AND mmt.organization_id = v.organization_id ';
7932 
7933 	END IF;
7934 	--bug 6633612
7935 
7936         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
7937           query_str  := query_str || ' AND v.project_id = :pr_id ';
7938         END IF;
7939 
7940   -- NSRIVAST, INVCONV, Start
7941       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
7942          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
7943       END IF ;
7944       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
7945          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
7946       END IF ;
7947    -- NSRIVAST, INVCONV, End
7948 
7949         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
7950           query_str  := query_str || ' AND v.task_id = :ta_id ';
7951         END IF;
7952 
7953         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
7954           query_str  := query_str || ' AND v.unit_number=:un_id ';
7955         END IF;
7956 
7957         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
7958         -- from onhand table (MOQD)
7959         if (l_default_status_id is not null) then -- Status at onhand level
7960            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7961                query_str  := query_str || 'AND v.serial_status_id = :st_id ';
7962            ELSE
7963               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7964                  query_str  := query_str || 'AND v.serial_status_id = :st_id ';
7965               END IF;
7966            END IF;
7967         else
7968            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
7969                query_str  := query_str || 'AND v.locator_status_id = :st_id ';
7970            ELSE
7971               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7972                  query_str  := query_str || 'AND v.locator_status_id = :st_id ';
7973               END IF;
7974            END IF;
7975         end if;
7976 
7977 /*
7978         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
7979           IF inv_mwb_globals.g_only_locator_status = 1 THEN
7980             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
7981             query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
7982           ELSE
7983             query_str  := query_str || 'AND locator_status_id = :st_id ';
7984           END IF;
7985         END IF;
7986 */
7987         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
7988           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
7989         END IF;
7990 
7991         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
7992           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
7993         END IF;
7994 
7995         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
7996           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
7997         END IF;
7998 
7999         IF inv_mwb_globals.g_revision IS NOT NULL THEN
8000           query_str  := query_str || 'AND v.revision = :rev ';
8001         END IF;
8002 
8003         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8004           query_str  := query_str || 'AND v.serial_number >= :serial_f ';
8005         END IF;
8006 
8007         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8008           query_str  := query_str || 'AND v.serial_number <= :serial_t ';
8009         END IF;
8010 
8011         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8012           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
8013         END IF;
8014 
8015         query_str  := query_str || 'AND v.locator_id is not null ';
8016 
8017         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8018           query_str  := query_str || 'AND v.locator_id = :loc_id ';
8019         END IF;
8020 
8021         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
8022         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
8023           query_str  := query_str || 'AND v.subinventory_code = :sub ';
8024         END IF;
8025 
8026          --ER(3338592) Changes
8027          IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8028             query_str := query_str || ' AND v.item_description LIKE :item_description ';
8029          END IF;
8030          --ER(3338592) Changes
8031 
8032         IF inv_mwb_globals.g_organization_id IS NOT NULL
8033         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8034           query_str  := query_str || 'AND v.organization_id = :org_id ';
8035         END IF;
8036 
8037         query_str  := query_str || 'GROUP BY v.locator_id, v.locator ';
8038         query_str  := query_str || 'ORDER BY v.locator ';
8039       -- Need to use both mtl_onhand_total_v and mtl_onhand_serial_v
8040       ELSIF(
8041             inv_mwb_globals.g_serial_from IS NULL
8042             AND inv_mwb_globals.g_serial_to IS NULL
8043             AND inv_mwb_globals.g_unit_number IS NULL
8044             AND inv_mwb_globals.g_status_id IS NOT NULL
8045             AND inv_mwb_globals.g_lpn_from IS NULL
8046             AND inv_mwb_globals.g_lpn_to IS NULL
8047            ) THEN
8048         IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
8049           table_required  := ' mtl_onhand_total_mwb_v v ';
8050 --        ELSIF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
8051 --            table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
8052         ELSE
8053           table_required  := ' mtl_onhand_total_v v ';
8054         END IF;
8055 
8056 		--bug 6633612
8057 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8058 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
8059 		END IF;
8060 		--bug 6633612
8061 
8062         query_str  := 'SELECT locator_id, locator from (';
8063 
8064         IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
8065           query_str  := query_str || 'SELECT v.locator_id locator_id, v.locator locator from ' || table_required;
8066           query_str  := query_str || 'WHERE 1=1 ';
8067         ELSE
8068           query_str  :=
8069                 query_str
8070              || 'SELECT v.locator_id locator_id, v.locator locator from'
8071              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8072              || inv_mwb_globals.g_tree_lot_attr_query
8073              || ') mln, '
8074              || table_required;
8075           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
8076  		--BUG 7556505
8077 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8078 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8079 	           END IF;
8080 		--BUG 7556505
8081         END IF;
8082 
8083 	--bug 6633612
8084 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8085 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
8086 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
8087 					 || ' AND rt.organization_id = mmt.organization_id '
8088 					 || ' AND rt.transaction_type = ''DELIVER'''
8089 					 || ' AND rt.destination_type_code = ''INVENTORY'''
8090 					 || ' AND mmt.transaction_id = v.create_transaction_id '
8091 					 || ' AND mmt.organization_id = v.organization_id ';
8092 
8093 	END IF;
8094 	--bug 6633612
8095 
8096         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8097           query_str  := query_str || ' AND v.project_id = :pr_id ';
8098         END IF;
8099 
8100         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8101           query_str  := query_str || ' AND v.task_id = :ta_id ';
8102         END IF;
8103 
8104         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8105            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8106            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
8107          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8108            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
8109            query_str := query_str || ' AND  planning_organization_id in ';
8110            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
8111            query_str := query_str || '  where vendor_id = :vendor_id )';
8112         END IF;*/
8113         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
8114           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
8115           query_str  := query_str || ' AND v.owning_tp_type = 2 ';
8116         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8117           query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
8118           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
8119         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
8120           query_str  := query_str || ' AND v.owning_tp_type = 1 ';
8121         END IF;
8122 
8123         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
8124           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
8125           query_str  := query_str || ' AND v.planning_tp_type = 2 ';
8126         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
8127           query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
8128           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
8129         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
8130           query_str  := query_str || ' AND v.planning_tp_type = 1 ';
8131         END IF;
8132 
8133         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
8134         -- from onhand table (MOQD)
8135         if (l_default_status_id is not null) then -- Status at onhand level
8136            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8137                query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
8138            ELSE
8139               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8140                  query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
8141               END IF;
8142            END IF;
8143         else
8144            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8145                query_str  := query_str || 'AND v.locator_status_id = :st_id ';
8146            ELSE
8147               IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
8148                  query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
8149                  query_str  := query_str || 'OR v.lot_status_id = :st_id) ';
8150               END IF;
8151            END IF;
8152         end if;
8153 
8154 /*
8155         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8156           IF inv_mwb_globals.g_only_locator_status = 1 THEN
8157             query_str  := query_str || 'AND (subinventory_status_id = :st_id or ';
8158             query_str  := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
8159           ELSE
8160             query_str  := query_str || 'AND locator_status_id = :st_id ';
8161           END IF;
8162         END IF;
8163 */
8164         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8165           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
8166         END IF;
8167 
8168         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8169           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
8170         END IF;
8171 
8172   -- NSRIVAST, INVCONV, Start
8173       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8174          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
8175       END IF ;
8176       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
8177          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
8178       END IF ;
8179    -- NSRIVAST, INVCONV, End
8180 
8181         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8182           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
8183         END IF;
8184 
8185         IF inv_mwb_globals.g_revision IS NOT NULL THEN
8186           query_str  := query_str || 'AND v.revision = :rev ';
8187         END IF;
8188 
8189         --query_str  := query_str || 'AND serial_number_control_code in (1,6) ';
8190         query_str := query_str || 'AND v.item_serial_control in (1,6) ';
8191 
8192         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8193           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
8194         END IF;
8195 
8196         query_str  := query_str || 'AND v.locator_id is not null ';
8197 
8198         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8199           query_str  := query_str || 'AND v.locator_id = :loc_id ';
8200         END IF;
8201 
8202          --ER(3338592) Changes
8203          IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8204             query_str := query_str || ' AND v.item_description LIKE :item_description ';
8205          END IF;
8206          --ER(3338592) Changes
8207 
8208         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
8209         OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8210           query_str  := query_str || 'AND v.subinventory_code = :sub ';
8211         END IF;
8212 
8213         IF inv_mwb_globals.g_organization_id IS NOT NULL
8214         OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
8215           query_str  := query_str || 'AND v.organization_id = :org_id ';
8216         END IF;
8217 
8218         query_str  := query_str || 'UNION ';
8219 
8220         IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
8221           table_required  := ' mtl_onhand_serial_mwb_v v ';
8222         ELSE
8223           table_required  := ' mtl_onhand_serial_v v ' ;
8224         END IF;
8225 
8226 		--bug 6633612
8227 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8228 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
8229 		END IF;
8230 		--bug 6633612
8231 
8232         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
8233            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8234           query_str  := query_str || 'SELECT v.locator_id locator_id , v.locator locator from ' || table_required;
8235           query_str  := query_str || 'WHERE 1=1 ';
8236         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
8237               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8238           query_str  :=
8239                 query_str
8240              || 'SELECT v.locator_id locator_id, v.locator locator from'
8241              || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8242              || inv_mwb_globals.g_tree_lot_attr_query
8243              || ') mln, '
8244              || table_required;
8245           query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
8246  		--BUG 7556505
8247 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8248 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8249 	           END IF;
8250 		--BUG 7556505
8251         END IF;
8252 
8253 	--bug 6633612
8254 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8255 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
8256 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
8257 					 || ' AND rt.organization_id = mmt.organization_id '
8258 					 || ' AND rt.transaction_type = ''DELIVER'''
8259 					 || ' AND rt.destination_type_code = ''INVENTORY'''
8260 					 || ' AND mmt.transaction_id = v.last_transaction_id '
8261 					 || ' AND mmt.organization_id = v.organization_id ';
8262 
8263 	END IF;
8264 	--bug 6633612
8265 
8266         -- Onhand Material Status Support: If status is tracked at onhand level then check for status
8267         -- from onhand table (MOQD)
8268         if (l_default_status_id is not null) then -- Status at onhand level
8269            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8270                query_str  := query_str || 'AND v.serial_status_id = :st_id ';
8271            ELSE
8272               IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8273                  query_str  := query_str || 'AND v.serial_status_id = :st_id ';
8274               END IF;
8275            END IF;
8276         else
8277            IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8278                query_str  := query_str || 'AND v.locator_status_id = :st_id ';
8279            ELSE
8280               IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
8281                  query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
8282                  query_str  := query_str || 'OR v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
8283               END IF;
8284            END IF;
8285         end if;
8286 
8287 /*
8288         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8289           IF inv_mwb_globals.g_only_locator_status = 1 THEN
8290             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
8291             query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
8292           ELSE
8293             query_str  := query_str || 'AND locator_status_id = :st_id ';
8294           END IF;
8295         END IF;
8296 */
8297         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8298           query_str  := query_str || 'AND v.lot_number >= :lot_f ';
8299         END IF;
8300 
8301         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8302           query_str  := query_str || 'AND v.lot_number <= :lot_t ';
8303         END IF;
8304 
8305         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8306           query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
8307         END IF;
8308 
8309         IF inv_mwb_globals.g_revision IS NOT NULL THEN
8310           query_str  := query_str || 'AND v.revision = :rev ';
8311         END IF;
8312 
8313         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8314           query_str  := query_str || 'AND v.serial_number >= :serial_f ';
8315         END IF;
8316 
8317         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8318           query_str  := query_str || 'AND v.serial_number <= :serial_t ';
8319         END IF;
8320 
8321         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8322           query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
8323         END IF;
8324 
8325         query_str  := query_str || 'AND v.locator_id is not null ';
8326 
8327         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8328           query_str  := query_str || 'AND v.locator_id = :loc_id ';
8329         END IF;
8330 
8331         --ER(3338592) Changes
8332         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8333            query_str := query_str || ' AND v.item_description LIKE :item_description ';
8334         END IF;
8335         --ER(3338592) Changes
8336 
8337        IF inv_mwb_globals.g_subinventory_code IS NOT NULL
8338        OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
8339           query_str  := query_str || 'AND v.subinventory_code = :sub ';
8340        END IF;
8341 
8342        IF inv_mwb_globals.g_organization_id IS NOT NULL
8343        OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8344           query_str  := query_str || 'AND v.organization_id = :org_id ';
8345        END IF;
8346 
8347         query_str  := query_str || ') GROUP BY locator_id, locator ';
8348         query_str  := query_str || 'ORDER BY locator ';
8349       -- Need to use mtl_onhand_lpn_v
8350       ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
8351             OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
8352         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
8353           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
8354         ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
8355           table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
8356             IF is_grade_t = TRUE THEN                            -- NSRIVAST, INVCONV
8357               table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
8358             END IF;                                              -- NSRIVAST, INVCONV
8359         ELSE
8360           table_required  := ' mtl_onhand_new_lpn_v mol ';
8361         END IF;
8362 
8363         query_str  := 'SELECT locator_id, locator from ' || table_required;
8364 
8365         IF inv_mwb_globals.g_lpn_from IS NOT NULL
8366            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8367           query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
8368           query_str  := query_str || ' WHERE 1=1 ';
8369 
8370           IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8371             query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
8372           END IF;
8373 
8374   -- NSRIVAST, INVCONV, Start
8375       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8376          query_str := query_str || ' AND grade_code = :grade_f ' ;
8377       END IF ;
8378       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
8379          query_str := query_str || ' AND grade_code = :grade_c ' ;
8380       END IF ;
8381    -- NSRIVAST, INVCONV, End
8382 
8383           IF inv_mwb_globals.g_subinventory_code IS NOT NULL
8384           OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
8385             query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
8386           END IF;
8387 
8388           IF inv_mwb_globals.g_organization_id IS NOT NULL
8389           OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8390             query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
8391           END IF;
8392 
8393           IF inv_mwb_globals.g_lpn_from IS NOT NULL
8394              OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8395             IF inv_mwb_globals.g_lpn_from IS NOT NULL
8396                AND inv_mwb_globals.g_lpn_to IS NULL THEN
8397               query_str  := query_str || ' and license_plate_number >= :lpn_f ';
8398             ELSIF inv_mwb_globals.g_lpn_from IS NULL
8399                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8400               query_str  := query_str || ' and license_plate_number <= :lpn_t ';
8401             ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
8402                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8403                 --bugfix#3646484
8404                 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)  THEN
8405                 --User is querying for single LPN so converted the range query to equality query
8406                    query_str := query_str || 'and license_plate_number = :lpn_f ';
8407                 ELSE
8408                  query_str  := query_str || ' and license_plate_number >= :lpn_f ';
8409                  query_str  := query_str || ' and license_plate_number <= :lpn_t ';
8410                 END IF;
8411             END IF;
8412           END IF;
8413 
8414           query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
8415         END IF;
8416 
8417         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
8418            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8419           query_str  := query_str || 'WHERE 1=1 ';
8420         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
8421               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
8422           query_str  :=
8423                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
8424                      || ') msn ';
8425           query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
8426         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
8427               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
8428           query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
8429           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
8430  		--BUG 7556505
8431 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8432 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8433 	           END IF;
8434 		--BUG 7556505
8435         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
8436               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
8437           query_str  :=
8438                 query_str
8439              || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8440              || inv_mwb_globals.g_tree_lot_attr_query
8441              || ') mln '
8442              || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
8443              || inv_mwb_globals.g_tree_serial_attr_query
8444              || ') msn ';
8445           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
8446  		--BUG 7556505
8447 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8448 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8449 	           END IF;
8450 		--BUG 7556505
8451           query_str  := query_str || 'AND msn.serial_num = serial_number ';
8452         END IF;
8453 
8454         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8455           query_str  := query_str || ' AND project_id = :pr_id ';
8456         END IF;
8457 
8458         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8459           query_str  := query_str || ' AND task_id = :ta_id ';
8460         END IF;
8461 
8462         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
8463           query_str  := query_str || ' AND unit_number=:un_id ';
8464         END IF;
8465 
8466         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8467            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8468            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
8469          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8470            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
8471            query_str := query_str || ' AND  planning_organization_id in ';
8472            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
8473            query_str := query_str || '  where vendor_id = :vendor_id )';
8474         END IF;*/
8475         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
8476           query_str  := query_str || ' AND owning_organization_id = :own_org ';
8477           query_str  := query_str || ' AND owning_tp_type = 2 ';
8478         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8479           query_str  := query_str || ' AND owning_organization_id = :own_org ';
8480           query_str  := query_str || ' AND owning_tp_type = 1 ';
8481         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
8482           query_str  := query_str || ' AND owning_tp_type = 1 ';
8483         END IF;
8484 
8485         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
8486           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
8487           query_str  := query_str || ' AND planning_tp_type = 2 ';
8488         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
8489           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
8490           query_str  := query_str || ' AND planning_tp_type = 1 ';
8491         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
8492           query_str  := query_str || ' AND planning_tp_type = 1 ';
8493         END IF;
8494 
8495 	/*LPN Status Project */
8496 	IF (l_default_status_id IS NOT NULL) THEN -- Status at onhand level
8497           IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8498 	    query_str  := query_str || 'AND onhand_status_id = :st_id ';
8499 	  ELSE
8500 	    IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8501 	      query_str  := query_str || 'AND onhand_status_id = :st_id ';
8502             END IF;
8503 	  END IF;
8504 	ELSE
8505 	  IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8506               query_str  := query_str || 'AND locator_status_id = :st_id ';
8507           ELSE
8508             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8509               query_str  := query_str || 'AND locator_status_id = :st_id ';
8510             END IF;
8511 	  END IF;
8512         END IF;
8513         /*End of fix for LPN Status Project */
8514 
8515 /*
8516         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8517           IF inv_mwb_globals.g_only_locator_status = 1 THEN
8518             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
8519             query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
8520           ELSE
8521             query_str  := query_str || 'AND locator_status_id = :st_id ';
8522           END IF;
8523         END IF;
8524 */
8525 
8526         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8527           query_str  := query_str || 'AND lot_number >= :lot_f ';
8528         END IF;
8529 
8530         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8531           query_str  := query_str || 'AND lot_number <= :lot_t ';
8532         END IF;
8533 
8534         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8535           query_str  := query_str || 'AND cost_group_id = :cg_id ';
8536         END IF;
8537 
8538         IF inv_mwb_globals.g_revision IS NOT NULL THEN
8539           query_str  := query_str || 'AND revision = :rev ';
8540         END IF;
8541 
8542         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8543           query_str  := query_str || 'AND serial_number >= :serial_f ';
8544         END IF;
8545 
8546         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8547           query_str  := query_str || 'AND serial_number <= :serial_t ';
8548         END IF;
8549 
8550         IF inv_mwb_globals.g_lpn_from IS NOT NULL
8551            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8552           query_str  := query_str || 'AND mol.outermost_lpn_id = X.outermost_lpn_id ';
8553         END IF;
8554 
8555         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8556           query_str  := query_str || 'AND inventory_item_id = :item_id ';
8557         END IF;
8558 
8559         query_str  := query_str || 'AND locator_id is not null ';
8560 
8561         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8562           query_str  := query_str || 'AND locator_id = :loc_id ';
8563         END IF;
8564 
8565         --ER(3338592) Changes
8566         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8567            query_str := query_str || ' AND item_description LIKE :item_description ';
8568         END IF;
8569         --ER(3338592) Changes
8570 
8571         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
8572         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
8573           query_str  := query_str || 'AND subinventory_code = :sub ';
8574         END IF;
8575 
8576         IF inv_mwb_globals.g_organization_id IS NOT NULL
8577         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8578           query_str  := query_str || 'AND organization_id = :org_id ';
8579         END IF;
8580 
8581         query_str  := query_str || 'GROUP BY locator_id, locator ';
8582         query_str  := query_str || 'ORDER BY locator ';
8583       END IF;
8584     END IF;
8585 
8586         inv_trx_util_pub.trace(query_str, 'Add Loc :- Material Workbench', 9);
8587        --trace1(query_str, 'add_locs', 9);
8588     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
8589 
8590     inv_mwb_globals.g_last_query := query_str;
8591 
8592     query_hdl       := DBMS_SQL.open_cursor;
8593     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
8594 
8595 
8596     IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
8597       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
8598     ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
8599       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
8600     END IF;
8601 
8602     IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
8603       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
8604     ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8605       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
8606     END IF;
8607 
8608     IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8609       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
8610     END IF;
8611 
8612     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8613       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
8614     END IF;
8615 
8616     IF inv_mwb_globals.g_revision IS NOT NULL THEN
8617       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
8618     END IF;
8619 
8620     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8621       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
8622     END IF;
8623 
8624     --BUG 7556505
8625     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8626       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
8627     END IF;
8628     --BUG 7556505
8629 
8630     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8631       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
8632     END IF;
8633 
8634     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8635       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
8636     END IF;
8637 
8638     --bug 6633612
8639     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
8640       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
8641     END IF;
8642     --bug 6633612
8643 
8644 -- NSRIVAST, INVCONV, Start
8645     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8646       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
8647     END IF;
8648     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
8649       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
8650     END IF;
8651 -- NSRIVAST, INVCONV, End
8652 
8653     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
8654       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
8655     END IF;
8656 
8657     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
8658       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
8659     END IF;
8660 
8661       --bugfix#3646484
8662       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
8663       --User is querying for single LPN so converted the range query to equality query
8664       --So it is enought to bind the from lpn alone
8665          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
8666       ELSE
8667           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
8668             DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
8669           END IF;
8670 
8671           IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
8672             DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
8673           END IF;
8674       END IF;
8675 
8676         IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
8677             DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
8678         ELSE
8679            IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8680               DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
8681            END IF;
8682         END IF;
8683 /*
8684     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8685       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
8686     END IF;
8687 */
8688 
8689     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8690       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
8691     END IF;
8692 
8693     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8694       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
8695     END IF;
8696 
8697     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
8698       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
8699     END IF;
8700 
8701     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8702        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
8703      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8704        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
8705     END IF;*/
8706     IF (inv_mwb_globals.g_owning_qry_mode = 4)
8707        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8708       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
8709     END IF;
8710 
8711     IF (inv_mwb_globals.g_planning_query_mode = 4)
8712        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
8713       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
8714     END IF;
8715 
8716     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
8717       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
8718     END IF;
8719 
8720     --ER(3338592) Changes
8721     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8722        dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
8723     END IF;
8724 
8725     DBMS_SQL.define_column(query_hdl, 1, loc_id);
8726     DBMS_SQL.define_column(query_hdl, 2, loc_code, 204);
8727     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
8728 
8729     LOOP
8730       -- fetch a row
8731       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
8732         -- fetch columns from the row
8733         DBMS_SQL.column_value(query_hdl, 1, loc_id);
8734         DBMS_SQL.column_value(query_hdl, 2, loc_code);
8735         IF j >= inv_mwb_globals.g_tree_node_low_value
8736            AND loc_code IS NOT NULL THEN
8737           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
8738           x_node_tbl(i).DEPTH  := 1;
8739           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
8740           x_node_tbl(i).icon   := 'inv_stlo';
8741           x_node_tbl(i).VALUE  := TO_CHAR(loc_id);
8742           x_node_tbl(i).TYPE   := 'LOC';
8743           i                    := i + 1;
8744         END IF;
8745 
8746         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
8747         j  := j + 1;
8748       ELSE
8749         EXIT;
8750       END IF;
8751     END LOOP;
8752 
8753     DBMS_SQL.close_cursor(query_hdl); -- close cursor
8754     x_node_value    := j;
8755     x_tbl_index     := i;
8756   EXCEPTION
8757     WHEN NO_DATA_FOUND THEN
8758       NULL;
8759     WHEN OTHERS THEN
8760       RAISE;
8761   END add_locs;
8762 
8763   PROCEDURE add_cgs(
8764     x_node_value          IN OUT NOCOPY NUMBER
8765   , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
8766   , x_tbl_index           IN OUT NOCOPY NUMBER
8767   ) IS
8768     query_str      VARCHAR2(10000);
8769     query_hdl      NUMBER;
8770     rows_processed NUMBER;
8771     cg_id          cst_cost_groups.cost_group_id%TYPE;
8772     cg             cst_cost_groups.cost_group%TYPE;
8773     i              NUMBER                               := x_tbl_index;
8774     j              NUMBER                               := x_node_value;
8775     table_required VARCHAR2(300);
8776     --ER(3338592) Changes
8777     group_str      VARCHAR2(10000) ;
8778     having_str     VARCHAR2(10000) := ' HAVING 1=1 ';
8779     --ER(3338592) Changes
8780     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
8781 
8782     l_procedure_name CONSTANT VARCHAR2(30) := 'ADD CGS';
8783     l_default_status_id NUMBER; -- Onhand Material Status Support
8784    BEGIN
8785       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
8786 
8787       -- Onhand Material Status Support
8788       if (inv_mwb_globals.g_organization_id is not null) then
8789          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
8790            l_default_status_id :=  inv_cache.org_rec.default_status_id;
8791          end if;
8792       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
8793          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
8794            l_default_status_id :=  inv_cache.org_rec.default_status_id;
8795          end if;
8796       end if;
8797 
8798 -- NSRIVAST, INVCONV, Start
8799      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
8800              is_grade_t     := TRUE ;
8801      END IF ;
8802 -- NSRIVAST, INVCONV, End
8803 
8804     IF (
8805         inv_mwb_globals.g_serial_from IS NULL
8806         AND inv_mwb_globals.g_serial_to IS NULL
8807         AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
8808         AND inv_mwb_globals.g_unit_number IS NULL
8809         AND inv_mwb_globals.g_status_id IS NULL
8810         AND inv_mwb_globals.g_lpn_from IS NULL
8811         AND inv_mwb_globals.g_lpn_to IS NULL
8812         AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
8813        ) THEN
8814       IF (inv_mwb_globals.g_status_id IS NULL) THEN
8815         table_required  := ' mtl_onhand_total_mwb_v v ';
8816             IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
8817                table_required  := ' mtl_onhand_total_v  v ';  -- NSRIVAST, INVCONV
8818             END IF;
8819       ELSE
8820         table_required  := ' mtl_onhand_total_v v ';
8821       END IF;
8822 
8823        --bug 6633612
8824 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8825 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
8826 	END IF;
8827 	--bug 6633612
8828 
8829       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
8830         query_str  := 'SELECT DISTINCT v.cost_group_id , ccg.cost_group ';
8831         query_str  := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
8832         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
8833       ELSE
8834         query_str  :=
8835               query_str
8836            || 'SELECT v.cost_group_id , ccg.cost_group from'
8837            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
8838            || inv_mwb_globals.g_tree_lot_attr_query
8839            || ') mln, cst_cost_groups ccg, '
8840            || table_required;
8841         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
8842         query_str  := query_str || 'AND mln.lot_num = v.lot_number ';
8843  		--BUG 7556505
8844 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
8845 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
8846 	           END IF;
8847 		--BUG 7556505
8848       END IF;
8849 
8850       query_str  := query_str || 'AND ccg.cost_group_id = v.cost_group_id ';
8851 
8852 	--bug 6633612
8853 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
8854 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
8855 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
8856 					 || ' AND rt.organization_id = mmt.organization_id '
8857 					 || ' AND rt.transaction_type = ''DELIVER'''
8858 					 || ' AND rt.destination_type_code = ''INVENTORY'''
8859 					 || ' AND mmt.transaction_id = v.create_transaction_id '
8860 					 || ' AND mmt.organization_id = v.organization_id ';
8861 
8862 	END IF;
8863 	--bug 6633612
8864 
8865       --ER(3338592) Changes (If the user gives the value for the Qty then only
8866       --Group by clause comes in to effect)
8867 
8868       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
8869          group_str := ' GROUP BY  v.organization_id ';
8870       END IF;
8871 
8872       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
8873         query_str  := query_str || 'AND v.subinventory_code = :sub ';
8874         --ER(3338592) Changes
8875         IF group_str IS NOT NULL THEN
8876            group_str := group_str || ' , v.subinventory_code  ' ;
8877         END IF;
8878       END IF;
8879 
8880   -- NSRIVAST, INVCONV, Start
8881       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
8882          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
8883       END IF ;
8884       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
8885          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
8886       END IF ;
8887    -- NSRIVAST, INVCONV, End
8888 
8889       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
8890         query_str  := query_str || 'AND v.locator_id = :loc_id ';
8891         --ER(3338592) Changes
8892         IF group_str IS NOT NULL THEN
8893            group_str := group_str || ' , v.locator_id  ' ;
8894         END IF;
8895       END IF;
8896 
8897       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
8898         query_str  := query_str || ' AND v.project_id = :pr_id ';
8899         --ER(3338592) Changes
8900         IF group_str IS NOT NULL THEN
8901            group_str := group_str || ' , v.project_id  ' ;
8902         END IF;
8903       END IF;
8904 
8905       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
8906         query_str  := query_str || ' AND v.task_id = :ta_id ';
8907         --ER(3338592) Changes
8908         IF group_str IS NOT NULL THEN
8909            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
8910         END IF;
8911       END IF;
8912 
8913       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
8914          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
8915       END IF;
8916 
8917       --Bug # 3411938
8918       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
8919          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
8920       END IF;
8921 
8922       --ER(3338592) Changes
8923       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
8924          query_str := query_str || ' AND v.item_description LIKE :item_description ';
8925       END IF;
8926 
8927       IF inv_mwb_globals.g_revision IS NOT NULL THEN
8928         query_str  := query_str || 'AND v.revision = :rev ';
8929         --ER(3338592) Changes
8930         IF group_str IS NOT NULL THEN
8931            group_str := group_str || ' , v.revision  ' ;
8932         END IF;
8933       END IF;
8934 
8935       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
8936         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
8937       END IF;
8938 
8939       --Bug #3405473
8940       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
8941          group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
8942       END IF;
8943 
8944       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
8945         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
8946       END IF;
8947 
8948       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
8949         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
8950       END IF;
8951 
8952       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
8953       -- from onhand table (MOQD)
8954       if (l_default_status_id is not null) then
8955          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8956            query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
8957          END IF;
8958       else
8959          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
8960            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or ';
8961            query_str  := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
8962          END IF;
8963       end if;
8964 
8965       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
8966          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
8967          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
8968        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
8969          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
8970          query_str := query_str || ' AND  planning_organization_id in ';
8971          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
8972          query_str := query_str || '  where vendor_id = :vendor_id )';
8973       END IF;*/
8974 
8975       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
8976         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
8977         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
8978       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
8979         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
8980         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
8981       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
8982         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
8983       END IF;
8984 
8985       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
8986         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
8987         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
8988       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
8989         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
8990         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
8991       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
8992         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
8993       END IF;
8994 
8995       --Bug #3411938
8996       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
8997          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
8998          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
8999          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
9000       END IF;
9001 
9002       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
9003         query_str  := query_str || 'AND v.organization_id = :org_id ';
9004       ELSE
9005         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
9006         query_str  := query_str || ' FROM org_access_view oav ' ;
9007         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
9008         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
9009         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
9010       END IF;
9011 
9012       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
9013          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
9014       END IF;
9015 
9016       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
9017          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
9018       END IF;
9019 
9020       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9021          query_str := query_str || group_str || having_str || '  ' ;
9022       --Bug #3405473
9023       ELSE
9024         query_str := query_str || ' GROUP BY  v.cost_group_id, ccg.cost_group ' ;
9025       END IF;
9026 
9027       query_str  := query_str || 'ORDER BY ccg.cost_group ';
9028 
9029     ELSIF(
9030           (
9031            inv_mwb_globals.g_serial_from IS NOT NULL
9032            OR inv_mwb_globals.g_serial_from IS NOT NULL
9033            OR inv_mwb_globals.g_unit_number IS NOT NULL
9034            OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
9035           )
9036           AND inv_mwb_globals.g_lpn_from IS NULL
9037           AND inv_mwb_globals.g_lpn_to IS NULL
9038          ) THEN
9039       IF (inv_mwb_globals.g_status_id IS NULL) THEN
9040         table_required  := ' mtl_onhand_serial_mwb_v v ';
9041          IF is_grade_t = TRUE THEN                            -- NSRIVAST, INVCONV
9042             table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
9043          END IF  ;                                             -- NSRIVAST, INVCONV
9044       ELSE
9045         table_required  := ' mtl_onhand_serial_v v ';
9046       END IF;
9047 
9048        --bug 6633612
9049 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9050 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9051 	END IF;
9052 	--bug 6633612
9053 
9054       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
9055          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9056         query_str  := 'SELECT DISTINCT v.cost_group_id, ccg.cost_group ';
9057         query_str  := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
9058         query_str  := query_str || 'WHERE ccg.cost_group_id = mos.cost_group_id ';
9059       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
9060             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
9061         query_str  :=
9062               query_str
9063            || 'SELECT DISTINCT v.cost_group_id, ccg.cost_group from'
9064            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
9065            || inv_mwb_globals.g_tree_serial_attr_query
9066            || ') msn, cst_cost_groups ccg, '
9067            || table_required;
9068         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
9069         query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
9070       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
9071             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9072         query_str  :=
9073               query_str
9074            || 'SELECT DISTINCT v.cost_group_id, ccg.cost_group from'
9075            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9076            || inv_mwb_globals.g_tree_lot_attr_query
9077            || ') mln, cst_cost_groups ccg, '
9078            || table_required;
9079         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
9080         query_str  := query_str || 'AND mln.lot_num = v.lot_number ';
9081  		--BUG 7556505
9082 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9083 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9084 	           END IF;
9085 		--BUG 7556505
9086       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
9087             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
9088         query_str  :=
9089               query_str
9090            || 'SELECT DISTINCT v.cost_group_id, ccg.cost_group from'
9091            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9092            || inv_mwb_globals.g_tree_lot_attr_query
9093            || ') mln, '
9094            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
9095            || inv_mwb_globals.g_tree_serial_attr_query
9096            || ') msn, cst_cost_groups ccg, '
9097            || table_required;
9098         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
9099         query_str  := query_str || 'AND mln.lot_num = v.lot_number ';
9100  		--BUG 7556505
9101 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9102 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9103 	           END IF;
9104 		--BUG 7556505
9105         query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
9106       END IF;
9107 
9108       --ER(3338592) Changes (If the user gives the value for the Qty then only
9109       --Group by clause comes in to effect)
9110 
9111       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9112          group_str := ' GROUP BY  v.organization_id  ';
9113       END IF;
9114 
9115      IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9116        query_str  := query_str || 'AND v.subinventory_code = :sub ';
9117         --ER(3338592) Changes
9118         IF group_str IS NOT NULL THEN
9119            group_str := group_str || ' , v.subinventory_code  ' ;
9120         END IF;
9121      END IF;
9122 
9123      --bug 6633612
9124 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9125 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9126 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9127 					 || ' AND rt.organization_id = mmt.organization_id '
9128 					 || ' AND rt.transaction_type = ''DELIVER'''
9129 					 || ' AND rt.destination_type_code = ''INVENTORY'''
9130 					 || ' AND mmt.transaction_id = v.last_transaction_id '
9131 					 || ' AND mmt.organization_id = v.organization_id ';
9132 
9133 	END IF;
9134 	--bug 6633612
9135 
9136   -- NSRIVAST, INVCONV, Start
9137       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9138          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
9139       END IF ;
9140       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
9141          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
9142       END IF ;
9143    -- NSRIVAST, INVCONV, End
9144 
9145      IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9146        query_str  := query_str || 'AND v.locator_id = :loc_id ';
9147        --ER(3338592) Changes
9148        IF group_str IS NOT NULL THEN
9149           group_str := group_str || ' , v.locator_id  ' ;
9150        END IF;
9151      END IF;
9152 
9153      IF inv_mwb_globals.g_project_id IS NOT NULL THEN
9154        query_str  := query_str || ' AND v.project_id = :pr_id ';
9155        --ER(3338592) Changes
9156        IF group_str IS NOT NULL THEN
9157           group_str := group_str || ' , v.project_id  ' ;
9158        END IF;
9159      END IF;
9160 
9161      IF inv_mwb_globals.g_task_id IS NOT NULL THEN
9162        query_str  := query_str || ' AND v.task_id = :ta_id ';
9163        --ER(3338592) Changes
9164        IF group_str IS NOT NULL THEN
9165           group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
9166        END IF;
9167      END IF;
9168 
9169       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9170          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
9171       END IF;
9172 
9173       --Bug # 3411938
9174       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9175          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
9176       END IF;
9177 
9178       --ER(3338592) Changes
9179       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9180          query_str := query_str || ' AND v.item_description LIKE :item_description ';
9181       END IF;
9182 
9183       IF inv_mwb_globals.g_revision IS NOT NULL THEN
9184         query_str  := query_str || 'AND v.revision = :rev ';
9185         --ER(3338592) Changes
9186         IF group_str IS NOT NULL THEN
9187            group_str := group_str || ' , v.revision  ' ;
9188         END IF;
9189       END IF;
9190 
9191       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9192         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
9193       END IF;
9194 
9195      --Bug #3405473
9196      IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9197         group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
9198      END IF;
9199 
9200       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9201         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
9202       END IF;
9203 
9204       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9205         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
9206       END IF;
9207 
9208       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
9209         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
9210       END IF;
9211 
9212       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
9213         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
9214       END IF;
9215 
9216      IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
9217        query_str  := query_str || ' AND v.unit_number=:un_id ';
9218      END IF;
9219 
9220      -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9221      -- from serial table (MSN)
9222      if (l_default_status_id is not null) then
9223         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9224           query_str  := query_str || 'AND v.serial_status_id = :st_id ';
9225         END IF;
9226      else
9227         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9228           query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
9229           query_str  := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
9230         END IF;
9231      end if;
9232 
9233      /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
9234         query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9235         query_str := query_str || ' AND planning_organization_id = :site_id ' ;
9236       ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
9237         query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
9238         query_str := query_str || ' AND  planning_organization_id in ';
9239         query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
9240         query_str := query_str || '  where vendor_id = :vendor_id )';
9241      END IF;*/
9242 
9243       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
9244         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
9245         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
9246       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
9247         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
9248         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
9249       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
9250         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
9251       END IF;
9252 
9253       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
9254         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
9255         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
9256       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
9257         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
9258         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
9259       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
9260         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
9261       END IF;
9262 
9263       --Bug #3411938
9264       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9265          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
9266          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
9267          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
9268       END IF;
9269 
9270      IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
9271         query_str  := query_str || 'AND v.organization_id = :org_id ';
9272      ELSE
9273         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
9274         query_str  := query_str || ' FROM org_access_view oav ' ;
9275         query_str  := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
9276         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
9277         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
9278      END IF;
9279 
9280      IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
9281         having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
9282      END IF;
9283 
9284      IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
9285         having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
9286      END IF;
9287 
9288      IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9289         query_str := query_str || group_str || having_str || '  ' ;
9290      --Bug #3405473
9291      ELSE
9292        query_str := query_str || ' GROUP BY  v.cost_group_id, ccg.cost_group ' ;
9293      END IF;
9294 
9295      query_str  := query_str || 'ORDER BY ccg.cost_group ';
9296 
9297     -- Need to use both mtl_onhand_total_v and mtl_onhand_serial_v
9298     ELSIF(
9299           inv_mwb_globals.g_serial_from IS NULL
9300           AND inv_mwb_globals.g_serial_to IS NULL
9301           AND inv_mwb_globals.g_unit_number IS NULL
9302           AND inv_mwb_globals.g_status_id IS NOT NULL
9303           AND inv_mwb_globals.g_lpn_from IS NULL
9304           AND inv_mwb_globals.g_lpn_to IS NULL
9305          ) THEN
9306       IF (inv_mwb_globals.g_status_id IS NULL) THEN
9307         table_required  := ' mtl_onhand_total_mwb_v v ';
9308 --      ELSIF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
9309 --          table_required  := ' mtl_onhand_new_lpn_v  ';   -- NSRIVAST, INVCONV
9310       ELSE
9311         table_required  := ' mtl_onhand_total_v v ';
9312       END IF;
9313 
9314        --bug 6633612
9315 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9316 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9317 	END IF;
9318 	--bug 6633612
9319 
9320       query_str  := 'SELECT DISTINCT cost_group_id, cost_group from (';
9321 
9322       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
9323         query_str  := query_str || 'SELECT v.cost_group_id cost_group_id, ccg.cost_group cost_group ';
9324         query_str  := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
9325         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
9326       ELSE
9327         query_str  :=
9328               query_str
9329            || 'SELECT v.cost_group_id cost_group_id, ccg.cost_group cost_group FROM '
9330            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9331            || inv_mwb_globals.g_tree_lot_attr_query
9332            || ') mln, cst_cost_groups ccg, '
9333            || table_required;
9334         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
9335         query_str  := query_str || 'AND mln.lot_num = v.lot_number ';
9336  		--BUG 7556505
9337 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9338 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9339 	           END IF;
9340 		--BUG 7556505
9341       END IF;
9342 
9343 
9344       --ER(3338592) Changes (If the user gives the value for the Qty then only
9345       --Group by clause comes in to effect)
9346 
9347       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9348          group_str := ' GROUP BY  v.organization_id ';
9349       END IF;
9350 
9351       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9352         query_str  := query_str || 'AND v.subinventory_code = :sub ';
9353         --ER(3338592) Changes
9354         IF group_str IS NOT NULL THEN
9355            group_str := group_str || ' , v.subinventory_code  ' ;
9356         END IF;
9357       END IF;
9358 
9359   -- NSRIVAST, INVCONV, Start
9360       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9361          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
9362       END IF ;
9363       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
9364          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
9365       END IF ;
9366    -- NSRIVAST, INVCONV, End
9367 
9368       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9369         query_str  := query_str || 'AND v.locator_id = :loc_id ';
9370         --ER(3338592) Changes
9371         IF group_str IS NOT NULL THEN
9372            group_str := group_str || ' , v.locator_id  ' ;
9373         END IF;
9374       END IF;
9375 
9376       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
9377         query_str  := query_str || ' AND v.project_id = :pr_id ';
9378         --ER(3338592) Changes
9379         IF group_str IS NOT NULL THEN
9380            group_str := group_str || ' , v.project_id  ' ;
9381         END IF;
9382       END IF;
9383 
9384       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
9385         query_str  := query_str || ' AND v.task_id = :ta_id ';
9386         --ER(3338592) Changes
9387         IF group_str IS NOT NULL THEN
9388            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
9389         END IF;
9390       END IF;
9391 
9392       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9393          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
9394       END IF;
9395 
9396       --Bug # 3411938
9397       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9398          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
9399       END IF;
9400 
9401       --ER(3338592) Changes
9402       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9403          query_str := query_str || ' AND v.item_description LIKE :item_description ';
9404       END IF;
9405 
9406       IF inv_mwb_globals.g_revision IS NOT NULL THEN
9407         query_str  := query_str || 'AND v.revision = :rev ';
9408         --ER(3338592) Changes
9409         IF group_str IS NOT NULL THEN
9410            group_str := group_str || ' , v.revision  ' ;
9411         END IF;
9412       END IF;
9413 
9414       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9415         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
9416       END IF;
9417 
9418       --Bug #3405473
9419       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9420          group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
9421       END IF;
9422 
9423       --bug 6633612
9424 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9425 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9426 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9427 					 || ' AND rt.organization_id = mmt.organization_id '
9428 					 || ' AND rt.transaction_type = ''DELIVER'''
9429 					 || ' AND rt.destination_type_code = ''INVENTORY'''
9430 					 || ' AND mmt.transaction_id = v.create_transaction_id '
9431 					 || ' AND mmt.organization_id = v.organization_id ';
9432 
9433 	END IF;
9434 	--bug 6633612
9435 
9436       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9437         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
9438       END IF;
9439 
9440       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9441         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
9442       END IF;
9443 
9444       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
9445         query_str  := query_str || ' AND v.unit_number=:un_id ';
9446       END IF;
9447 
9448       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9449       -- from onhand table (MOQD)
9450       if (l_default_status_id is not null) then
9451          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9452            query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
9453          END IF;
9454       else
9455          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9456            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or ';
9457            query_str  := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
9458          END IF;
9459       end if;
9460 
9461       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
9462          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9463          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
9464        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
9465          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
9466          query_str := query_str || ' AND  planning_organization_id in ';
9467          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
9468          query_str := query_str || '  where vendor_id = :vendor_id )';
9469       END IF;*/
9470 
9471       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
9472         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
9473         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
9474       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
9475         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
9476         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
9477       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
9478         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
9479       END IF;
9480 
9481       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
9482         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
9483         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
9484       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
9485         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
9486         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
9487       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
9488         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
9489       END IF;
9490 
9491       --Bug #3411938
9492       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9493          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
9494          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
9495          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
9496       END IF;
9497 
9498       --query_str  := query_str || 'AND mot.serial_number_control_code in (1,6) ';
9499       query_str := query_str || 'AND v.item_serial_control in (1,6) ';
9500 
9501       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
9502          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
9503       END IF;
9504 
9505       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
9506          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
9507       END IF;
9508 
9509       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9510          query_str := query_str || group_str || having_str || ' ' ;
9511       --Bug #3405473
9512       ELSE
9513          query_str := query_str || ' GROUP BY  v.cost_group_id, ccg.cost_group ' ;
9514       END IF;
9515 
9516       query_str  := query_str || 'UNION ';
9517 
9518       --Reinitializing the variable
9519       having_str := ' HAVING 1=1 ' ;
9520       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
9521          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9522         query_str  := query_str || 'SELECT v.cost_group_id, ccg.cost_group ';
9523         query_str  := query_str || 'FROM cst_cost_groups ccg, mtl_onhand_serial_v v ';
9524         query_str  := query_str || 'WHERE ccg.cost_group_id = v.cost_group_id ';
9525       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
9526             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9527         query_str  :=
9528               query_str
9529            || 'SELECT v.cost_group_id, ccg.cost_group from'
9530            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9531            || inv_mwb_globals.g_tree_lot_attr_query
9532            || ') mln, cst_cost_groups ccg, mtl_onhand_serial_v v ';
9533 	--bug 6633612
9534 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9535 		query_str  := query_str || ' , rcv_transactions rt, mtl_material_transactions mmt ';
9536 	END IF;
9537 	--bug 6633612
9538         query_str  := query_str || 'WHERE ccg.cost_group_id = mos.cost_group_id ';
9539         query_str  := query_str || 'AND mln.lot_num = v.lot_number ';
9540  		--BUG 7556505
9541 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9542 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9543 	           END IF;
9544 		--BUG 7556505
9545       END IF;
9546 
9547       --ER(3338592) Changes (If the user gives the value for the Qty then only
9548       --Group by clause comes in to effect)
9549 
9550       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9551          group_str := ' GROUP BY  v.organization_id ';
9552       END IF;
9553 
9554       --bug 6633612
9555 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
9556 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
9557 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
9558 					 || ' AND rt.organization_id = mmt.organization_id '
9559 					 || ' AND rt.transaction_type = ''DELIVER'''
9560 					 || ' AND rt.destination_type_code = ''INVENTORY'''
9561 					 || ' AND mmt.transaction_id = v.last_transaction_id '
9562 					 || ' AND mmt.organization_id = v.organization_id ';
9563 
9564 	END IF;
9565 	--bug 6633612
9566 
9567       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9568         query_str  := query_str || 'AND v.subinventory_code = :sub ';
9569         --ER(3338592) Changes
9570         IF group_str IS NOT NULL THEN
9571            group_str := group_str || ' , v.subinventory_code  ' ;
9572         END IF;
9573       END IF;
9574 
9575       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9576         query_str  := query_str || 'AND v.locator_id = :loc_id ';
9577         --ER(3338592) Changes
9578         IF group_str IS NOT NULL THEN
9579            group_str := group_str || ' , v.locator_id  ' ;
9580         END IF;
9581       END IF;
9582 
9583       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9584          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
9585       END IF;
9586 
9587       --Bug # 3411938
9588       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9589          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
9590       END IF;
9591 
9592       --ER(3338592) Changes
9593       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9594          query_str := query_str || ' AND v.item_description LIKE :item_description ';
9595       END IF;
9596 
9597       IF inv_mwb_globals.g_revision IS NOT NULL THEN
9598         query_str  := query_str || 'AND v.revision = :rev ';
9599         --ER(3338592) Changes
9600         IF group_str IS NOT NULL THEN
9601            group_str := group_str || ' , v.revision  ' ;
9602         END IF;
9603       END IF;
9604 
9605       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9606         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
9607       END IF;
9608 
9609       --Bug #3405473
9610       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9611          group_str := group_str || ' , v.cost_group_id, ccg.cost_group ' ;
9612       END IF;
9613 
9614       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9615         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
9616       END IF;
9617 
9618       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9619         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
9620       END IF;
9621 
9622       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
9623         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
9624       END IF;
9625 
9626       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
9627         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
9628       END IF;
9629 
9630       IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
9631         query_str  := query_str || 'AND v.organization_id = :org_id ';
9632       ELSE
9633         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
9634         query_str  := query_str || ' FROM org_access_view oav ' ;
9635         query_str  := query_str || ' WHERE oav.organization_id = v.organization_id ' ;
9636         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
9637         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
9638       END IF;
9639 
9640       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
9641       -- from serial table (MSN)
9642       if (l_default_status_id is not null) then
9643          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9644            query_str  := query_str || 'AND v.serial_status_id = :st_id ';
9645          END IF;
9646       else
9647          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9648            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
9649            query_str  := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
9650          END IF;
9651       end if;
9652 
9653       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
9654          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
9655       END IF;
9656 
9657       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
9658          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
9659       END IF;
9660 
9661       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9662          query_str := query_str || group_str || having_str || '  ' ;
9663       --Bug #3405473
9664       ELSE
9665         query_str := query_str || ' GROUP BY  v.cost_group_id, ccg.cost_group ' ;
9666       END IF;
9667       --End of ER(3338592) Changes
9668 
9669       query_str  := query_str || ') GROUP BY cost_group_id, cost_group ';  -- line was commented earlier, NSRIVAST
9670       query_str  := query_str || 'ORDER BY cost_group ';
9671 
9672    ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
9673           OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
9674       IF (inv_mwb_globals.g_status_id IS NULL) THEN
9675         table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
9676           IF is_grade_t = TRUE THEN                             -- NSRIVAST, INVCONV
9677              table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
9678           END IF;                                               -- NSRIVAST, INVCONV
9679       ELSE
9680         table_required  := ' mtl_onhand_new_lpn_v mol ';
9681       END IF;
9682 
9683       query_str  := 'SELECT DISTINCT mol.cost_group_id, ccg.cost_group ';
9684       query_str  := query_str || 'FROM cst_cost_groups ccg, ' || table_required;
9685 
9686       IF (inv_mwb_globals.g_lpn_from IS NOT NULL
9687           OR inv_mwb_globals.g_lpn_to IS NOT NULL) THEN
9688         query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
9689         query_str  := query_str || ' WHERE 1=1 ';
9690 
9691         IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9692           query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
9693         END IF;
9694 
9695   -- NSRIVAST, INVCONV, Start
9696       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
9697          query_str := query_str || ' AND grade_code = :grade_f ' ;
9698       END IF ;
9699       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
9700          query_str := query_str || ' AND grade_code = :grade_c ' ;
9701       END IF ;
9702    -- NSRIVAST, INVCONV, End
9703 
9704         IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9705           query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
9706         END IF;
9707 
9708         IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
9709           query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
9710         END IF;
9711 
9712         IF inv_mwb_globals.g_lpn_from IS NOT NULL
9713            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9714           IF inv_mwb_globals.g_lpn_from IS NOT NULL
9715              AND inv_mwb_globals.g_lpn_to IS NULL THEN
9716             query_str  := query_str || ' and license_plate_number >= :lpn_f ';
9717           ELSIF inv_mwb_globals.g_lpn_from IS NULL
9718                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9719             query_str  := query_str || ' and license_plate_number <= :lpn_t ';
9720           ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
9721                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9722              --bugfix#3646484
9723              IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)  THEN
9724              --User is querying for single LPN so converted the range query to equality query
9725                 query_str := query_str || 'and license_plate_number = :lpn_f ';
9726              ELSE
9727                query_str  := query_str || ' and license_plate_number >= :lpn_f ';
9728                query_str  := query_str || ' and license_plate_number <= :lpn_t ';
9729              END IF;
9730           END IF;
9731         END IF;
9732 
9733         query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
9734       END IF;
9735 
9736       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
9737          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9738         query_str  := query_str || 'WHERE 1=1 ';
9739       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
9740             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
9741         query_str  :=
9742                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
9743                      || ') msn ';
9744         query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
9745       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
9746             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
9747         query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
9748         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
9749  		--BUG 7556505
9750 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9751 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9752 	           END IF;
9753 		--BUG 7556505
9754       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
9755             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
9756         query_str  :=
9757               query_str
9758            || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
9759            || inv_mwb_globals.g_tree_lot_attr_query
9760            || ') mln '
9761            || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
9762            || inv_mwb_globals.g_tree_serial_attr_query
9763            || ') msn ';
9764         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
9765  		--BUG 7556505
9766 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9767 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
9768 	           END IF;
9769 		--BUG 7556505
9770         query_str  := query_str || 'AND msn.serial_num = serial_number ';
9771       END IF;
9772 
9773       query_str  := query_str || 'AND ccg.cost_group_id = mol.cost_group_id ';
9774 
9775        --ER(3338592) Changes (If the user gives the value for the Qty then only
9776        --Group by clause comes in to effect)
9777 
9778        IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9779           group_str := ' GROUP BY  mol.organization_id ';
9780        END IF;
9781 
9782       IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9783         query_str  := query_str || 'AND subinventory_code = :sub ';
9784         --ER(3338592) Changes
9785         IF group_str IS NOT NULL THEN
9786            group_str := group_str || ' , subinventory_code  ' ;
9787         END IF;
9788       END IF;
9789 
9790       IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9791         query_str  := query_str || 'AND locator_id = :loc_id ';
9792         --ER(3338592) Changes
9793         IF group_str IS NOT NULL THEN
9794            group_str := group_str || ' , locator_id  ' ;
9795         END IF;
9796       END IF;
9797 
9798       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
9799         query_str  := query_str || ' AND project_id = :pr_id ';
9800         --ER(3338592) Changes
9801         IF group_str IS NOT NULL THEN
9802            group_str := group_str || ' , project_id  ' ;
9803         END IF;
9804       END IF;
9805 
9806       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
9807         query_str  := query_str || ' AND task_id = :ta_id ';
9808         --ER(3338592) Changes
9809         IF group_str IS NOT NULL THEN
9810            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
9811         END IF;
9812       END IF;
9813 
9814       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9815          query_str  := query_str || 'AND inventory_item_id = :item_id ';
9816       END IF;
9817 
9818       --Bug # 3411938
9819       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9820          group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
9821       END IF;
9822 
9823       --ER(3338592) Changes
9824       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
9825          query_str := query_str || ' AND item_description LIKE :item_description ';
9826       END IF;
9827 
9828       IF inv_mwb_globals.g_revision IS NOT NULL THEN
9829         query_str  := query_str || 'AND revision = :rev ';
9830         --ER(3338592) Changes
9831         IF group_str IS NOT NULL THEN
9832           group_str := group_str || ' , revision  ' ;
9833         END IF;
9834       END IF;
9835 
9836       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9837         query_str  := query_str || 'AND mol.cost_group_id = :cg_id ';
9838       END IF;
9839 
9840       --Bug #3405473
9841       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9842          group_str := group_str ||' , mol.cost_group_id, ccg.cost_group ';
9843       END IF;
9844 
9845       IF inv_mwb_globals.g_lpn_from IS NOT NULL
9846          OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9847         query_str  := query_str || ' AND mol.outermost_lpn_id = x.outermost_lpn_id ';
9848       END IF;
9849 
9850       --ER(3338592) Changes
9851       IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
9852          IF group_str IS NOT NULL THEN
9853             group_str := group_str || ' , lpn ' ;
9854          END IF;
9855       END IF;
9856 
9857       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9858         query_str  := query_str || 'AND lot_number >= :lot_f ';
9859       END IF;
9860 
9861       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9862         query_str  := query_str || 'AND lot_number <= :lot_t ';
9863       END IF;
9864 
9865       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
9866         query_str  := query_str || 'AND serial_number >= :serial_f ';
9867       END IF;
9868 
9869       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
9870         query_str  := query_str || 'AND serial_number <= :serial_t ';
9871       END IF;
9872 
9873       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
9874         query_str  := query_str || ' AND unit_number=:un_id ';
9875       END IF;
9876 
9877       /*LPN Status Project */
9878       IF (l_default_status_id IS NOT NULL) THEN
9879          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9880            query_str  := query_str || 'AND onhand_status_id = :st_id ';
9881          END IF;
9882       ELSE
9883         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
9884           query_str  := query_str || 'AND (mol.subinventory_status_id = :st_id or mol.locator_status_id = :st_id or ';
9885           query_str  := query_str || 'mol.lot_status_id = :st_id or mol.serial_status_id = :st_id) ';
9886         END IF;
9887       END IF;
9888       /*End of fix for LPN Status Project */
9889 
9890       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
9891          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
9892          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
9893        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
9894          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
9895          query_str := query_str || ' AND  planning_organization_id in ';
9896          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
9897          query_str := query_str || '  where vendor_id = :vendor_id )';
9898       END IF;*/
9899 
9900       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
9901         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
9902         query_str  := query_str || ' AND planning_tp_type = 2 ';
9903       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
9904         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
9905         query_str  := query_str || ' AND planning_tp_type = 1 ';
9906       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
9907         query_str  := query_str || ' AND planning_tp_type = 1 ';
9908       END IF;
9909 
9910       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
9911         query_str  := query_str || ' AND owning_organization_id = :own_org ';
9912         query_str  := query_str || ' AND owning_tp_type = 2 ';
9913       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
9914         query_str  := query_str || ' AND owning_organization_id = :own_org ';
9915         query_str  := query_str || ' AND owning_tp_type = 1 ';
9916       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
9917         query_str  := query_str || ' AND owning_tp_type = 1 ';
9918       END IF;
9919 
9920       --Bug #3411938
9921       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9922          group_str := group_str || ' , planning_organization_id, planning_tp_type ';
9923          group_str := group_str || ' , owning_organization_id, owning_tp_type ';
9924          group_str := group_str || ' , item_lot_control, item_serial_control ';
9925       END IF;
9926 
9927       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
9928          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
9929       END IF;
9930 
9931       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
9932          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
9933       END IF;
9934 
9935       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
9936          query_str := query_str || group_str || having_str || ' ' ;
9937       --Bug #3405473
9938       ELSE
9939         query_str := query_str || ' GROUP BY  mol.cost_group_id, ccg.cost_group ' ;
9940       END IF;
9941 
9942       --query_str  := query_str || 'GROUP BY mol.cost_group_id, ccg.cost_group ';
9943       query_str  := query_str || 'ORDER BY ccg.cost_group ';
9944 
9945     END IF;
9946 
9947        -- Enable this during debugging
9948         inv_trx_util_pub.trace(query_str, 'Add- Cgs Material Workbench', 9);
9949         --trace1(query_str, 'add_cgs', 9);
9950 
9951  --RS
9952     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
9953 
9954     inv_mwb_globals.g_last_query := query_str;
9955 
9956     query_hdl       := DBMS_SQL.open_cursor;
9957     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
9958 
9959 
9960     IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
9961       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
9962     END IF;
9963 
9964     IF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
9965       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
9966     END IF;
9967 
9968     IF inv_mwb_globals.g_locator_id IS NOT NULL THEN
9969       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
9970     END IF;
9971 
9972     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
9973       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
9974     END IF;
9975 
9976     IF inv_mwb_globals.g_revision IS NOT NULL THEN
9977       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
9978     END IF;
9979 
9980     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
9981       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
9982     END IF;
9983 
9984     --BUG 7556505
9985     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
9986       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
9987     END IF;
9988     --BUG 7556505
9989 
9990     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
9991       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
9992     END IF;
9993 
9994     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
9995       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
9996     END IF;
9997 
9998     --bug 6633612
9999     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
10000       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
10001     END IF;
10002     --bug 6633612
10003 
10004  -- NSRIVAST, INVCONV, Start
10005     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10006       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
10007     END IF;
10008     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
10009       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
10010     END IF;
10011  -- NSRIVAST, INVCONV, End
10012 
10013     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
10014       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
10015     END IF;
10016 
10017     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
10018       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
10019     END IF;
10020 
10021       --bugfix#3646484
10022       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
10023       --User is querying for single LPN so converted the range query to equality query
10024       --So it is enought to bind the from lpn alone
10025          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
10026       ELSE
10027           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
10028             DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
10029           END IF;
10030 
10031           IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10032             DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
10033           END IF;
10034       END IF;
10035 
10036     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10037       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
10038     END IF;
10039 
10040     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
10041       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
10042     END IF;
10043 
10044     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
10045       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
10046     END IF;
10047 
10048     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
10049       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
10050     END IF;
10051 
10052     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
10053       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
10054     END IF;
10055 
10056     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
10057        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
10058      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
10059        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
10060     END IF;*/
10061     IF (inv_mwb_globals.g_owning_qry_mode = 4)
10062        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
10063       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
10064     END IF;
10065 
10066     IF (inv_mwb_globals.g_planning_query_mode = 4)
10067        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
10068       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
10069     END IF;
10070 
10071    --ER(3338592) Changes
10072    IF inv_mwb_globals.g_item_description IS NOT NULL THEN
10073       dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
10074    END IF;
10075 
10076    IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
10077       dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
10078    END IF;
10079 
10080    IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
10081       dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
10082    END IF;
10083    --End of ER(3338592) Changes
10084 
10085    --Bug #3411938
10086    IF inv_mwb_globals.g_organization_id IS NULL THEN
10087       IF inv_mwb_globals.g_responsibility_id  IS NOT NULL THEN
10088          dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
10089       END IF;
10090 
10091       IF inv_mwb_globals.g_resp_application_id  IS NOT NULL THEN
10092          dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
10093       END IF;
10094    END IF;
10095 
10096 
10097     DBMS_SQL.define_column(query_hdl, 1, cg_id);
10098     DBMS_SQL.define_column(query_hdl, 2, cg, 10);
10099     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
10100 
10101     LOOP
10102       -- fetch a row
10103       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
10104         -- fetch columns from the row
10105         DBMS_SQL.column_value(query_hdl, 1, cg_id);
10106         DBMS_SQL.column_value(query_hdl, 2, cg);
10107 
10108         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
10109           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
10110           x_node_tbl(i).DEPTH  := 1;
10111           x_node_tbl(i).label  := cg;
10112           x_node_tbl(i).icon   := 'inv_cgrp';
10113           x_node_tbl(i).VALUE  := TO_CHAR(cg_id);
10114           x_node_tbl(i).TYPE   := 'COST_GROUP';
10115           i                    := i + 1;
10116         END IF;
10117 
10118         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
10119         j  := j + 1;
10120       ELSE
10121         EXIT;
10122       END IF;
10123     END LOOP;
10124 
10125     DBMS_SQL.close_cursor(query_hdl); -- close cursor
10126     x_node_value    := j;
10127     x_tbl_index     := i;
10128   EXCEPTION
10129     WHEN NO_DATA_FOUND THEN
10130       NULL;
10131     WHEN OTHERS THEN
10132       RAISE;
10133   END add_cgs;
10134 
10135   PROCEDURE add_lpns(
10136 /*  , inv_mwb_globals.g_inserted_under_org  IN            VARCHAR2 DEFAULT 'N'*/
10137     x_node_value          IN OUT NOCOPY NUMBER
10138   , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
10139   , x_tbl_index           IN OUT NOCOPY NUMBER
10140   ) IS
10141     query_str        VARCHAR2(8000);
10142     query_hdl        NUMBER;
10143     rows_processed   NUMBER;
10144     lpn              wms_license_plate_numbers.license_plate_number%TYPE;
10145     lpn_id           wms_license_plate_numbers.lpn_id%TYPE;
10146     item_id          wms_license_plate_numbers.inventory_item_id%TYPE;
10147     item             mtl_system_items_kfv.concatenated_segments%TYPE;
10148     select_from_str  VARCHAR2(4000);
10149     where_str        VARCHAR2(4000);
10150     i                NUMBER                                                := x_tbl_index;
10151     j                NUMBER                                                := x_node_value;
10152     is_bind_required BOOLEAN                                               := TRUE;
10153     table_required   VARCHAR2(200);
10154     is_grade_t     BOOLEAN DEFAULT FALSE; -- NSRIVAST, INVCONV
10155     receipt_source_code VARCHAR2(30);
10156     lpn_from_id     wms_license_plate_numbers.lpn_id%TYPE;
10157     lpn_to_id       wms_license_plate_numbers.lpn_id%TYPE;
10158 
10159       l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_LPNS';
10160 
10161     l_default_status_id NUMBER; -- LPN Status Project
10162 
10163    BEGIN
10164       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
10165       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered'||inv_mwb_globals.g_inserted_under_org);
10166 
10167       /* LPN Status Project */
10168       IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
10169          IF (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) THEN
10170            l_default_status_id :=  inv_cache.org_rec.default_status_id;
10171          END IF;
10172       ELSIF (inv_mwb_globals.g_tree_organization_id IS NOT NULL) THEN
10173          IF (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) THEN
10174            l_default_status_id :=  inv_cache.org_rec.default_status_id;
10175          END IF;
10176       END IF;
10177 
10178   IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN -- If add_lpn called from node_expanded of document number.
10179 
10180      IF inv_mwb_globals.g_tree_doc_type_id = 1 THEN
10181        return;
10182      END IF;
10183 
10184       select_from_str :=
10185          ' SELECT DISTINCT wlpn.license_plate_number
10186                 , wlpn.lpn_id
10187              FROM rcv_shipment_lines rsl
10188                 , mtl_system_items_kfv msik
10189                 , wms_license_plate_numbers wlpn ';
10190 
10191       where_str :=
10192          ' WHERE 1 = 1
10193              AND rsl.item_id = msik.inventory_item_id
10194              AND msik.organization_id = rsl.to_organization_id
10195              AND wlpn.lpn_id = rsl.asn_lpn_id
10196              AND rsl.to_organization_id = :to_org_id
10197              AND rsl.shipment_header_id = :shipment_header_id ';
10198 
10199 
10200       IF inv_mwb_globals.g_serial_from IS NOT NULL
10201       OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
10202          select_from_str := select_from_str || ' , rcv_serials_supply rss ';
10203          where_str := where_str || ' AND rss.shipment_line_id = rsl.shipment_line_id  ';
10204       END IF;
10205 
10206       IF (inv_mwb_globals.g_lot_from is NOT NULL
10207       OR inv_mwb_globals.g_lot_to is NOT NULL)
10208       AND (inv_mwb_globals.g_serial_from IS NULL
10209       OR inv_mwb_globals.g_serial_to IS NULL) THEN
10210          select_from_str := select_from_str || ' , rcv_lots_supply rls ';
10211          where_str := where_str || ' AND rls.shipment_line_id = rsl.shipment_line_id  ';
10212       END IF;
10213 
10214       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10215          where_str := where_str || ' AND msik.inventory_item_id  = :item_id ';
10216       END IF;
10217 
10218       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
10219          where_str := where_str || ' AND rsl.asn_lpn_id  = :tree_lpn_id ';
10220       END IF;
10221 
10222       IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
10223       inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
10224       inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
10225          where_str := where_str ||' AND rsl.asn_lpn_id = :inb_lpn_from_id';
10226       END IF;
10227 
10228       IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
10229       inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
10230          where_str := where_str ||' AND wlpn.license_plate_number >= :inb_lpn_from';
10231       END IF;
10232 
10233       IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
10234       inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
10235          where_str := where_str ||' AND wlpn.license_plate_number <= :inb_lpn_to';
10236       END IF;
10237 
10238       IF inv_mwb_globals.g_lot_from IS NOT NULL
10239       AND inv_mwb_globals.g_lot_to IS NOT NULL
10240       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
10241          where_str := where_str || ' AND rls.lot_num  = :lot_from ';
10242       END IF;
10243 
10244       IF inv_mwb_globals.g_lot_from IS NOT NULL
10245       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
10246          where_str := where_str || ' AND rls.lot_num  >= :lot_from ';
10247       END IF;
10248 
10249       IF inv_mwb_globals.g_lot_to IS NOT NULL
10250       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
10251          where_str := where_str || ' AND rls.lot_num  >= :lot_to ';
10252       END IF;
10253 
10254       IF inv_mwb_globals.g_serial_from IS NOT NULL
10255       AND inv_mwb_globals.g_serial_to IS NOT NULL
10256       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
10257          where_str := where_str || ' AND rss.serial_num  = :serial_from ';
10258       END IF;
10259 
10260       IF inv_mwb_globals.g_serial_from IS NOT NULL
10261       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
10262          where_str := where_str || ' AND rss.serial_num  >= :serial_from ';
10263       END IF;
10264 
10265       IF inv_mwb_globals.g_serial_to IS NOT NULL
10266       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
10267          where_str := where_str || ' AND rss.serial_num  <= :serial_to ';
10268       END IF;
10269 
10270       IF inv_mwb_globals.g_revision IS NOT NULL THEN
10271          where_str := where_str || ' AND rsl.item_revision  = :item_revision ';
10272       END IF;
10273 
10274       IF inv_mwb_globals.g_inventory_item_id IS NULL
10275       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
10276          where_str := where_str || ' AND msik.description like :item_description ';
10277       END IF;
10278 
10279 
10280       query_str := select_from_str || where_str;
10281 
10282       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
10283       inv_mwb_globals.g_last_query := query_str;
10284 
10285       query_hdl  := DBMS_SQL.open_cursor;
10286       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
10287 
10288       DBMS_SQL.bind_variable(query_hdl, 'to_org_id', NVL(inv_mwb_globals.g_organization_id
10289                                                        , inv_mwb_globals.g_tree_organization_id));
10290       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
10291 
10292       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10293          DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
10294       END IF;
10295 
10296       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
10297          DBMS_SQL.bind_variable(query_hdl, 'tree_lpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
10298       END IF;
10299 
10300       IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
10301       inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
10302       inv_mwb_globals.g_lpn_from_id = inv_mwb_globals.g_lpn_to_id) THEN
10303          DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
10304       END IF;
10305 
10306       IF (inv_mwb_globals.g_lpn_from_id IS NOT NULL AND
10307       inv_mwb_globals.g_lpn_from_id <> NVL(inv_mwb_globals.g_lpn_to_id, -1) ) THEN
10308          DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from', inv_mwb_globals.g_lpn_from);
10309       END IF;
10310 
10311       IF (inv_mwb_globals.g_lpn_to_id IS NOT NULL AND
10312       inv_mwb_globals.g_lpn_to_id <> NVL(inv_mwb_globals.g_lpn_from_id, -1) ) THEN
10313          DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to', inv_mwb_globals.g_lpn_to);
10314       END IF;
10315 
10316       IF inv_mwb_globals.g_lot_from IS NOT NULL
10317       AND inv_mwb_globals.g_lot_to IS NOT NULL
10318       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
10319          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
10320       END IF;
10321 
10322       IF inv_mwb_globals.g_lot_from IS NOT NULL
10323       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
10324          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
10325       END IF;
10326 
10327       IF inv_mwb_globals.g_lot_to IS NOT NULL
10328       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
10329          DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
10330       END IF;
10331 
10332       IF inv_mwb_globals.g_serial_from IS NOT NULL
10333       AND inv_mwb_globals.g_serial_to IS NOT NULL
10334       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
10335          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
10336       END IF;
10337 
10338       IF inv_mwb_globals.g_serial_from IS NOT NULL
10339       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
10340          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
10341       END IF;
10342 
10343       IF inv_mwb_globals.g_serial_to IS NOT NULL
10344       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
10345          DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
10346       END IF;
10347 
10348       IF inv_mwb_globals.g_revision IS NOT NULL THEN
10349          DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_revision);
10350       END IF;
10351 
10352       IF inv_mwb_globals.g_inventory_item_id IS NULL
10353       AND inv_mwb_globals.g_item_description IS NOT NULL THEN
10354          DBMS_SQL.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
10355       END IF;
10356 
10357 
10358     DBMS_SQL.define_column(query_hdl, 1, lpn, 30);
10359     DBMS_SQL.define_column(query_hdl, 2, lpn_id);
10360 
10361     BEGIN
10362       rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
10363     EXCEPTION
10364     WHEN NO_DATA_FOUND THEN
10365       NULL;
10366       RETURN;
10367     END;
10368 
10369     LOOP
10370       -- fetch a row
10371       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
10372         -- fetch columns from the row
10373         DBMS_SQL.column_value(query_hdl, 1, lpn);
10374         DBMS_SQL.column_value(query_hdl, 2, lpn_id);
10375 
10376 	IF (inv_mwb_globals.g_tree_node_type = 'LPN'
10377 	    and inv_mwb_globals.g_tree_node_value = lpn_id) then
10378 	   return;
10379 	END IF;
10380 
10381         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
10382           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
10383           x_node_tbl(i).DEPTH  := 1;
10384           x_node_tbl(i).label  := lpn;
10385           x_node_tbl(i).icon   := 'inv_licn';
10386           x_node_tbl(i).VALUE  := TO_CHAR(lpn_id);
10387           x_node_tbl(i).TYPE   := 'LPN';
10388           i                    := i + 1;
10389         END IF;
10390 
10391         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
10392         j  := j + 1;
10393       ELSE
10394         EXIT;
10395       END IF;
10396     END LOOP;
10397 
10398     DBMS_SQL.close_cursor(query_hdl); -- close cursor
10399     x_node_value    := j;
10400     x_tbl_index     := i;
10401 
10402     RETURN;
10403   END IF;
10404 
10405 
10406 
10407 
10408 
10409 
10410   -- NSRIVAST, INVCONV, Start
10411      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
10412          is_grade_t     := TRUE ;
10413      END IF ;
10414 -- NSRIVAST, INVCONV, End
10415 
10416     -- If attributes relating to contents of an LPN are not specified then
10417     -- display all the LPNs in that location with the appropriate from
10418     -- and to LPN criteria
10419     IF inv_mwb_globals.g_inventory_item_id IS NULL
10420        AND inv_mwb_globals.g_revision IS NULL
10421        AND inv_mwb_globals.g_parent_lot IS NULL		--BUG 7556505
10422        AND inv_mwb_globals.g_lot_from IS NULL
10423        AND inv_mwb_globals.g_lot_to IS NULL
10424        AND inv_mwb_globals.g_serial_from IS NULL
10425        AND inv_mwb_globals.g_serial_to IS NULL
10426        AND inv_mwb_globals.g_cost_group_id IS NULL
10427        AND inv_mwb_globals.g_status_id IS NULL
10428        AND inv_mwb_globals.g_tree_lot_attr_query IS NULL
10429        AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
10430        AND inv_mwb_globals.g_unit_number IS NULL
10431        AND inv_mwb_globals.g_project_id IS NULL
10432        AND inv_mwb_globals.g_task_id IS NULL
10433        AND inv_mwb_globals.g_planning_org IS NULL
10434        AND inv_mwb_globals.g_owning_org IS NULL
10435        AND(inv_mwb_globals.g_planning_query_mode IS NULL
10436            OR inv_mwb_globals.g_planning_query_mode = 1)
10437        AND(inv_mwb_globals.g_owning_qry_mode IS NULL
10438            OR inv_mwb_globals.g_owning_qry_mode = 1)
10439        --ER(3338592) Changes
10440        AND inv_mwb_globals.g_item_description   IS NULL THEN
10441        --ER(3338592) Changes
10442 
10443       IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10444         query_str  := 'SELECT license_plate_number lpn, lpn_id, inventory_item_id ';
10445         query_str  := query_str || ' from wms_license_plate_numbers wln where lpn_id in ';
10446         query_str  := query_str || ' (select outermost_lpn_id ';
10447         query_str  := query_str || ' FROM wms_license_plate_numbers mol WHERE 1=1 ';
10448 
10449         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
10450           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10451           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10452             query_str  := query_str || ' AND mol.subinventory_code is null AND mol.locator_id is null ';
10453           END IF;
10454           --Bug#3191526
10455           query_str  := query_str || ' AND lpn_context = 3 ';
10456         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
10457           query_str  := query_str || ' AND (mol.lpn_context=1  OR mol.lpn_context=9 OR mol.lpn_context=11 ) ';
10458         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
10459           query_str  := query_str || 'AND mol.lpn_context = 1 ';
10460         ELSIF inv_mwb_globals.g_prepacked <> 1
10461               AND inv_mwb_globals.g_prepacked <> 999 THEN
10462           query_str  := query_str || 'AND mol.lpn_context = :prepacked ';
10463         END IF;
10464 
10465         IF inv_mwb_globals.g_locator_controlled = 2 THEN
10466           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10467           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10468             --don't add the below locator id not null check
10469             NULL;
10470           ELSE
10471             query_str  := query_str || 'AND mol.locator_id IS NOT NULL ';
10472           END IF;
10473         ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
10474           query_str  := query_str || 'AND mol.locator_id IS NULL ';
10475         END IF;
10476 
10477 
10478   -- NSRIVAST, INVCONV, Start
10479         IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10480           query_str := query_str || ' AND grade_code = :grade_f ' ;
10481         END IF ;
10482         IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
10483           query_str := query_str || ' AND grade_code = :grade_c ' ;
10484         END IF ;
10485    -- NSRIVAST, INVCONV, End
10486 
10487         IF inv_mwb_globals.g_locator_id IS NOT NULL
10488         OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
10489           query_str  := query_str || 'AND mol.locator_id = :loc_id ';
10490         END IF;
10491 
10492         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
10493         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10494           query_str  := query_str || 'AND mol.subinventory_code = :sub ';
10495         END IF;
10496 
10497         IF inv_mwb_globals.g_organization_id IS NOT NULL
10498         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10499           query_str  := query_str || 'AND mol.organization_id = :org_id ';
10500         END IF;
10501 
10502         IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
10503           --bugfix#3646484 help CBO to pick the index on parent_lpn_id
10504           query_str := query_str || 'and mol.parent_lpn_id is not null ';
10505           query_str  := query_str || 'and mol.parent_lpn_id = :plpn_id ';
10506         END IF;
10507 
10508         IF inv_mwb_globals.g_lpn_from IS NOT NULL
10509            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10510              -- AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10511           IF inv_mwb_globals.g_lpn_from IS NOT NULL
10512              AND inv_mwb_globals.g_lpn_to IS NULL THEN
10513             query_str  := query_str || 'and mol.license_plate_number >= :lpn_f ';
10514           ELSIF inv_mwb_globals.g_lpn_from IS NULL
10515                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10516             query_str  := query_str || 'and mol.license_plate_number <= :lpn_t ';
10517           ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
10518                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10519               --bugfix#3646484
10520               IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)  THEN
10521               --User is querying for single LPN so converted the range query to equality query
10522                  query_str := query_str || 'and mol.license_plate_number = :lpn_f ';
10523               ELSE
10524                query_str  := query_str || 'and mol.license_plate_number >= :lpn_f ';
10525                query_str  := query_str || 'and mol.license_plate_number <= :lpn_t ';
10526               END IF;
10527           END IF;
10528         END IF;
10529 
10530         query_str  := query_str || ') GROUP BY wln.license_plate_number, wln.lpn_id, wln.inventory_item_id ';
10531         query_str  := query_str || 'ORDER BY wln.license_plate_number ';
10532       ELSE -- PARENT LPN ID IS NOT NULL -- ELSE FOR IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10533         query_str  := 'SELECT license_plate_number lpn, lpn_id, inventory_item_id ';
10534         query_str  := query_str || 'from wms_license_plate_numbers mol where 1=1 ';
10535 
10536         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
10537           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10538           IF inv_mwb_globals.g_inserted_under_org = 'Y'  OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10539             query_str  := query_str || ' AND mol.subinventory_code is null AND mol.locator_id is null ';
10540           END IF;
10541           --Bug#3191526
10542           query_str  := query_str || ' AND lpn_context = 3 ';
10543         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
10544           query_str  := query_str || ' AND (mol.lpn_context=1  OR mol.lpn_context=9 OR mol.lpn_context=11 ) ';
10545         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
10546           query_str  := query_str || ' AND mol.lpn_context = 1 ';
10547         ELSIF inv_mwb_globals.g_prepacked <> 1
10548               AND inv_mwb_globals.g_prepacked <> 999 THEN
10549           query_str  := query_str || ' AND mol.lpn_context = :prepacked ';
10550         END IF;
10551 
10552         IF inv_mwb_globals.g_locator_controlled = 2 THEN
10553           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10554           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10555             --don't add the below locator id not null check
10556             NULL;
10557           ELSE
10558             query_str  := query_str || 'AND mol.locator_id IS NOT NULL ';
10559           END IF;
10560         ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
10561           query_str  := query_str || 'AND mol.locator_id IS NULL ';
10562         END IF;
10563 
10564         IF inv_mwb_globals.g_locator_id IS NOT NULL
10565         OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
10566           query_str  := query_str || 'AND mol.locator_id = :loc_id ';
10567         END IF;
10568 
10569   -- NSRIVAST, INVCONV, Start
10570         IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10571           query_str := query_str || ' AND grade_code = :grade_f ' ;
10572         END IF ;
10573         IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
10574           query_str := query_str || ' AND grade_code = :grade_c ' ;
10575         END IF ;
10576    -- NSRIVAST, INVCONV, End
10577 
10578         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
10579         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10580           query_str  := query_str || 'AND mol.subinventory_code = :sub ';
10581         END IF;
10582 
10583         IF inv_mwb_globals.g_organization_id IS NOT NULL
10584         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10585           query_str  := query_str || 'AND mol.organization_id = :org_id ';
10586         END IF;
10587 
10588         IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
10589           --bugfix#3646484 help CBO to pick the index on parent_lpn_id
10590           query_str := query_str || 'and mol.parent_lpn_id is not null ';
10591           query_str  := query_str || 'and mol.parent_lpn_id = :plpn_id ';
10592         END IF;
10593 
10594         inv_mwb_globals.print_msg(g_pkg_name, l_procedure_name, 'parent lpn id : ' ||inv_mwb_globals.g_tree_parent_lpn_id);
10595 
10596         IF (inv_mwb_globals.g_lpn_from IS NOT NULL
10597            OR inv_mwb_globals.g_lpn_to IS NOT NULL)
10598               AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10599           IF inv_mwb_globals.g_lpn_from IS NOT NULL
10600              AND inv_mwb_globals.g_lpn_to IS NULL THEN
10601             query_str  := query_str || ' and mol.license_plate_number >= :lpn_f ';
10602           ELSIF inv_mwb_globals.g_lpn_from IS NULL
10603                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10604             query_str  := query_str || ' and mol.license_plate_number <= :lpn_t ';
10605           ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
10606                 AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10607              --bugfix#3646484
10608              IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)  THEN
10609              --User is querying for single LPN so converted the range query to equality query
10610                 query_str := query_str || 'and mol.license_plate_number = :lpn_f ';
10611              ELSE
10612                query_str  := query_str || ' and mol.license_plate_number >= :lpn_f ';
10613                query_str  := query_str || 'and mol.license_plate_number <= :lpn_t ';
10614              END IF;
10615           END IF;
10616         END IF;
10617 
10618         query_str  := query_str || ' GROUP BY mol.license_plate_number, mol.lpn_id, mol.inventory_item_id ';
10619         query_str  := query_str || ' ORDER BY mol.license_plate_number ';
10620       END IF; -- FOR  IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10621     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.
10622       IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10623         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
10624           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
10625         ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
10626           IF (inv_mwb_globals.g_prepacked <> 1) AND
10627              (inv_mwb_globals.g_prepacked <> 9) AND
10628              (inv_mwb_globals.g_prepacked <> 11) THEN
10629             table_required  := ' mtl_onhand_lpn_mwb_v mol ';
10630                IF is_grade_t = TRUE THEN                          -- NSRIVAST, INVCONV
10631                    table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
10632                END IF;                                            -- NSRIVAST, INVCONV
10633           ELSE
10634             table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
10635             IF is_grade_t = TRUE THEN                          -- NSRIVAST, INVCONV
10636                table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
10637             END IF;                                            -- NSRIVAST, INVCONV
10638           END IF;
10639         ELSE
10640           IF (inv_mwb_globals.g_prepacked <> 1) AND
10641              (inv_mwb_globals.g_prepacked <> 9) AND
10642              (inv_mwb_globals.g_prepacked <> 11) THEN
10643             table_required  := ' mtl_onhand_lpn_v mol ';
10644                IF is_grade_t = TRUE THEN                          -- NSRIVAST, INVCONV
10645                    table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
10646                END IF;                                            -- NSRIVAST, INVCONV
10647           ELSE
10648             table_required  := ' mtl_onhand_new_lpn_v mol ';
10649              IF is_grade_t = TRUE THEN                          -- NSRIVAST, INVCONV
10650                 table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
10651              END IF;                                            -- NSRIVAST, INVCONV
10652           END IF;
10653         END IF;
10654 
10655         query_str  := 'SELECT license_plate_number lpn, lpn_id, inventory_item_id ';
10656         query_str  := query_str || ' from wms_license_plate_numbers where lpn_id in ';
10657         query_str  := query_str || ' (select MOL.outermost_lpn_id ';
10658         query_str  := query_str || ' FROM ' || table_required;
10659 
10660         IF inv_mwb_globals.g_lpn_from IS NOT NULL
10661            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10662           query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
10663           query_str  := query_str || ' WHERE 1=1 ';
10664 
10665           IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
10666             --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10667             IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10668               query_str  := query_str || ' AND wlpn.subinventory_code is null AND wlpn.locator_id is null ';
10669             END IF;
10670             --Bug#3191526
10671             query_str  := query_str || ' AND lpn_context = 3 ';
10672           ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
10673             query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 )';
10674           ELSIF inv_mwb_globals.g_prepacked = 1 THEN
10675             query_str  := query_str || 'AND lpn_context = 1 ';
10676           ELSIF inv_mwb_globals.g_prepacked <> 1
10677                 AND inv_mwb_globals.g_prepacked <> 999 THEN
10678             query_str  := query_str || 'AND lpn_context = :prepacked ';
10679           END IF;
10680 
10681           IF inv_mwb_globals.g_locator_controlled = 2 THEN
10682             --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10683             IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10684               --don't add the below locator id not null check
10685               NULL;
10686             ELSE
10687               query_str  := query_str || 'AND wlpn.locator_id IS NOT NULL ';
10688             END IF;
10689           ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
10690             query_str  := query_str || 'AND wlpn.locator_id IS NULL ';
10691           END IF;
10692 
10693         IF inv_mwb_globals.g_locator_id IS NOT NULL
10694         OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
10695             query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
10696           END IF;
10697 
10698   -- NSRIVAST, INVCONV, Start
10699         IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10700           query_str := query_str || ' AND grade_code = :grade_f ' ;
10701         END IF ;
10702         IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
10703           query_str := query_str || ' AND grade_code = :grade_c ' ;
10704         END IF ;
10705    -- NSRIVAST, INVCONV, End
10706 
10707         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
10708         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10709             query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
10710         END IF;
10711 
10712         IF inv_mwb_globals.g_organization_id IS NOT NULL
10713         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10714             query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
10715           END IF;
10716 
10717           IF inv_mwb_globals.g_lpn_from IS NOT NULL
10718              OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10719             IF inv_mwb_globals.g_lpn_from IS NOT NULL
10720                AND inv_mwb_globals.g_lpn_to IS NULL THEN
10721               query_str  := query_str || ' and license_plate_number >= :lpn_f ';
10722             ELSIF inv_mwb_globals.g_lpn_from IS NULL
10723                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10724               query_str  := query_str || ' and license_plate_number <= :lpn_t ';
10725             ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
10726                   AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10727                 --bugfix#3646484
10728                 IF (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to)  THEN
10729                 --User is querying for single LPN so converted the range query to equality query
10730                    query_str := query_str || 'and license_plate_number = :lpn_f ';
10731                 ELSE
10732                  query_str  := query_str || ' and license_plate_number >= :lpn_f ';
10733                  query_str  := query_str || ' and license_plate_number <= :lpn_t ';
10734                 END IF;
10735             END IF;
10736           END IF;
10737 
10738           query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
10739         END IF;
10740 
10741         IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
10742            AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
10743           query_str  := query_str || 'WHERE 1=1 ';
10744         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
10745               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
10746           query_str  :=
10747                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
10748                      || ') msn ';
10749           query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
10750         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
10751               AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
10752           query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
10753           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
10754  		--BUG 7556505
10755 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10756 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10757 	           END IF;
10758 		--BUG 7556505
10759         ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
10760               AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
10761           query_str  :=
10762                 query_str
10763              || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
10764              || inv_mwb_globals.g_tree_lot_attr_query
10765              || ') mln '
10766              || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
10767              || inv_mwb_globals.g_tree_serial_attr_query
10768              || ') msn ';
10769           query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
10770  		--BUG 7556505
10771 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
10772 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
10773 	           END IF;
10774 		--BUG 7556505
10775           query_str  := query_str || 'AND msn.serial_num = serial_number ';
10776         END IF;
10777 
10778         IF inv_mwb_globals.g_project_id IS NOT NULL THEN
10779           query_str  := query_str || ' AND project_id = :pr_id ';
10780         END IF;
10781 
10782         IF inv_mwb_globals.g_task_id IS NOT NULL THEN
10783           query_str  := query_str || ' AND task_id = :ta_id ';
10784         END IF;
10785 
10786         IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
10787           query_str  := query_str || ' AND unit_number=:un_id ';
10788         END IF;
10789 
10790         /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
10791            query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
10792            query_str := query_str || ' AND planning_organization_id = :site_id ' ;
10793          ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
10794            query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
10795            query_str := query_str || ' AND  planning_organization_id in ';
10796            query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
10797            query_str := query_str || '  where vendor_id = :vendor_id )';
10798         END IF;*/
10799         IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
10800           query_str  := query_str || ' AND owning_organization_id = :own_org ';
10801           query_str  := query_str || ' AND owning_tp_type = 2 ';
10802         ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
10803           query_str  := query_str || ' AND owning_organization_id = :own_org ';
10804           query_str  := query_str || ' AND owning_tp_type = 1 ';
10805         ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
10806           query_str  := query_str || ' AND owning_tp_type = 1 ';
10807         END IF;
10808 
10809         IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
10810           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
10811           query_str  := query_str || ' AND planning_tp_type = 2 ';
10812         ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
10813           query_str  := query_str || ' AND planning_organization_id = :plan_org ';
10814           query_str  := query_str || ' AND planning_tp_type = 1 ';
10815         ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
10816           query_str  := query_str || ' AND planning_tp_type = 1 ';
10817         END IF;
10818 
10819         IF inv_mwb_globals.g_locator_id IS NOT NULL
10820         OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
10821           query_str  := query_str || 'AND mol.locator_id = :loc_id ';
10822         END IF;
10823 
10824         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
10825         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10826             query_str  := query_str || 'AND mol.subinventory_code = :sub ';
10827         END IF;
10828 
10829         IF inv_mwb_globals.g_organization_id IS NOT NULL
10830         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10831           query_str  := query_str || 'AND mol.organization_id = :org_id ';
10832         END IF;
10833 
10834         /*LPN Status Project */
10835 	IF (l_default_status_id is not null) THEN
10836           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10837  	    query_str  := query_str || 'AND onhand_status_id = :st_id ';
10838 	  END IF;
10839 	ELSE
10840           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
10841             query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
10842             query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
10843           END IF;
10844 	END IF;
10845 	/*End of fix for LPN Status Project */
10846 
10847         IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
10848           query_str  := query_str || 'AND lot_number >= :lot_f ';
10849         END IF;
10850 
10851         IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
10852           query_str  := query_str || 'AND lot_number <= :lot_t ';
10853         END IF;
10854 
10855         -- NSRIVAST, INVCONV, Start
10856         IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
10857                 query_str := query_str || ' AND grade_code = :grade_f ' ;
10858         END IF ;
10859         IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
10860                   query_str := query_str || ' AND grade_code = :grade_c ' ;
10861         END IF ;
10862         -- NSRIVAST, INVCONV, End
10863 
10864         IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
10865           query_str  := query_str || 'AND cost_group_id = :cg_id ';
10866         END IF;
10867 
10868         IF inv_mwb_globals.g_revision IS NOT NULL THEN
10869           query_str  := query_str || 'AND revision = :rev ';
10870         END IF;
10871 
10872         IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
10873           query_str  := query_str || 'AND serial_number >= :serial_f ';
10874         END IF;
10875 
10876         IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
10877           query_str  := query_str || 'AND serial_number <= :serial_t ';
10878         END IF;
10879 
10880         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
10881           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10882           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10883                 query_str  := query_str || ' AND subinventory_code is null AND locator_id is null ';
10884           END IF;
10885           --Bug#3191526
10886           query_str  := query_str || ' AND lpn_context = 3 ';
10887         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
10888           query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 ) ';
10889         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
10890           query_str  := query_str || 'AND lpn_context = 1 ';
10891         ELSIF inv_mwb_globals.g_prepacked <> 1
10892               AND inv_mwb_globals.g_prepacked <> 999 THEN
10893           query_str  := query_str || 'AND lpn_context = :prepacked ';
10894         END IF;
10895 
10896         IF inv_mwb_globals.g_lpn_from IS NOT NULL
10897            OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
10898           query_str  := query_str || 'AND MOL.outermost_lpn_id= X.outermost_lpn_id ';
10899         END IF;
10900 
10901         IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
10902           query_str  := query_str || 'AND mol.inventory_item_id = :item_id ';
10903         END IF;
10904 
10905         IF inv_mwb_globals.g_locator_controlled = 2 THEN
10906           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10907           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10908             --don't add the below locator id not null check
10909             NULL;
10910           ELSE
10911             query_str  := query_str || 'AND locator_id IS NOT NULL ';
10912           END IF;
10913         ELSIF inv_mwb_globals.g_locator_controlled = 1 THEN
10914           query_str  := query_str || 'AND locator_id IS NULL ';
10915         END IF;
10916 
10917         IF inv_mwb_globals.g_locator_id IS NOT NULL
10918         OR inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
10919           query_str  := query_str || 'AND locator_id = :loc_id ';
10920         END IF;
10921 
10922         --ER(3338592) Changes
10923         IF inv_mwb_globals.g_item_description IS NOT NULL THEN
10924            query_str := query_str || ' AND item_description LIKE :item_description ';
10925         END IF;
10926         --ER(3338592) Changes
10927 
10928         IF inv_mwb_globals.g_subinventory_code IS NOT NULL
10929         OR inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
10930           query_str  := query_str || 'AND subinventory_code = :sub ';
10931         END IF;
10932 
10933         IF inv_mwb_globals.g_organization_id IS NOT NULL
10934         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10935           query_str  := query_str || 'AND organization_id = :org_id ';
10936         END IF;
10937 
10938         IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
10939           query_str  := query_str || ') GROUP BY license_plate_number, lpn_id, inventory_item_id ';
10940           query_str  := query_str || 'ORDER BY license_plate_number ';
10941         ELSE
10942           query_str  := query_str || 'GROUP BY lpn, MOL.lpn_id, X.inventory_item_id ';
10943           query_str  := query_str || 'ORDER BY lpn ';
10944         END IF;
10945       ELSE   -- comes here if query criteria contains item serial and parent lpn is there.
10946            -- connect by is delibarately removed from here as it is affecting performance.
10947            -- For details see Material workbech performance hld doc
10948         query_str         := query_str || ' select license_plate_number lpn, lpn_id, inventory_item_id from wms_license_plate_numbers ';
10949         query_str         := query_str || ' WHERE parent_lpn_id = :plpn_id ';
10950 
10951         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
10952           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
10953           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
10954              query_str  := query_str || ' AND subinventory_code is null AND locator_id is null ';
10955           END IF;
10956           --Bug#3191526
10957           query_str  := query_str || ' AND lpn_context = 3 ';
10958         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
10959           query_str  := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 ) ';
10960         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
10961           query_str  := query_str || 'AND lpn_context = 1 ';
10962         ELSIF inv_mwb_globals.g_prepacked <> 1
10963               AND inv_mwb_globals.g_prepacked <> 999 THEN
10964           query_str  := query_str || 'AND lpn_context = :prepacked ';
10965         END IF;
10966 
10967         inv_trx_util_pub.trace(query_str, 'Material Workbench :- ADD LPNs', 9);
10968         --trace1('QUERY STR ' || query_str, 'add_lpns', 9);
10969         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
10970         inv_mwb_globals.g_last_query := query_str;
10971         query_hdl         := DBMS_SQL.open_cursor;
10972         DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
10973         DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
10974 
10975         IF inv_mwb_globals.g_prepacked <> 1
10976            AND inv_mwb_globals.g_prepacked <> 999
10977            AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
10978           DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
10979         END IF;
10980 
10981         is_bind_required  := FALSE;
10982       END IF;
10983     END IF;
10984 
10985     IF (is_bind_required = TRUE) THEN
10986             -- Enable this during debugging
10987 --        inv_trx_util_pub.trace(query_str, 'ADD LPNs Material Workbench :', 9);
10988              --trace1(query_str, 'add_lpns', 9);
10989 
10990       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
10991       inv_mwb_globals.g_last_query := query_str;
10992       query_hdl  := DBMS_SQL.open_cursor;
10993       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
10994 
10995 
10996       IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
10997         DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
10998       ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
10999         DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
11000       END IF;
11001 
11002       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
11003         DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
11004       ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
11005         DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
11006       END IF;
11007 
11008       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
11009         DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
11010       ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
11011         DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
11012       END IF;
11013 
11014       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11015         DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
11016       END IF;
11017 
11018       IF inv_mwb_globals.g_revision IS NOT NULL THEN
11019         DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
11020       END IF;
11021 
11022       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11023         DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
11024       END IF;
11025 
11026     --BUG 7556505
11027     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
11028       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
11029     END IF;
11030     --BUG 7556505
11031 
11032       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11033         DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
11034       END IF;
11035 
11036       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11037         DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
11038       END IF;
11039 
11040    -- NSRIVAST, INVCONV, Start
11041       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
11042         DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
11043       END IF;
11044       IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
11045         DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
11046       END IF;
11047   -- NSRIVAST, INVCONV, End
11048 
11049       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11050         DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
11051       END IF;
11052 
11053       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11054         DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
11055       END IF;
11056 
11057       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
11058         DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
11059       END IF;
11060 
11061       --bugfix#3646484
11062       IF ((inv_mwb_globals.g_lpn_from IS NOT NULL) AND (inv_mwb_globals.g_lpn_to IS NOT NULL)
11063            AND (inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to))
11064            AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
11065       --User is querying for single LPN so converted the range query to equality query
11066       --So it is enought to bind the from lpn alone
11067          dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
11068       ELSE
11069          IF inv_mwb_globals.g_lpn_from IS NOT NULL
11070          AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
11071            DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
11072          END IF;
11073 
11074          IF inv_mwb_globals.g_lpn_to IS NOT NULL
11075          AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
11076            DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
11077          END IF;
11078       END IF;
11079 
11080       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
11081         DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
11082       END IF;
11083 
11084       IF inv_mwb_globals.g_prepacked <> 1
11085          AND inv_mwb_globals.g_prepacked <> 999
11086          AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
11087         DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
11088       END IF;
11089 
11090       IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
11091         DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
11092       END IF;
11093 
11094       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
11095         DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
11096       END IF;
11097 
11098       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
11099         DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
11100       END IF;
11101 
11102       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
11103         DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
11104       END IF;
11105 
11106       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
11107          dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
11108        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
11109          dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
11110       END IF;*/
11111       IF (inv_mwb_globals.g_owning_qry_mode = 4)
11112          OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
11113         DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
11114       END IF;
11115 
11116       IF (inv_mwb_globals.g_planning_query_mode = 4)
11117          OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
11118         DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
11119       END IF;
11120 
11121       --ER(3338592) Changes
11122       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
11123          dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
11124       END IF;
11125 
11126       IF receipt_source_code IS NOT NULL THEN
11127          dbms_sql.bind_variable(query_hdl, 'receipt_source_code', receipt_source_code);
11128       END IF;
11129 
11130     END IF;
11131 
11132     DBMS_SQL.define_column(query_hdl, 1, lpn, 30);
11133     DBMS_SQL.define_column(query_hdl, 2, lpn_id);
11134     DBMS_SQL.define_column(query_hdl, 3, item_id);
11135     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
11136 
11137     LOOP
11138       -- fetch a row
11139       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
11140         -- fetch columns from the row
11141         DBMS_SQL.column_value(query_hdl, 1, lpn);
11142         DBMS_SQL.column_value(query_hdl, 2, lpn_id);
11143         DBMS_SQL.column_value(query_hdl, 3, item_id);
11144         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'outside if loop to add lpns before query' );
11145 		IF item_id IS NOT NULL
11146 		   AND item_id <> 0 THEN
11147 		  item  := ' (' || inv_mwb_tree1.GET_ITEM(item_id, NVL(inv_mwb_globals.g_tree_organization_id, inv_mwb_globals.g_organization_id ))|| ')';		-- Bug 6350236
11148 		ELSE
11149 		  item  := '';
11150 		END IF;
11151         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'outside if loop to add lpns' );
11152         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
11153         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'inside if loop to add lpns' );
11154         inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn:'||lpn );
11155           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
11156           x_node_tbl(i).DEPTH  := 1;
11157           x_node_tbl(i).label  := lpn || item;
11158           x_node_tbl(i).icon   := 'inv_licn';
11159           x_node_tbl(i).VALUE  := TO_CHAR(lpn_id);
11160           x_node_tbl(i).TYPE   := 'LPN';
11161           i                    := i + 1;
11162         END IF;
11163 
11164         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
11165         j  := j + 1;
11166       ELSE
11167         EXIT;
11168       END IF;
11169     END LOOP;
11170 
11171     DBMS_SQL.close_cursor(query_hdl); -- close cursor
11172     x_node_value    := j;
11173     x_tbl_index     := i;
11174   EXCEPTION
11175     WHEN NO_DATA_FOUND THEN
11176       NULL;
11177     WHEN OTHERS THEN
11178       RAISE;
11179   END add_lpns;
11180 
11181   PROCEDURE add_items(
11182   /*, inv_mwb_globals.g_inserted_under_org  IN            VARCHAR2 DEFAULT 'N'*/
11183     x_node_value          IN OUT NOCOPY NUMBER
11184   , x_node_tbl            IN OUT NOCOPY fnd_apptree.node_tbl_type
11185   , x_tbl_index           IN OUT NOCOPY NUMBER
11186   ) IS
11187     query_str      VARCHAR2(10000);
11188     subquery_str   varchar2(3000);
11189     query_hdl      NUMBER;
11190     rows_processed NUMBER;
11191     item_id        mtl_system_items_kfv.inventory_item_id%TYPE;
11192     item           mtl_system_items_kfv.concatenated_segments%TYPE;
11193     i              NUMBER                                            := x_tbl_index;
11194     j              NUMBER                                            := x_node_value;
11195     table_required VARCHAR2(300);
11196     receipt_source_code VARCHAR2(30);
11197 
11198     group_str      VARCHAR2(10000) ;
11199     having_str     VARCHAR2(10000) := ' HAVING 1=1 ';
11200 
11201     select_str     VARCHAR2(10000) ;
11202     where_str      VARCHAR2(10000) ;
11203 
11204     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
11205     lpn_from_id     wms_license_plate_numbers.lpn_id%TYPE;
11206     lpn_to_id       wms_license_plate_numbers.lpn_id%TYPE;
11207 
11208     l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_ITEMS';
11209 
11210     l_default_status_id NUMBER; -- Onhand Material Status Support
11211 
11212    BEGIN
11213 
11214       IF inv_mwb_globals.g_view_by IN ('SERIAL','LOT') THEN
11215          inv_mwb_globals.g_containerized := NULL;
11216       END IF;
11217 
11218       -- Onhand Material Status Support
11219       if (inv_mwb_globals.g_organization_id is not null) then
11220          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
11221            l_default_status_id :=  inv_cache.org_rec.default_status_id;
11222          end if;
11223       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
11224          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
11225            l_default_status_id :=  inv_cache.org_rec.default_status_id;
11226          end if;
11227       end if;
11228 
11229       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered with node type : '||inv_mwb_globals.g_tree_node_type );
11230 /*
11231       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
11232          inv_mwb_globals.g_prepacked := NULL;
11233          inv_mwb_globals.g_inserted_under_org := 1;
11234          inv_mwb_globals.g_containerized := 1;
11235          IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
11236             inv_mwb_globals.g_locator_controlled := 2;
11237          ELSE
11238             inv_mwb_globals.g_locator_controlled := 1;
11239          END IF;
11240       END IF;
11241 
11242 
11243       IF inv_mwb_globals.g_tree_node_type = 'SUB'
11244       AND inv_mwb_globals.g_tree_mat_loc_id = 1 THEN
11245             inv_mwb_globals.g_locator_controlled := 1;
11246       ELSE
11247             inv_mwb_globals.g_locator_controlled := 2;
11248       END IF;
11249 */
11250       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
11251 
11252    IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN
11253       IF inv_mwb_globals.g_tree_doc_type_id = 1   -- Purchase Order
11254       AND inv_mwb_globals.g_source_org_id IS NULL
11255       AND inv_mwb_globals.g_internal_order_id IS NULL
11256       AND inv_mwb_globals.g_shipment_header_id_interorg IS NULL
11257       AND inv_mwb_globals.g_req_header_id IS NULL THEN
11258 
11259          query_str := ' SELECT distinct msik.concatenated_segments
11260                              , msik.inventory_item_id
11261                           FROM po_headers_all pha
11262                              , po_lines_all pla
11263                              , mtl_supply ms
11264                              , mtl_system_items_kfv msik
11265                          WHERE pha.po_header_id(+) = ms.po_header_id
11266                            AND pla.po_line_id(+) = ms.po_line_id
11267                            AND ms.destination_type_code = ''INVENTORY''
11268                            AND ms.item_id = msik.inventory_item_id
11269                            AND ms.to_organization_id = msik.organization_id
11270                            AND ms.supply_type_code IN (''PO'',''SHIPMENT'')
11271                            AND pha.segment1 IS NOT NULL';
11272 
11273 
11274          IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
11275             query_str := query_str || ' AND pla.vendor_product_num = :inb_vendor_item ';
11276          END IF;
11277 
11278          inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
11279 
11280          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11281             query_str := query_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
11282          END IF;
11283 
11284          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
11285             inv_mwb_globals.g_expected_to_date IS NOT NULL AND
11286             inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11287                query_str := query_str || ' AND ms.expected_delivery_date = :inb_from_date';
11288          END IF;
11289 
11290          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11291             query_str := query_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
11292          END IF;
11293 
11294          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11295             query_str := query_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
11296          END IF;
11297 
11298          inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
11299 
11300          IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11301             query_str := query_str || ' AND ms.to_organization_id = :inb_to_org_id ';
11302          END IF;
11303 
11304          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11305             query_str := query_str || ' AND ms.item_id = :inb_item_id ';
11306          END IF;
11307 
11308          IF inv_mwb_globals.g_inventory_item_id IS NULL
11309          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
11310             query_str := query_str || ' AND msik.description like :inb_item_description ';
11311          END IF;
11312 
11313          IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
11314             query_str := query_str || ' AND pha.po_header_id = :inb_po_header_id ';
11315          END IF;
11316 
11317          IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
11318             query_str := query_str || ' AND pha.po_header_id = :inb_doc_header_id ';
11319          END IF;
11320 
11321          inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
11322 
11323          IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
11324             query_str := query_str || ' AND ms.po_release_id = :inb_po_release_id ';
11325          END IF;
11326 
11327          IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
11328             query_str := query_str || ' AND pha.vendor_id = :inb_vendor_id ';
11329             IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
11330                query_str := query_str || ' AND pha.vendor_site_id = :inb_vendor_site_id ';
11331             END IF;
11332          END IF;
11333 
11334          query_str := query_str || ' ORDER BY msik.concatenated_segments ';
11335 
11336          inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
11337 
11338          query_hdl  := DBMS_SQL.open_cursor;
11339          DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
11340 
11341          IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
11342             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
11343          END IF;
11344 
11345          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11346             DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
11347          END IF;
11348 
11349          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
11350          AND inv_mwb_globals.g_expected_to_date IS NOT NULL
11351          AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11352             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
11353          END IF;
11354 
11355          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11356             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
11357          END IF;
11358 
11359          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11360             DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
11361          END IF;
11362 
11363          IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
11364             DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
11365          END IF;
11366 
11367          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11368             DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
11369          END IF;
11370 
11371          IF inv_mwb_globals.g_inventory_item_id IS NULL
11372          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
11373             DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
11374          END IF;
11375 
11376          IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
11377             DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
11378          END IF;
11379 
11380          IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
11381             DBMS_SQL.bind_variable(query_hdl, 'inb_doc_header_id', inv_mwb_globals.g_tree_doc_header_id);
11382          END IF;
11383 
11384          IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
11385             DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
11386          END IF;
11387 
11388          IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
11389             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
11390             IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
11391                DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
11392             END IF;
11393          END IF;
11394 
11395          DBMS_SQL.define_column(query_hdl, 1, item, 30);
11396          DBMS_SQL.define_column(query_hdl, 2, item_id);
11397 
11398          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
11399 
11400          LOOP
11401             -- fetch a row
11402             IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
11403             -- fetch columns from the row
11404                DBMS_SQL.column_value(query_hdl, 1, item);
11405                DBMS_SQL.column_value(query_hdl, 2, item_id);
11406 
11407                IF j >= inv_mwb_globals.g_tree_node_low_value THEN
11408                   x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
11409                   x_node_tbl(i).DEPTH  := 1;
11410                   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
11411                   x_node_tbl(i).icon   := 'inv_item';
11412                   x_node_tbl(i).VALUE  := TO_CHAR(item_id);
11413                   x_node_tbl(i).TYPE   := 'ITEM';
11414                   i                    := i + 1;
11415                END IF;
11416 
11417             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
11418                j  := j + 1;
11419             ELSE
11420                EXIT;
11421             END IF;
11422          END LOOP;
11423 
11424       END IF; -- Purchase Order
11425 
11426 
11427       IF inv_mwb_globals.g_tree_doc_type_id = 4 THEN  -- ASN
11428 
11429          select_str := ' SELECT distinct msik.concatenated_segments
11430                               , msik.inventory_item_id
11431                            FROM mtl_supply ms
11432                               , rcv_shipment_lines rsl
11433                               , rcv_shipment_headers rsh
11434                               , mtl_system_items_kfv msik ';
11435 
11436 
11437           where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id
11438                           AND ms.shipment_line_id = rsl.shipment_line_id
11439                           AND ms.supply_type_code = ''SHIPMENT''
11440                           AND ms.destination_type_code = ''INVENTORY''
11441                           AND rsh.asn_type IS NOT NULL
11442                           AND ms.item_id = msik.inventory_item_id
11443                           AND ms.to_organization_id = msik.organization_id ';
11444 
11445          IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
11446             where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
11447          END IF;
11448 
11449          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11450             where_str := where_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
11451          END IF;
11452 
11453          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
11454             inv_mwb_globals.g_expected_to_date IS NOT NULL AND
11455             inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11456                where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
11457          END IF;
11458 
11459          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11460             where_str := where_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
11461          END IF;
11462 
11463          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11464             where_str := where_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
11465          END IF;
11466 
11467          IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11468             where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
11469          END IF;
11470 
11471          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11472             where_str := where_str || ' AND ms.item_id = :inb_item_id ';
11473          END IF;
11474 
11475          IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
11476             where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
11477          END IF;
11478 
11479          IF inv_mwb_globals.g_inventory_item_id IS NULL
11480          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
11481             where_str := where_str || ' AND msik.description like :inb_item_description ';
11482          END IF;
11483 
11484          IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
11485             where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
11486             IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
11487                where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
11488             END IF;
11489          END IF;
11490 
11491          IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
11492             where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
11493          ELSE
11494            IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
11495               where_str := where_str || ' AND rsl.asn_lpn_id >= :inb_lpn_from_id ';
11496            END IF;
11497 
11498            IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
11499               where_str := where_str || ' AND rsl.asn_lpn_id <= :inb_lpn_to_id ';
11500            END IF;
11501          END IF;
11502 
11503          IF inv_mwb_globals.g_tree_node_type = 'DOCNUM' THEN
11504             where_str := where_str || ' AND rsl.asn_lpn_id IS NULL ';
11505          END IF;
11506 
11507          IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
11508             where_str := where_str || ' AND rsl.asn_lpn_id = :inb_tree_lpn_id ';
11509          END IF;
11510 
11511 
11512          IF inv_mwb_globals.g_serial_from IS NOT NULL
11513          OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
11514             select_str := select_str || ', rcv_serials_supply rss ';
11515             where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id ';
11516          END IF;
11517 
11518          IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
11519             where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
11520          ELSE
11521            IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11522               where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
11523            END IF;
11524 
11525            IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11526               where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
11527            END IF;
11528          END IF;
11529 
11530          IF (inv_mwb_globals.g_lot_from IS NOT NULL
11531          OR inv_mwb_globals.g_lot_to IS NOT NULL)
11532          AND (inv_mwb_globals.g_serial_from IS NULL
11533          AND inv_mwb_globals.g_serial_to IS NULL) THEN
11534             select_str := select_str || ', rcv_lots_supply rss ';
11535             where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id ';
11536          END IF;
11537 
11538          IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
11539             where_str := where_str || ' AND rss.lot_num = :inb_lot_from ';
11540          ELSE
11541            IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11542               where_str := where_str || ' AND rss.lot_num >= :inb_lot_from ';
11543            END IF;
11544 
11545            IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11546               where_str := where_str || ' AND rss.lot_num <= :inb_lot_to ';
11547            END IF;
11548          END IF;
11549 
11550          where_str := where_str || ' ORDER BY  msik.concatenated_segments ';
11551 
11552          query_str := select_str || where_str;
11553 
11554 
11555 /*         delete from rtest2;
11556          insert into rtest2 values (query_str);
11557          commit;
11558 */
11559          query_hdl  := DBMS_SQL.open_cursor;
11560          DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
11561 
11562          IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
11563             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
11564          END IF;
11565 
11566          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11567             DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
11568          END IF;
11569 
11570          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
11571          AND inv_mwb_globals.g_expected_to_date IS NOT NULL
11572          AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11573             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
11574          END IF;
11575 
11576          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11577             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
11578          END IF;
11579 
11580          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11581             DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
11582          END IF;
11583 
11584          IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
11585             DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
11586          END IF;
11587 
11588          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11589             DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
11590          END IF;
11591 
11592          IF inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
11593             DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
11594          END IF;
11595 
11596          IF inv_mwb_globals.g_inventory_item_id IS NULL
11597          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
11598             DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
11599          END IF;
11600 
11601          IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
11602             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
11603             IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
11604                DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
11605             END IF;
11606          END IF;
11607 
11608          IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
11609             DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
11610          ELSE
11611            IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
11612               DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
11613            END IF;
11614 
11615            IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
11616               DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to_id', inv_mwb_globals.g_lpn_to_id);
11617            END IF;
11618          END IF;
11619 
11620          IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
11621             DBMS_SQL.bind_variable(query_hdl, 'inb_tree_lpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
11622          END IF;
11623 
11624          IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
11625             DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
11626          ELSE
11627            IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11628               DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
11629            END IF;
11630 
11631            IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11632               DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
11633            END IF;
11634          END IF;
11635 
11636         IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
11637             DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
11638          ELSE
11639            IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11640               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
11641            END IF;
11642 
11643            IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11644               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
11645            END IF;
11646          END IF;
11647 
11648          DBMS_SQL.define_column(query_hdl, 1, item, 30);
11649          DBMS_SQL.define_column(query_hdl, 2, item_id);
11650 
11651          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
11652 
11653          LOOP
11654             -- fetch a row
11655             IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
11656             -- fetch columns from the row
11657                DBMS_SQL.column_value(query_hdl, 1, item);
11658                DBMS_SQL.column_value(query_hdl, 2, item_id);
11659 
11660 
11661                IF j >= inv_mwb_globals.g_tree_node_low_value THEN
11662                   x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
11663                   x_node_tbl(i).DEPTH  := 1;
11664                   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
11665                   x_node_tbl(i).icon   := 'inv_item';
11666                   x_node_tbl(i).VALUE  := TO_CHAR(item_id);
11667                   x_node_tbl(i).TYPE   := 'ITEM';
11668                   i                    := i + 1;
11669                END IF;
11670 
11671             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
11672                j  := j + 1;
11673             ELSE
11674                EXIT;
11675             END IF;
11676          END LOOP;
11677 
11678       END IF; -- ASN
11679 
11680       IF inv_mwb_globals.g_tree_doc_type_id = 3 THEN  -- INTERORG
11681 
11682          select_str := ' SELECT distinct msik.concatenated_segments
11683                               , msik.inventory_item_id
11684                            FROM mtl_supply ms
11685                               , rcv_shipment_lines rsl
11686                               , rcv_shipment_headers rsh
11687                               , mtl_system_items_kfv msik ';
11688 
11689          where_str := ' WHERE ms.shipment_header_id = rsh.shipment_header_id (+)
11690                           AND ms.shipment_line_id = rsl.shipment_line_id (+)
11691                           AND ms.supply_type_code = ''SHIPMENT''
11692                           AND ms.destination_type_code = ''INVENTORY''
11693                           AND rsh.asn_type IS NULL
11694                           AND ms.item_id = msik.inventory_item_id
11695                           AND ms.to_organization_id = msik.organization_id ';
11696 
11697 
11698          IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
11699             where_str := where_str || ' AND rsl.vendor_item_num = :inb_vendor_item ';
11700          END IF;
11701 
11702          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11703             where_str := where_str || ' AND rsl.cost_group_id = :inb_cost_group_id ';
11704          END IF;
11705 
11706          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
11707             inv_mwb_globals.g_expected_to_date IS NOT NULL AND
11708             inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11709                where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
11710          END IF;
11711 
11712          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11713             where_str := where_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
11714          END IF;
11715 
11716          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11717             where_str := where_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
11718          END IF;
11719 
11720          IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11721             where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
11722          END IF;
11723 
11724          IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
11725             where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
11726          END IF;
11727 
11728          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11729             where_str := where_str || ' AND ms.item_id = :inb_item_id ';
11730          END IF;
11731 
11732          IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
11733          OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
11734             where_str := where_str || ' AND rsh.shipment_header_id = :inb_shipment_header_id ';
11735          END IF;
11736 
11737          IF inv_mwb_globals.g_inventory_item_id IS NULL
11738          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
11739             where_str := ' AND msik.description like :inb_item_description ';
11740          END IF;
11741 
11742          IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
11743             where_str := where_str || ' AND ms.po_header_id = :inb_po_header_id ';
11744          END IF;
11745 
11746          IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
11747             where_str := where_str || ' AND ms.po_release_id = :inb_po_release_id ';
11748          END IF;
11749 
11750          IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
11751             where_str := where_str || ' AND rsh.vendor_id = :inb_vendor_id ';
11752             IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
11753                where_str := where_str || ' AND rsh.vendor_site_id = :inb_vendor_site_id ';
11754             END IF;
11755          END IF;
11756 
11757          IF inv_mwb_globals.g_serial_from IS NOT NULL
11758          OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
11759             select_str := select_str || ', rcv_serials_supply rss ';
11760             where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id (+) ';
11761          END IF;
11762 
11763 
11764          IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
11765             where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
11766          ELSE
11767            IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11768               where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
11769            END IF;
11770 
11771            IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11772               where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
11773            END IF;
11774          END IF;
11775 
11776          IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
11777             where_str := where_str || ' AND rsl.asn_lpn_id = :inb_lpn_from_id ';
11778          ELSE
11779            IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
11780               where_str := where_str || ' AND rsl.asn_lpn_id >= :inb_lpn_from_id ';
11781            END IF;
11782 
11783            IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
11784               where_str := where_str || ' AND rsl.asn_lpn_id <= :inb_lpn_to_id ';
11785            END IF;
11786          END IF;
11787 
11788          IF inv_mwb_globals.g_tree_node_type = 'DOCNUM' THEN
11789             where_str := where_str || ' AND rsl.asn_lpn_id IS NULL ';
11790          END IF;
11791 
11792          IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
11793             where_str := where_str || ' AND rsl.asn_lpn_id = :inb_tree_lpn_id ';
11794          END IF;
11795 
11796          IF inv_mwb_globals.g_lot_from IS NOT NULL
11797          OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
11798             select_str := select_str || ', rcv_lots_supply rls ';
11799             where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
11800          END IF;
11801 
11802          IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
11803             where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
11804          ELSE
11805            IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11806               where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
11807            END IF;
11808 
11809            IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11810               where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
11811            END IF;
11812          END IF;
11813 
11814          where_str := where_str || ' ORDER BY msik.concatenated_segments ';
11815 
11816          query_str := select_str || where_str;
11817 
11818 /*         delete from rtest2;
11819          insert into rtest2 values (query_str);
11820          commit;
11821 */
11822          query_hdl  := DBMS_SQL.open_cursor;
11823          DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
11824 
11825          IF inv_mwb_globals.g_vendor_item IS NOT NULL THEN
11826             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_item', inv_mwb_globals.g_vendor_item);
11827          END IF;
11828 
11829          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11830             DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
11831          END IF;
11832 
11833          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
11834          AND inv_mwb_globals.g_expected_to_date IS NOT NULL
11835          AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11836             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
11837          END IF;
11838 
11839          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11840             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
11841          END IF;
11842 
11843          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11844             DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
11845          END IF;
11846 
11847          IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
11848             DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
11849          END IF;
11850 
11851          IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
11852             DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
11853          END IF;
11854 
11855          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
11856             DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
11857          END IF;
11858 
11859          IF inv_mwb_globals.g_shipment_header_id_interorg IS NOT NULL
11860          OR inv_mwb_globals.g_tree_doc_header_id IS NOT NULL THEN
11861             DBMS_SQL.bind_variable(query_hdl, 'inb_shipment_header_id', NVL(inv_mwb_globals.g_shipment_header_id_interorg
11862                                                                            ,inv_mwb_globals.g_tree_doc_header_id));
11863          END IF;
11864 
11865          IF inv_mwb_globals.g_inventory_item_id IS NULL
11866          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
11867             DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
11868          END IF;
11869 
11870          IF inv_mwb_globals.g_po_header_id IS NOT NULL THEN
11871             DBMS_SQL.bind_variable(query_hdl, 'inb_po_header_id', inv_mwb_globals.g_po_header_id);
11872          END IF;
11873 
11874          IF  inv_mwb_globals.g_po_release_id IS NOT NULL THEN
11875             DBMS_SQL.bind_variable(query_hdl, 'inb_po_release_id', inv_mwb_globals.g_po_release_id);
11876          END IF;
11877 
11878          IF inv_mwb_globals.g_vendor_id IS NOT NULL THEN
11879             DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_id', inv_mwb_globals.g_vendor_id);
11880             IF inv_mwb_globals.g_vendor_site_id IS NOT NULL THEN
11881                DBMS_SQL.bind_variable(query_hdl, 'inb_vendor_site_id', inv_mwb_globals.g_vendor_site_id);
11882             END IF;
11883          END IF;
11884 
11885 
11886          IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
11887             DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
11888          ELSE
11889            IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
11890               DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
11891            END IF;
11892 
11893            IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
11894               DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
11895            END IF;
11896          END IF;
11897 
11898          IF NVL(inv_mwb_globals.g_lpn_from_id,-99) = NVL(inv_mwb_globals.g_lpn_to_id,-999) THEN
11899             DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
11900          ELSE
11901            IF inv_mwb_globals.g_lpn_from_id IS NOT NULL THEN
11902               DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_from_id', inv_mwb_globals.g_lpn_from_id);
11903            END IF;
11904 
11905            IF inv_mwb_globals.g_lpn_to_id IS NOT NULL THEN
11906               DBMS_SQL.bind_variable(query_hdl, 'inb_lpn_to_id', inv_mwb_globals.g_lpn_to_id);
11907            END IF;
11908          END IF;
11909 
11910          IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
11911             DBMS_SQL.bind_variable(query_hdl, 'inb_tree_lpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
11912          END IF;
11913 
11914         IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
11915             DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
11916          ELSE
11917            IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
11918               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
11919            END IF;
11920 
11921            IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
11922               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
11923            END IF;
11924          END IF;
11925 
11926          DBMS_SQL.define_column(query_hdl, 1, item, 30);
11927          DBMS_SQL.define_column(query_hdl, 2, item_id);
11928 
11929          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
11930 
11931          LOOP
11932             -- fetch a row
11933             IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
11934             -- fetch columns from the row
11935                DBMS_SQL.column_value(query_hdl, 1, item);
11936                DBMS_SQL.column_value(query_hdl, 2, item_id);
11937 
11938                IF j >= inv_mwb_globals.g_tree_node_low_value THEN
11939                   x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
11940                   x_node_tbl(i).DEPTH  := 1;
11941                   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
11942                   x_node_tbl(i).icon   := 'inv_item';
11943                   x_node_tbl(i).VALUE  := TO_CHAR(item_id);
11944                   x_node_tbl(i).TYPE   := 'ITEM';
11945                   i                    := i + 1;
11946                END IF;
11947 
11948             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
11949                j  := j + 1;
11950             ELSE
11951                EXIT;
11952             END IF;
11953          END LOOP;
11954 
11955       END IF; -- INTERORG
11956 
11957 
11958       IF inv_mwb_globals.g_tree_doc_type_id = 2 THEN  -- REQUISITION
11959 
11960       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Inside req.code');
11961 
11962          select_str := ' SELECT distinct msik.concatenated_segments
11963                               , msik.inventory_item_id
11964                            FROM mtl_supply ms
11965                               , po_requisition_headers_all prha
11966                               , po_requisition_lines_all prla
11967                               , mtl_system_items_kfv msik ';
11968 
11969           where_str := 'WHERE ms.req_header_id = prha.requisition_header_id (+)
11970                           AND ms.req_line_id = prla.requisition_line_id (+)
11971                           AND ms.supply_type_code = ''REQ''
11972                           AND ms.destination_type_code = ''INVENTORY''
11973                           AND ms.item_id = msik.inventory_item_id
11974                           AND ms.to_organization_id = msik.organization_id ';
11975 
11976 
11977 
11978 
11979          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
11980             where_str := where_str || ' AND ms.cost_group_id = :inb_cost_group_id ';
11981          END IF;
11982 
11983          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL AND
11984             inv_mwb_globals.g_expected_to_date IS NOT NULL AND
11985             inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
11986                where_str := where_str || ' AND ms.expected_delivery_date = :inb_from_date';
11987          END IF;
11988 
11989          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
11990             where_str := where_str || ' AND ms.expected_delivery_date  >= :inb_from_date';
11991          END IF;
11992 
11993          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
11994             where_str := where_str || ' AND ms.expected_delivery_date  <= :inb_to_date';
11995          END IF;
11996 
11997          IF inv_mwb_globals.g_organization_id IS NOT NULL THEN
11998             where_str := where_str || ' AND ms.to_organization_id = :inb_to_org_id ';
11999          END IF;
12000 
12001          IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
12002             where_str := where_str || ' AND ms.from_organization_id = :inb_from_organization_id ';
12003          END IF;
12004 
12005          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12006             where_str := where_str || ' AND ms.item_id = :inb_item_id ';
12007          END IF;
12008 
12009          IF inv_mwb_globals.g_req_header_id IS NOT NULL
12010          OR (inv_mwb_globals.g_tree_node_type = 'DOCNUM'
12011          AND inv_mwb_globals.g_tree_doc_type_id = 2
12012          AND inv_mwb_globals.g_tree_node_value IS NOT NULL) THEN
12013             where_str := where_str || ' AND ms.req_header_id = :inb_req_header_id ';
12014          END IF;
12015 
12016          IF inv_mwb_globals.g_inventory_item_id IS NULL
12017          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
12018             where_str := where_str || ' AND msik.description like :inb_item_description ';
12019          END IF;
12020 
12021          IF inv_mwb_globals.g_serial_from IS NOT NULL
12022          OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
12023             select_str := select_str || ', rcv_serials_supply rss ';
12024             where_str := where_str || ' AND ms.shipment_line_id = rss.shipment_line_id ';
12025          END IF;
12026 
12027 
12028          IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
12029             where_str := where_str || ' AND rss.serial_num = :inb_serial_from ';
12030          ELSE
12031            IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
12032               where_str := where_str || ' AND rss.serial_num >= :inb_serial_from ';
12033            END IF;
12034 
12035            IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
12036               where_str := where_str || ' AND rss.serial_num <= :inb_serial_to ';
12037            END IF;
12038          END IF;
12039 
12040 
12041          IF inv_mwb_globals.g_lot_from IS NOT NULL
12042          OR inv_mwb_globals.g_lot_to IS NOT NULL THEN
12043             select_str := select_str || ', rcv_lots_supply rls ';
12044             where_str := where_str || ' AND ms.shipment_line_id = rls.shipment_line_id (+) ';
12045          END IF;
12046 
12047          IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
12048             where_str := where_str || ' AND rls.lot_num = :inb_lot_from ';
12049          ELSE
12050            IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
12051               where_str := where_str || ' AND rls.lot_num >= :inb_lot_from ';
12052            END IF;
12053 
12054            IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
12055               where_str := where_str || ' AND rls.lot_num <= :inb_lot_to ';
12056            END IF;
12057          END IF;
12058 
12059          where_str := where_str || ' ORDER BY msik.concatenated_segments ';
12060 
12061          query_str := select_str || where_str;
12062 
12063 
12064 /*         delete from rtest2;
12065          insert into rtest2 values (query_str);
12066          commit;
12067 */
12068          query_hdl  := DBMS_SQL.open_cursor;
12069          DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
12070 
12071          IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
12072             DBMS_SQL.bind_variable(query_hdl, 'inb_cost_group_id', inv_mwb_globals.g_cost_group_id);
12073          END IF;
12074 
12075          IF (inv_mwb_globals.g_expected_from_date IS NOT NULL
12076          AND inv_mwb_globals.g_expected_to_date IS NOT NULL
12077          AND inv_mwb_globals.g_expected_from_date = inv_mwb_globals.g_expected_to_date) THEN
12078             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
12079          END IF;
12080 
12081          IF inv_mwb_globals.g_expected_from_date IS NOT NULL THEN
12082             DBMS_SQL.bind_variable(query_hdl, 'inb_from_date', inv_mwb_globals.g_expected_from_date);
12083          END IF;
12084 
12085          IF inv_mwb_globals.g_expected_to_date IS NOT NULL THEN
12086             DBMS_SQL.bind_variable(query_hdl, 'inb_to_date', inv_mwb_globals.g_expected_to_date);
12087          END IF;
12088 
12089          IF (inv_mwb_globals.g_organization_id IS NOT NULL) THEN
12090             DBMS_SQL.bind_variable(query_hdl, 'inb_to_org_id', inv_mwb_globals.g_organization_id);
12091          END IF;
12092 
12093          IF inv_mwb_globals.g_source_org_id IS NOT NULL THEN
12094             DBMS_SQL.bind_variable(query_hdl, 'inb_from_organization_id', inv_mwb_globals.g_source_org_id);
12095          END IF;
12096 
12097          IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12098             DBMS_SQL.bind_variable(query_hdl, 'inb_item_id', inv_mwb_globals.g_inventory_item_id);
12099          END IF;
12100 
12101          IF inv_mwb_globals.g_req_header_id IS NOT NULL
12102          OR (inv_mwb_globals.g_tree_node_type = 'DOCNUM'
12103          AND inv_mwb_globals.g_tree_doc_type_id = 2
12104          AND inv_mwb_globals.g_tree_node_value IS NOT NULL) THEN
12105             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));
12106          END IF;
12107 
12108 
12109          IF inv_mwb_globals.g_inventory_item_id IS NULL
12110          AND inv_mwb_globals.g_item_description IS NOT NULL THEN
12111             DBMS_SQL.bind_variable(query_hdl, 'inb_item_description', inv_mwb_globals.g_item_description);
12112          END IF;
12113 
12114          IF NVL(inv_mwb_globals.g_serial_from,-99) = NVL(inv_mwb_globals.g_serial_to,-999) THEN
12115             DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
12116          ELSE
12117            IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
12118               DBMS_SQL.bind_variable(query_hdl, 'inb_serial_from', inv_mwb_globals.g_serial_from);
12119            END IF;
12120 
12121            IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
12122               DBMS_SQL.bind_variable(query_hdl, 'inb_serial_to', inv_mwb_globals.g_serial_to);
12123            END IF;
12124          END IF;
12125 
12126         IF NVL(inv_mwb_globals.g_lot_from,-99) = NVL(inv_mwb_globals.g_lot_to,-999) THEN
12127             DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
12128          ELSE
12129            IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
12130               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_from', inv_mwb_globals.g_lot_from);
12131            END IF;
12132 
12133            IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
12134               DBMS_SQL.bind_variable(query_hdl, 'inb_lot_to', inv_mwb_globals.g_lot_to);
12135            END IF;
12136          END IF;
12137 
12138          DBMS_SQL.define_column(query_hdl, 1, item, 30);
12139          DBMS_SQL.define_column(query_hdl, 2, item_id);
12140 
12141          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
12142 
12143          LOOP
12144             -- fetch a row
12145             IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
12146             -- fetch columns from the row
12147                DBMS_SQL.column_value(query_hdl, 1, item);
12148                DBMS_SQL.column_value(query_hdl, 2, item_id);
12149 
12150 	       IF j >= inv_mwb_globals.g_tree_node_low_value THEN
12151                   x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
12152                   x_node_tbl(i).DEPTH  := 1;
12153                   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
12154                   x_node_tbl(i).icon   := 'inv_item';
12155                   x_node_tbl(i).VALUE  := TO_CHAR(item_id);
12156                   x_node_tbl(i).TYPE   := 'ITEM';
12157                   i                    := i + 1;
12158                END IF;
12159 
12160             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
12161                j  := j + 1;
12162             ELSE
12163                EXIT;
12164             END IF;
12165          END LOOP;
12166 
12167       END IF; -- REQUISITION
12168 
12169       DBMS_SQL.close_cursor(query_hdl); -- close cursor
12170       x_node_value    := j;
12171       x_tbl_index     := i;
12172       RETURN;
12173    END IF; -- g_tree_doc_type_id is not null
12174 
12175 
12176 
12177 
12178 
12179 -- NSRIVAST, INVCONV, Start
12180     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
12181              is_grade_t     := TRUE ;
12182     END IF ;
12183 -- NSRIVAST, INVCONV, End
12184     IF (
12185         inv_mwb_globals.g_serial_from IS NULL
12186         AND inv_mwb_globals.g_serial_to IS NULL
12187         AND inv_mwb_globals.g_tree_serial_number IS NULL
12188         AND inv_mwb_globals.g_unit_number IS NULL
12189         AND inv_mwb_globals.g_status_id IS NULL
12190         AND inv_mwb_globals.g_lpn_from IS NULL
12191         AND inv_mwb_globals.g_lpn_to IS NULL
12192         AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
12193         AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
12194         AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
12195        ) THEN
12196       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12197         table_required  := ' mtl_rcv_mwb_onhand_v v ';
12198       ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
12199         table_required  := ' mtl_onhand_total_mwb_v v ';
12200           IF is_grade_t = TRUE THEN                           -- NSRIVAST, INVCONV
12201             table_required  := ' mtl_onhand_total_v v ';   -- NSRIVAST, INVCONV
12202           END IF;                                             -- NSRIVAST, INVCONV
12203       ELSE
12204         table_required  := ' mtl_onhand_total_v v ';
12205       END IF;
12206 
12207 	       --bug 6633612
12208 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
12209 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
12210 		END IF;
12211 		--bug 6633612
12212 
12213       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
12214         query_str  := query_str || 'SELECT DISTINCT v.inventory_item_id, v.item from ' || table_required;
12215         query_str  := query_str || 'WHERE 1=1 ';
12216       ELSE
12217         query_str  :=
12218               query_str
12219            || 'SELECT DISTINCT v.inventory_item_id, v.item from'
12220            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
12221            || inv_mwb_globals.g_tree_lot_attr_query
12222            || ') mln, '
12223            || table_required;
12224         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
12225  		--BUG 7556505
12226 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
12227 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
12228 	           END IF;
12229 		--BUG 7556505
12230       END IF;
12231 
12232       --Bug # 3539766 (Group by and having clause have been added)
12233       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12234         group_str := ' GROUP BY  v.organization_id  ';
12235       END IF;
12236 
12237       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
12238       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
12239         query_str  := query_str || ' AND v.subinventory_code = :sub ';
12240         IF group_str IS NOT NULL THEN
12241            group_str := group_str || ' , v.subinventory_code  ' ;
12242         END IF;
12243       END IF;
12244 
12245       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
12246       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
12247         query_str  := query_str || ' AND v.locator_id = :loc_id ';
12248         IF group_str IS NOT NULL THEN
12249            group_str := group_str || ' , v.locator_id  ' ;
12250         END IF;
12251       END IF;
12252 
12253        --bug 6633612
12254 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
12255 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
12256 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
12257 					 || ' AND rt.organization_id = mmt.organization_id '
12258 					 || ' AND rt.transaction_type = ''DELIVER'''
12259 					 || ' AND rt.destination_type_code = ''INVENTORY'''
12260 					 || ' AND mmt.transaction_id = v.create_transaction_id '
12261 					 || ' AND mmt.organization_id = v.organization_id ';
12262 
12263 	END IF;
12264 	--bug 6633612
12265 
12266   -- NSRIVAST, INVCONV, Start
12267       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12268          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
12269       END IF ;
12270       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
12271          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
12272       END IF ;
12273    -- NSRIVAST, INVCONV, End
12274 
12275       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
12276         query_str  := query_str || ' AND v.project_id = :pr_id ';
12277         IF group_str IS NOT NULL THEN
12278            group_str := group_str || ' , v.project_id  ' ;
12279         END IF;
12280       END IF;
12281 
12282       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
12283         query_str  := query_str || ' AND v.task_id = :ta_id ';
12284         IF group_str IS NOT NULL THEN
12285            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
12286         END IF;
12287       END IF;
12288 
12289       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12290          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
12291       END IF;
12292 
12293       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12294          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
12295       END IF;
12296 
12297       --ER(3338592) Changes
12298       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
12299          query_str := query_str || ' AND v.item_description LIKE :item_description ';
12300       END IF;
12301 
12302       IF inv_mwb_globals.g_revision IS NOT NULL THEN
12303         query_str  := query_str || 'AND v.revision = :rev ';
12304         IF group_str IS NOT NULL THEN
12305           group_str := group_str || ' , v.revision  ' ;
12306         END IF;
12307        END IF;
12308 
12309       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
12310         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
12311         IF group_str IS NOT NULL THEN
12312           group_str := group_str || ' , v.cost_group_id  ' ;
12313         END IF;
12314       END IF;
12315 
12316       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
12317         query_str  := query_str || 'AND v.lot_number = :lot_n ';
12318         IF group_str IS NOT NULL THEN
12319            group_str := group_str || ' , v.lot_number  ' ;
12320          END IF;
12321       END IF;
12322 
12323       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
12324         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
12325       END IF;
12326 
12327       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
12328        query_str  := query_str || 'AND v.lot_number <= :lot_t ';
12329       END IF;
12330 
12331       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
12332       -- from onhand table (MOQD)
12333       if (l_default_status_id is not null) then
12334          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12335            query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
12336          END IF;
12337       else
12338          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12339            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
12340            query_str  := query_str || 'v.lot_status_id = :st_id) ';
12341          END IF;
12342       end if;
12343 
12344       IF inv_mwb_globals.g_containerized = 1 THEN
12345         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
12346       ELSIF inv_mwb_globals.g_containerized = 2 THEN
12347         query_str  := query_str || 'AND v.containerized_flag = 1 ';
12348       END IF;
12349 
12350 
12351 /*      IF inv_mwb_globals.g_view_by NOT IN ('SERIAL','LOT') THEN
12352          IF (inv_mwb_globals.g_lpn_from IS NULL
12353              AND inv_mwb_globals.g_lpn_to IS NULL)
12354          OR inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
12355            query_str  := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
12356          ELSE
12357            query_str  := query_str || 'AND containerized_flag = 1 ';
12358          END IF;
12359       END IF;
12360 */
12361 
12362 
12363       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
12364          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
12365          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
12366        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
12367          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
12368          query_str := query_str || ' AND  planning_organization_id in ';
12369          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
12370          query_str := query_str || '  where vendor_id = :vendor_id )';
12371       END IF;*/
12372 
12373       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
12374         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
12375         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
12376       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
12377         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
12378         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
12379       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
12380         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
12381       END IF;
12382 
12383       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
12384         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
12385         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
12386       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
12387         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
12388         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
12389       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
12390         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
12391       END IF;
12392 
12393       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12394          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
12395          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
12396          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
12397       END IF;
12398 
12399       IF (inv_mwb_globals.g_locator_controlled = 2) THEN
12400         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12401         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12402           --don't add the below locator id not null check
12403           NULL;
12404         ELSE
12405           query_str  := query_str || 'AND v.locator_id IS not NULL ';
12406         END IF;
12407       ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
12408         query_str  := query_str || 'AND v.locator_id IS NULL ';
12409       END IF;
12410 
12411 
12412       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12413         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12414         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12415             query_str  := query_str || ' AND v.subinventory_code is null AND v.locator_id is null ';
12416         END IF;
12417         --Bug#3191526
12418       END IF;
12419 
12420       IF inv_mwb_globals.g_organization_id IS NOT NULL
12421       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12422         query_str  := query_str || 'AND v.organization_id = :org_id ';
12423       --Bug # 3411938
12424       ELSE
12425         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
12426         query_str  := query_str || ' FROM org_access_view oav ' ;
12427         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
12428         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
12429         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
12430       END IF;
12431 
12432       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
12433          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
12434       END IF;
12435 
12436       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
12437          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
12438       END IF;
12439 
12440       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12441         query_str := query_str || group_str || having_str ;
12442       ELSE
12443         query_str  := query_str || 'GROUP BY v.inventory_item_id, v.item ';
12444       END IF;
12445 
12446       query_str  := query_str || 'ORDER BY v.item ';
12447 
12448     ELSIF(
12449           (
12450            inv_mwb_globals.g_serial_from IS NOT NULL
12451            OR inv_mwb_globals.g_serial_to IS NOT NULL
12452            OR inv_mwb_globals.g_tree_serial_number IS NOT NULL
12453            OR inv_mwb_globals.g_unit_number IS NOT NULL
12454            OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
12455           )
12456           AND inv_mwb_globals.g_lpn_from IS NULL
12457           AND inv_mwb_globals.g_lpn_to IS NULL
12458           AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
12459           AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
12460          ) THEN
12461       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12462         table_required  := ' mtl_rcv_serial_oh_v v ';
12463       ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
12464         table_required  := ' mtl_onhand_serial_mwb_v v ';
12465         IF is_grade_t = TRUE THEN                           -- NSRIVAST, INVCONV
12466           table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
12467         END IF;                                             -- NSRIVAST, INVCONV
12468       ELSE
12469         table_required  := ' mtl_onhand_serial_v v ';
12470       END IF;
12471 
12472 	--bug 6633612
12473 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
12474 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
12475 	END IF;
12476 	--bug 6633612
12477 
12478       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
12479          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
12480         query_str  := query_str || 'SELECT DISTINCT v.inventory_item_id, v.item from ' || table_required;
12481         query_str  := query_str || 'WHERE 1=1 ';
12482       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
12483             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
12484         query_str  :=
12485               query_str
12486            || 'SELECT DISTINCT v.inventory_item_id, v.item from'
12487            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
12488            || inv_mwb_globals.g_tree_serial_attr_query
12489            || ') msn, '
12490            || table_required;
12491         query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
12492       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
12493             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
12494         query_str  :=
12495               query_str
12496            || 'SELECT DISTINCT v.inventory_item_id, v.item from'
12497            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
12498            || inv_mwb_globals.g_tree_lot_attr_query
12499            || ') mln, '
12500            || table_required;
12501         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
12502  		--BUG 7556505
12503 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
12504 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
12505 	           END IF;
12506 		--BUG 7556505
12507       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
12508             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
12509         query_str  :=
12510               query_str
12511            || 'SELECT DISTINCT v.inventory_item_id, v.item from'
12512            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
12513            || inv_mwb_globals.g_tree_lot_attr_query
12514            || ') mln, '
12515            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
12516            || inv_mwb_globals.g_tree_serial_attr_query
12517            || ') msn, '
12518            || table_required;
12519         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
12520  		--BUG 7556505
12521 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
12522 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
12523 	           END IF;
12524 		--BUG 7556505
12525         query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
12526       END IF;
12527 
12528       --Bug # 3539766 (Group By and Having clause have been added)
12529       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12530         group_str := ' GROUP BY  v.organization_id  ';
12531       END IF;
12532 
12533       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
12534       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
12535         query_str  := query_str || 'AND v.subinventory_code = :sub ';
12536         IF group_str IS NOT NULL THEN
12537            group_str := group_str || ' , v.subinventory_code  ' ;
12538         END IF;
12539       END IF;
12540 
12541       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
12542       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
12543         query_str  := query_str || 'AND v.locator_id = :loc_id ';
12544         IF group_str IS NOT NULL THEN
12545            group_str := group_str || ' , v.locator_id  ' ;
12546         END IF;
12547       END IF;
12548       --bug 6633612
12549 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
12550 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
12551 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
12552 					 || ' AND rt.organization_id = mmt.organization_id '
12553 					 || ' AND rt.transaction_type = ''DELIVER'''
12554 					 || ' AND rt.destination_type_code = ''INVENTORY'''
12555 					 || ' AND mmt.transaction_id = v.last_transaction_id '
12556 					 || ' AND mmt.organization_id = v.organization_id ';
12557 
12558 	END IF;
12559 	--bug 6633612
12560 
12561   -- NSRIVAST, INVCONV, Start
12562       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12563          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
12564       END IF ;
12565       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
12566          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
12567       END IF ;
12568    -- NSRIVAST, INVCONV, End
12569 
12570       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
12571         query_str  := query_str || ' AND v.project_id = :pr_id ';
12572         IF group_str IS NOT NULL THEN
12573            group_str := group_str || ' , v.project_id  ' ;
12574         END IF;
12575       END IF;
12576 
12577       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
12578         query_str  := query_str || ' AND v.task_id = :ta_id ';
12579         IF group_str IS NOT NULL THEN
12580            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
12581         END IF;
12582       END IF;
12583 
12584       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12585          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
12586       END IF;
12587 
12588       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12589          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
12590       END IF;
12591 
12592       --ER(3338592) Changes
12593       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
12594          query_str := query_str || ' AND v.item_description LIKE :item_description ';
12595       END IF;
12596 
12597       IF inv_mwb_globals.g_revision IS NOT NULL THEN
12598         query_str  := query_str || ' AND v.revision = :rev ';
12599         IF group_str IS NOT NULL THEN
12600            group_str := group_str || ' , v.revision  ' ;
12601         END IF;
12602       END IF;
12603 
12604       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
12605         query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
12606         IF group_str IS NOT NULL THEN
12607            group_str := group_str || ' , v.cost_group_id  ' ;
12608         END IF;
12609       END IF;
12610 
12611       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
12612         query_str  := query_str || ' AND v.lot_number = :lot_n ';
12613          IF group_str IS NOT NULL THEN
12614             group_str := group_str || ' , v.lot_number  ' ;
12615          END IF;
12616       END IF;
12617 
12618       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
12619         query_str  := query_str || ' AND v.lot_number >= :lot_f ';
12620       END IF;
12621 
12622       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
12623         query_str  := query_str || ' AND v.lot_number <= :lot_t ';
12624       END IF;
12625 
12626       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
12627         query_str  := query_str || ' AND v.serial_number = :serial_n ';
12628          IF group_str IS NOT NULL THEN
12629             group_str := group_str || ' , v.serial_number  ' ;
12630          END IF;
12631       END IF;
12632 
12633       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
12634         query_str  := query_str || ' AND v.serial_number >= :serial_f ';
12635       END IF;
12636 
12637       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
12638         query_str  := query_str || ' AND v.serial_number <= :serial_t ';
12639       END IF;
12640 
12641       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
12642         query_str  := query_str || ' AND v.unit_number = :un_id ';
12643          IF group_str IS NOT NULL THEN
12644             group_str := group_str || ' , v.unit_number  ' ;
12645          END IF;
12646       END IF;
12647 
12648       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
12649       -- from serial table (MSN)
12650       if (l_default_status_id is not null) then
12651          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12652            query_str  := query_str || 'AND v.serial_status_id = :st_id ';
12653          END IF;
12654       else
12655          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12656            query_str  := query_str || ' AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
12657            query_str  := query_str || ' v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
12658          END IF;
12659       end if;
12660 
12661          IF inv_mwb_globals.g_containerized = 1 THEN
12662            query_str  := query_str || 'AND v.lpn_id IS NULL ';
12663          ELSIF inv_mwb_globals.g_containerized = 2 THEN
12664            query_str  := query_str || 'AND v.lpn_id IS NOT NULL ';
12665          END IF;
12666 
12667 
12668       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
12669          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
12670          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
12671        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
12672          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
12673          query_str := query_str || ' AND  planning_organization_id in ';
12674          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
12675          query_str := query_str || '  where vendor_id = :vendor_id )';
12676       END IF;*/
12677 
12678       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
12679         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
12680         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
12681       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
12682         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
12683         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
12684       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
12685         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
12686       END IF;
12687 
12688       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
12689         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
12690         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
12691       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
12692         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
12693         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
12694       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
12695         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
12696       END IF;
12697 
12698       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12699          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
12700          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
12701          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
12702       END IF;
12703 
12704       IF (inv_mwb_globals.g_locator_controlled = 2) THEN
12705         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12706         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12707           --don't add the below locator id not null check
12708           NULL;
12709         ELSE
12710           query_str  := query_str || 'AND v.locator_id IS not NULL ';
12711         END IF;
12712       ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
12713         query_str  := query_str || 'AND v.locator_id IS NULL ';
12714       END IF;
12715 
12716       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
12717          --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12718          IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12719             query_str  := query_str || ' AND v.subinventory_code is null AND v.locator_id is null ';
12720      	   END IF;
12721          --Bug#3191526
12722       END IF;
12723 
12724       IF inv_mwb_globals.g_organization_id IS NOT NULL
12725       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12726         query_str  := query_str || 'AND v.organization_id = :org_id ';
12727       --Bug # 3411938
12728       ELSE
12729         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
12730         query_str  := query_str || ' FROM org_access_view oav ' ;
12731         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
12732         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
12733         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
12734       END IF;
12735 
12736       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
12737          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
12738       END IF;
12739 
12740       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
12741          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
12742       END IF;
12743 
12744       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12745         query_str := query_str || group_str || having_str ;
12746       ELSE
12747         query_str  := query_str || 'GROUP BY v.inventory_item_id, v.item ';
12748       END IF;
12749 
12750       query_str  := query_str || 'ORDER BY v.item ';
12751 
12752     -- Need to use both mtl_onhand_total_v and mtl_onhand_serial_v
12753     ELSIF(
12754           inv_mwb_globals.g_serial_from IS NULL
12755           AND inv_mwb_globals.g_serial_to IS NULL
12756           AND inv_mwb_globals.g_tree_serial_number IS NULL
12757           AND inv_mwb_globals.g_status_id IS NOT NULL
12758           AND inv_mwb_globals.g_unit_number IS NULL
12759           AND inv_mwb_globals.g_lpn_from IS NULL
12760           AND inv_mwb_globals.g_lpn_to IS NULL
12761           AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
12762           AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
12763          ) THEN
12764       query_str  := 'SELECT DISTINCT inventory_item_id, item from( ';
12765 
12766       IF (inv_mwb_globals.g_status_id IS NULL) THEN
12767         table_required  := ' mtl_onhand_total_mwb_v v ';
12768 --      ELSIF is_grade_t = TRUE THEN                           -- NSRIVAST, INVCONV
12769 --          table_required  := ' mtl_onhand_new_lpn_v mot ';   -- NSRIVAST, INVCONV
12770       ELSE
12771         table_required  := ' mtl_onhand_total_v v ';
12772       END IF;
12773 	--bug 6633612
12774 		IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
12775 			table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
12776 		END IF;
12777 	--bug 6633612
12778 
12779       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
12780         query_str  := query_str || 'SELECT v.inventory_item_id inventory_item_id, v.item item from ' || table_required;
12781         query_str  := query_str || 'WHERE 1=1 ';
12782       ELSE
12783         query_str  :=
12784               query_str
12785            || 'SELECT v.inventory_item_id inventory_item_id, v.item item from'
12786            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
12787            || inv_mwb_globals.g_tree_lot_attr_query
12788            || ') mln, mtl_onhand_total_v v ';
12789         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
12790  		--BUG 7556505
12791 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
12792 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
12793 	           END IF;
12794 		--BUG 7556505
12795       END IF;
12796 
12797       -- Bug #3539766 (Group By and Having Clause have been added)
12798       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12799         group_str := ' GROUP BY  v.organization_id  ';
12800       END IF;
12801 
12802       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
12803       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
12804         query_str  := query_str || 'AND v.subinventory_code = :sub ';
12805         IF group_str IS NOT NULL THEN
12806            group_str := group_str || ' , v.subinventory_code  ' ;
12807         END IF;
12808       END IF;
12809 
12810       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
12811       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
12812         query_str  := query_str || 'AND v.locator_id = :loc_id ';
12813         IF group_str IS NOT NULL THEN
12814            group_str := group_str || ' , v.locator_id  ' ;
12815         END IF;
12816       END IF;
12817 
12818       --bug 6633612
12819 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
12820 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
12821 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
12822 					 || ' AND rt.organization_id = mmt.organization_id '
12823 					 || ' AND rt.transaction_type = ''DELIVER'''
12824 					 || ' AND rt.destination_type_code = ''INVENTORY'''
12825 					 || ' AND mmt.transaction_id = v.create_transaction_id '
12826 					 || ' AND mmt.organization_id = v.organization_id ';
12827 
12828 	END IF;
12829 	--bug 6633612
12830 
12831   -- NSRIVAST, INVCONV, Start
12832       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
12833          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
12834       END IF ;
12835       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
12836          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
12837       END IF ;
12838    -- NSRIVAST, INVCONV, End
12839 
12840       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
12841         query_str  := query_str || ' AND v.project_id = :pr_id ';
12842         IF group_str IS NOT NULL THEN
12843            group_str := group_str || ' , v.project_id  ' ;
12844         END IF;
12845       END IF;
12846 
12847       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
12848         query_str  := query_str || ' AND v.task_id = :ta_id ';
12849         IF group_str IS NOT NULL THEN
12850            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
12851         END IF;
12852       END IF;
12853 
12854       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
12855          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
12856       END IF;
12857 
12858       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12859          group_str := group_str || ' ,v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
12860       END IF;
12861 
12862       --ER(3335892) Changes
12863       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
12864          query_str := query_str || ' AND v.item_description LIKE :item_description ';
12865       END IF;
12866 
12867       IF inv_mwb_globals.g_revision IS NOT NULL THEN
12868         query_str  := query_str || 'AND v.revision = :rev ';
12869         IF group_str IS NOT NULL THEN
12870            group_str := group_str || ' , v.revision  ' ;
12871         END IF;
12872       END IF;
12873 
12874       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
12875         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
12876         IF group_str IS NOT NULL THEN
12877            group_str := group_str || ' , v.cost_group_id  ' ;
12878         END IF;
12879       END IF;
12880 
12881       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
12882         query_str  := query_str || 'AND v.lot_number = :lot_n ';
12883          IF group_str IS NOT NULL THEN
12884             group_str := group_str || ' , v.lot_number  ' ;
12885           END IF;
12886       END IF;
12887 
12888       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
12889         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
12890       END IF;
12891 
12892       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
12893         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
12894       END IF;
12895 
12896       -- Onhand Material Status Support: Status needs to be checked from the onhand table
12897       if (l_default_status_id is not null) then
12898          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12899            query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
12900          END IF;
12901       else
12902          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
12903            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or ';
12904            query_str  := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
12905          END IF;
12906       end if;
12907 
12908       IF inv_mwb_globals.g_containerized = 1 THEN
12909         query_str  := query_str || 'AND v.lpn_id IS NOT NULL ';
12910       ELSIF inv_mwb_globals.g_containerized = 2 THEN
12911         query_str  := query_str || 'AND v.lpn_id IS NULL ';
12912       END IF;
12913 
12914       /*query_str := query_str || ' AND eixsts ';
12915               || ' ( select null from mtl_system_items msi WHERE ';
12916               || ' moq.organization_id = msi.organization_id and ';
12917               || ' moq.inventory_item_id =  msi.inventory_item_id) and ';
12918               || ' serial_number_control_code in (1,6) ) ';*/
12919 
12920       --query_str  := query_str || 'AND serial_number_control_code in (1,6) ';
12921       query_str  := query_str || 'AND v.item_serial_control in (1,6) ';
12922 
12923       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
12924          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
12925          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
12926        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
12927          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
12928          query_str := query_str || ' AND  planning_organization_id in ';
12929          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
12930          query_str := query_str || '  where vendor_id = :vendor_id )';
12931       END IF;*/
12932 
12933       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
12934         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
12935         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
12936       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
12937         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
12938         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
12939       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
12940         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
12941       END IF;
12942 
12943       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
12944         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
12945         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
12946       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
12947         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
12948         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
12949       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
12950         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
12951       END IF;
12952 
12953       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12954          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
12955          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
12956          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
12957       END IF;
12958 
12959       IF (inv_mwb_globals.g_locator_controlled = 2) THEN
12960         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
12961         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
12962           --don't add the below locator id not null check
12963           NULL;
12964         ELSE
12965           query_str  := query_str || 'AND v.locator_id IS not NULL ';
12966         END IF;
12967       ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
12968         query_str  := query_str || 'AND v.locator_id IS NULL ';
12969       END IF;
12970 
12971       IF inv_mwb_globals.g_organization_id IS NOT NULL
12972       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
12973         query_str  := query_str || 'AND v.organization_id = :org_id ';
12974       ELSE
12975         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
12976         query_str  := query_str || ' FROM org_access_view oav ' ;
12977         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
12978         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
12979         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
12980       END IF;
12981 
12982       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
12983          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
12984       END IF;
12985 
12986       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
12987          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
12988       END IF;
12989 
12990       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
12991         query_str := query_str || group_str || having_str ;
12992       ELSE
12993         query_str  := query_str || 'GROUP BY v.inventory_item_id, v.item ';
12994       END IF;
12995 
12996       query_str  := query_str || 'UNION ';
12997 
12998       --Reinitializing the variable
12999       having_str := ' HAVING 1=1 ' ;
13000 
13001       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
13002          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
13003         query_str  := query_str || 'SELECT v.inventory_item_id inventory_item_id, v.item item from mtl_onhand_serial_v v ';
13004         query_str  := query_str || 'WHERE 1=1 ';
13005       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
13006             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
13007         query_str  :=
13008               query_str
13009            || 'SELECT v.inventory_item_id inventory_item_id, v.item item from'
13010            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
13011            || inv_mwb_globals.g_tree_lot_attr_query
13012            || ') mln, mtl_onhand_serial_v v ';
13013         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
13014  		--BUG 7556505
13015 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
13016 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
13017 	           END IF;
13018 		--BUG 7556505
13019       END IF;
13020 
13021       --Bug #3539766 (Group By and Having clause have been added)
13022       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13023         group_str := ' GROUP BY  v.organization_id  ';
13024       END IF;
13025 
13026       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
13027       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
13028         query_str  := query_str || 'AND v.subinventory_code = :sub ';
13029         IF group_str IS NOT NULL THEN
13030            group_str := group_str || ' , v.subinventory_code  ' ;
13031         END IF;
13032       END IF;
13033 
13034       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
13035       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
13036         query_str  := query_str || 'AND v.locator_id = :loc_id ';
13037         IF group_str IS NOT NULL THEN
13038            group_str := group_str || ' , v.locator_id  ' ;
13039         END IF;
13040       END IF;
13041 
13042       --bug 6633612
13043 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
13044 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
13045 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
13046 					 || ' AND rt.organization_id = mmt.organization_id '
13047 					 || ' AND rt.transaction_type = ''DELIVER'''
13048 					 || ' AND rt.destination_type_code = ''INVENTORY'''
13049 					 || ' AND mmt.transaction_id = v.last_transaction_id '
13050 					 || ' AND mmt.organization_id = v.organization_id ';
13051 
13052 	END IF;
13053 	--bug 6633612
13054 
13055       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
13056         query_str  := query_str || ' AND v.project_id = :pr_id ';
13057         IF group_str IS NOT NULL THEN
13058            group_str := group_str || ' , v.project_id  ' ;
13059         END IF;
13060       END IF;
13061 
13062       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
13063         query_str  := query_str || ' AND v.task_id = :ta_id ';
13064         IF group_str IS NOT NULL THEN
13065            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
13066         END IF;
13067       END IF;
13068 
13069       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13070          query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
13071       END IF;
13072 
13073       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13074          group_str := group_str || ' , v.inventory_item_id, v.item_description, v.item ,v.uom ' ;
13075       END IF;
13076 
13077       --ER(3338592) Changes
13078       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
13079          query_str := query_str || ' AND v.item_description LIKE :item_description ';
13080       END IF;
13081 
13082       IF inv_mwb_globals.g_revision IS NOT NULL THEN
13083         query_str  := query_str || 'AND v.revision = :rev ';
13084         IF group_str IS NOT NULL THEN
13085            group_str := group_str || ' , v.revision  ' ;
13086         END IF;
13087       END IF;
13088 
13089       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13090         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
13091         IF group_str IS NOT NULL THEN
13092            group_str := group_str || ' , v.cost_group_id  ' ;
13093         END IF;
13094       END IF;
13095 
13096       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
13097         query_str  := query_str || 'AND v.lot_number = :lot_n ';
13098         IF group_str IS NOT NULL THEN
13099            group_str := group_str || ' , v.lot_number  ' ;
13100         END IF;
13101       END IF;
13102 
13103       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
13104         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
13105       END IF;
13106 
13107       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
13108         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
13109       END IF;
13110 
13111       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
13112         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
13113       END IF;
13114 
13115       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
13116         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
13117       END IF;
13118 
13119       -- Onhand Material Status Support: Status needs to be checked from the serial table (MSN)
13120       if (l_default_status_id is not null) then
13121          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
13122            query_str  := query_str || 'AND v.serial_status_id = :st_id ';
13123          END IF;
13124       else
13125          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
13126            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
13127            query_str  := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
13128          END IF;
13129       end if;
13130 
13131       /*IF(inv_mwb_globals.g_vendor_id IS NULL AND inv_mwb_globals.g_site_id IS NULL) THEN
13132         IF inv_mwb_globals.g_containerized = 1 THEN
13133           query_str := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
13134         ELSIF inv_mwb_globals.g_containerized = 2 THEN
13135           query_str := query_str || 'AND containerized_flag = 1 ';
13136         END IF;
13137       END IF;*/
13138 
13139       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
13140         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
13141         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
13142       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
13143         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
13144         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
13145       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
13146         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
13147       END IF;
13148 
13149       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
13150         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
13151         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
13152       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
13153         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
13154         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
13155       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
13156         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
13157       END IF;
13158 
13159       IF (inv_mwb_globals.g_locator_controlled = 2) THEN
13160         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
13161         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
13162           --don't add the below locator id not null check
13163           NULL;
13164         ELSE
13165           query_str  := query_str || 'AND v.locator_id IS not NULL ';
13166         END IF;
13167       ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
13168         query_str  := query_str || 'AND v.locator_id IS NULL ';
13169       END IF;
13170 
13171       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13172          group_str := group_str || ' , v.planning_organization_id, v.planning_tp_type ';
13173          group_str := group_str || ' , v.owning_organization_id, v.owning_tp_type ';
13174          group_str := group_str || ' , v.item_lot_control, v.item_serial_control ';
13175       END IF;
13176 
13177       IF inv_mwb_globals.g_organization_id IS NOT NULL
13178       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
13179         query_str  := query_str || 'AND v.organization_id = :org_id ';
13180       --Bug # 3411938
13181       ELSE
13182         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
13183         query_str  := query_str || ' FROM org_access_view oav ' ;
13184         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
13185         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
13186         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
13187       END IF;
13188 
13189       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
13190          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
13191       END IF;
13192 
13193       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
13194          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
13195       END IF;
13196 
13197       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13198         query_str := query_str || group_str || having_str ;
13199       ELSE
13200         query_str  := query_str || ' GROUP BY v.inventory_item_id, v.item ';
13201       END IF;
13202 
13203       query_str  := query_str || ') GROUP BY inventory_item_id, item ';
13204       query_str  := query_str || ' ORDER BY item ';
13205 
13206     ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
13207           OR inv_mwb_globals.g_lpn_to IS NOT NULL
13208           OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
13209           OR(NVL(inv_mwb_globals.g_prepacked, 1) <> 1)) THEN
13210       IF (inv_mwb_globals.g_status_id IS NULL) THEN
13211         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
13212           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
13213         ELSIF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
13214           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
13215           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
13216             table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
13217           END IF;                                          -- NSRIVAST, INVCONV
13218         ELSE
13219           table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
13220           IF is_grade_t = TRUE THEN                        -- %NSRIVAST, INVCONV
13221             table_required  := ' mtl_onhand_new_lpn_v mol ';   -- %NSRIVAST, INVCONV
13222           END IF;
13223         END IF;
13224       ELSE
13225         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
13226           table_required  := ' mtl_onhand_lpn_v mol ';
13227           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
13228             table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
13229           END IF;                                          -- NSRIVAST, INVCONV
13230         ELSE
13231           table_required  := ' mtl_onhand_new_lpn_v mol ';
13232         END IF;
13233       END IF;
13234 
13235       query_str  := 'SELECT DISTINCT inventory_item_id, item ';
13236       query_str  := query_str || 'FROM ' || table_required;
13237 
13238       IF (inv_mwb_globals.g_lpn_from IS NOT NULL
13239           OR inv_mwb_globals.g_lpn_to IS NOT NULL)
13240          AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
13241         query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
13242         query_str  := query_str || ' WHERE 1=1 ';
13243 
13244         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
13245           --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
13246           IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
13247             query_str  := query_str || ' AND wlpn.subinventory_code is null AND wlpn.locator_id is null ';
13248           END IF;
13249           --Bug#3191526
13250           query_str  := query_str || ' AND lpn_context = 3 ';
13251         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
13252           query_str  := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
13253         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
13254           query_str  := query_str || 'AND lpn_context = 1 ';
13255         ELSIF inv_mwb_globals.g_prepacked <> 1
13256               AND inv_mwb_globals.g_prepacked <> 999 THEN
13257           query_str  := query_str || 'AND lpn_context = :prepacked ';
13258         END IF;
13259 
13260       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
13261       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
13262           query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
13263        END IF;
13264 
13265     -- NSRIVAST, INVCONV, Start
13266       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
13267          query_str := query_str || ' AND grade_code = :grade_f ' ;
13268       END IF ;
13269       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
13270          query_str := query_str || ' AND grade_code = :grade_c ' ;
13271       END IF ;
13272    -- NSRIVAST, INVCONV, End
13273 
13274       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
13275       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
13276           query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
13277         END IF;
13278 
13279       IF inv_mwb_globals.g_organization_id IS NOT NULL
13280       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
13281           query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
13282       END IF;
13283 
13284 
13285 
13286       IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
13287          query_str  := query_str || ' and license_plate_number = :lpn_f ';
13288       ELSE
13289 	IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
13290             query_str  := query_str || ' and license_plate_number >= :lpn_f ';
13291 	END IF;
13292 	IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
13293            query_str  := query_str || ' and license_plate_number >= :lpn_t ';
13294 	END IF;
13295       END IF;
13296 
13297 
13298         query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
13299       END IF;
13300 
13301       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
13302          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
13303         query_str  := query_str || 'WHERE 1=1 ';
13304       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
13305             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
13306         query_str  :=
13307                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
13308                      || ') msn ';
13309         query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
13310       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
13311             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
13312         query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
13313         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
13314  		--BUG 7556505
13315 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
13316 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
13317 	           END IF;
13318 		--BUG 7556505
13319       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
13320             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
13321         query_str  :=
13322               query_str
13323            || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
13324            || inv_mwb_globals.g_tree_lot_attr_query
13325            || ') mln '
13326            || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
13327            || inv_mwb_globals.g_tree_serial_attr_query
13328            || ') msn ';
13329         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
13330  		--BUG 7556505
13331 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
13332 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
13333 	           END IF;
13334 		--BUG 7556505
13335 	query_str  := query_str || 'AND msn.serial_num = serial_number ';
13336       END IF;
13337 
13338       --Bug # 3411938 (Group By and Having clause have been added)
13339       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13340         group_str := ' GROUP BY  organization_id  ';
13341       END IF;
13342 
13343       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
13344       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
13345         query_str  := query_str || 'AND subinventory_code = :sub ';
13346         IF group_str IS NOT NULL THEN
13347            group_str := group_str || ' , subinventory_code  ' ;
13348         END IF;
13349       END IF;
13350 
13351       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
13352       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
13353         query_str  := query_str || 'AND locator_id = :loc_id ';
13354         IF group_str IS NOT NULL THEN
13355            group_str := group_str || ' , locator_id  ' ;
13356         END IF;
13357       END IF;
13358 
13359       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
13360         query_str  := query_str || ' AND project_id = :pr_id ';
13361         IF group_str IS NOT NULL THEN
13362            group_str := group_str || ' , project_id  ' ;
13363         END IF;
13364       END IF;
13365 
13366       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
13367         query_str  := query_str || ' AND task_id = :ta_id ';
13368         IF group_str IS NOT NULL THEN
13369            group_str := group_str || ' , inv_mwb_globals.g_task_id  ' ;
13370         END IF;
13371       END IF;
13372 
13373       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13374          query_str  := query_str || 'AND inventory_item_id = :item_id ';
13375       END IF;
13376 
13377       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13378          group_str := group_str || ' , inventory_item_id, item_description, item ,uom ' ;
13379       END IF;
13380 
13381       --ER(3338592) Changes
13382       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
13383          query_str := query_str || ' AND item_description LIKE :item_description ';
13384       END IF;
13385 
13386     -- %NSRIVAST, INVCONV, Start
13387       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
13388          query_str := query_str || ' AND grade_code = :grade_f ' ;
13389       END IF ;
13390      IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
13391          query_str := query_str || ' AND grade_code = :grade_c ' ;
13392       END IF ;
13393    -- %NSRIVAST, INVCONV, End
13394 
13395       IF inv_mwb_globals.g_revision IS NOT NULL THEN
13396         query_str  := query_str || 'AND revision = :rev ';
13397         IF group_str IS NOT NULL THEN
13398            group_str := group_str || ' , revision  ' ;
13399         END IF;
13400       END IF;
13401 
13402       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13403         query_str  := query_str || 'AND cost_group_id = :cg_id ';
13404         IF group_str IS NOT NULL THEN
13405            group_str := group_str || ' , cost_group_id  ' ;
13406         END IF;
13407       END IF;
13408 
13409       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
13410         query_str  := query_str || 'AND lot_number = :lot_n ';
13411         IF group_str IS NOT NULL THEN
13412            group_str := group_str || ' , lot_number  ' ;
13413         END IF;
13414       END IF;
13415 
13416       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
13417         query_str  := query_str || 'AND lot_number >= :lot_f ';
13418       END IF;
13419 
13420       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
13421         query_str  := query_str || 'AND lot_number <= :lot_t ';
13422       END IF;
13423 
13424       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
13425         query_str  := query_str || 'AND serial_number = :serial_n ';
13426          IF group_str IS NOT NULL THEN
13427             group_str := group_str || ' , serial_number  ' ;
13428           END IF;
13429       END IF;
13430 
13431       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
13432         query_str  := query_str || 'AND serial_number >= :serial_f ';
13433       END IF;
13434 
13435       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
13436         query_str  := query_str || 'AND serial_number <= :serial_t ';
13437       END IF;
13438 
13439       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
13440         query_str  := query_str || ' AND unit_number = :un_id ';
13441          IF group_str IS NOT NULL THEN
13442             group_str := group_str || ' , unit_number  ' ;
13443           END IF;
13444       END IF;
13445 
13446       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13447         query_str  := query_str || 'AND MOL.lpn_id = :plpn_id ';
13448          IF group_str IS NOT NULL THEN
13449             group_str := group_str || ' , MOL.lpn_id ' ;
13450           END IF;
13451       END IF;
13452 
13453       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
13454         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
13455         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
13456           query_str  := query_str || ' AND mol.subinventory_code is null AND mol.locator_id is null ';
13457         END IF;
13458         --Bug#3191526
13459         query_str  := query_str || ' AND lpn_context = 3 ';
13460       ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
13461         query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 ) ';
13462       ELSIF inv_mwb_globals.g_prepacked = 1 THEN
13463         query_str  := query_str || 'AND lpn_context = 1 ';
13464       ELSIF inv_mwb_globals.g_prepacked <> 1
13465             AND inv_mwb_globals.g_prepacked <> 999 THEN
13466         query_str  := query_str || 'AND lpn_context = :prepacked ';
13467       END IF;
13468 
13469 /*
13470      IF inv_mwb_globals.g_lpn_from IS NOT NULL
13471      OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
13472         query_str  := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
13473       END IF;
13474 */
13475       /*LPN Status Project */
13476       IF l_default_status_id IS NOT NULL THEN
13477         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
13478 	  query_str  := query_str || ' AND onhand_status_id = :st_id ';
13479         END IF;
13480       ELSE
13481         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
13482           query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
13483           query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id OR :st_id IS NULL) ';
13484         END IF;
13485       END IF;
13486       /* End of fix for LPN Status Project */
13487 
13488       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
13489          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
13490          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
13491        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
13492          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
13493          query_str := query_str || ' AND  planning_organization_id in ';
13494          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
13495          query_str := query_str || '  where vendor_id = :vendor_id )';
13496       END IF;*/
13497 
13498       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
13499         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
13500         query_str  := query_str || ' AND planning_tp_type = 2 ';
13501       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
13502         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
13503         query_str  := query_str || ' AND planning_tp_type = 1 ';
13504       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
13505         query_str  := query_str || ' AND planning_tp_type = 1 ';
13506       END IF;
13507 
13508       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
13509         query_str  := query_str || ' AND owning_organization_id = :own_org ';
13510         query_str  := query_str || ' AND owning_tp_type = 2 ';
13511       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
13512         query_str  := query_str || ' AND owning_organization_id = :own_org ';
13513         query_str  := query_str || ' AND owning_tp_type = 1 ';
13514       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
13515         query_str  := query_str || ' AND owning_tp_type = 1 ';
13516       END IF;
13517 
13518       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13519          group_str := group_str || ' , planning_organization_id, planning_tp_type ';
13520          group_str := group_str || ' , owning_organization_id, owning_tp_type ';
13521          group_str := group_str || ' , item_lot_control, item_serial_control ';
13522       END IF;
13523 
13524       IF (inv_mwb_globals.g_locator_controlled = 2) THEN
13525         --Bug#3191526 add the LPNs which don't have any sub/loc association directly after org
13526         IF inv_mwb_globals.g_inserted_under_org = 'Y' OR inv_mwb_globals.g_inserted_under_org = 'y' THEN
13527           --don't add the below locator id not null check
13528           NULL;
13529         ELSE
13530           query_str  := query_str || 'AND locator_id IS not NULL ';
13531         END IF;
13532       ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
13533         query_str  := query_str || 'AND locator_id IS NULL ';
13534       END IF;
13535 
13536 
13537       IF inv_mwb_globals.g_organization_id IS NOT NULL
13538       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
13539         query_str  := query_str || 'AND organization_id = :org_id ';
13540       ELSE
13541         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
13542         query_str  := query_str || ' FROM org_access_view oav ' ;
13543         query_str  := query_str || ' WHERE oav.organization_id   = mol.organization_id ' ;
13544         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
13545         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
13546       END IF;
13547 
13548       IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
13549          having_str := having_str || ' AND sum(on_hand) >= :qty_from ';
13550       END IF;
13551 
13552       IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
13553          having_str := having_str || ' AND sum(on_hand) <= :qty_to ';
13554       END IF;
13555 
13556       IF inv_mwb_globals.g_qty_from IS NOT NULL OR inv_mwb_globals.g_qty_to IS NOT NULL THEN
13557         query_str := query_str || group_str || having_str ;
13558       ELSE
13559         query_str  := query_str || ' GROUP BY inventory_item_id, item ';
13560       END IF;
13561 
13562       query_str  := query_str || ' ORDER BY item ';
13563 
13564     END IF;
13565 
13566 
13567     -- Enable this during debugging
13568     inv_trx_util_pub.trace(query_str, 'Material Workbench - Add Items : ', 9);
13569     --trace1(query_str, 'add_items', 9);
13570     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13571     inv_mwb_globals.g_last_query := query_str;
13572     query_hdl       := DBMS_SQL.open_cursor;
13573     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
13574 
13575 
13576    IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
13577     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -1 ');
13578       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
13579    ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
13580     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -2 ');
13581       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
13582    END IF;
13583     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' After -1 ');
13584     IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
13585     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -3 ');
13586       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
13587     ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
13588     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -4 ');
13589       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
13590     END IF;
13591 
13592     IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
13593     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -5 ');
13594       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
13595     ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
13596     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -6 ');
13597       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
13598     END IF;
13599 
13600     IF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
13601     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -7 ');
13602       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
13603     END IF;
13604 
13605     IF inv_mwb_globals.g_revision IS NOT NULL THEN
13606     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -8 ');
13607       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
13608     END IF;
13609 
13610     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
13611     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -10 ');
13612       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
13613     END IF;
13614 
13615     --BUG 7556505
13616     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
13617     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -11.11 ');
13618       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
13619     END IF;
13620     --BUG 7556505
13621 
13622     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
13623     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -11 ');
13624       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
13625     END IF;
13626 
13627     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
13628     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -12 ');
13629       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
13630     END IF;
13631 
13632     IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
13633     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -13 ');
13634       DBMS_SQL.bind_variable(query_hdl, 'lot_n', inv_mwb_globals.g_tree_lot_number);
13635     END IF;
13636 
13637 -- NSRIVAST, INVCONV, Start
13638     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
13639     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -14');
13640       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
13641     END IF;
13642     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
13643     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -15 ');
13644       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
13645     END IF;
13646 -- NSRIVAST, INVCONV, End
13647 
13648     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
13649     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -16 ');
13650       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
13651     END IF;
13652 
13653     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
13654     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -17');
13655       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
13656     END IF;
13657 
13658     IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
13659     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -18 ');
13660       DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
13661     END IF;
13662 
13663     IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
13664        IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
13665        inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -19 ');
13666           dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
13667        ELSE
13668          IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
13669        inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -20 ');
13670         dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
13671          END IF;
13672          IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
13673        inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -21 ');
13674           dbms_sql.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
13675          END IF;
13676        END IF;
13677     END IF;
13678     IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13679     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -22');
13680       DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
13681     END IF;
13682 
13683     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
13684     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -23 ');
13685       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
13686     END IF;
13687 
13688     IF inv_mwb_globals.g_prepacked <> 1
13689        AND inv_mwb_globals.g_prepacked <> 999
13690        AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
13691     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -24 ');
13692       DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
13693     END IF;
13694 
13695     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
13696       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
13697     END IF;
13698 
13699     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
13700       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
13701     END IF;
13702 
13703     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
13704       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
13705     END IF;
13706 
13707     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
13708       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
13709     END IF;
13710 
13711     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
13712        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
13713      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
13714        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
13715     END IF;*/
13716     IF (inv_mwb_globals.g_owning_qry_mode = 4)
13717        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
13718       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
13719     END IF;
13720 
13721     IF (inv_mwb_globals.g_planning_query_mode = 4)
13722        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
13723       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
13724     END IF;
13725 
13726     --bug 6633612
13727     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
13728       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
13729     END IF;
13730     --bug 6633612
13731 
13732     --ER(3338592) Changes
13733     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
13734     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' -25 ');
13735       dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
13736     END IF;
13737 
13738     --Bug #3411938
13739     IF inv_mwb_globals.g_organization_id IS NULL
13740     AND inv_mwb_globals.g_tree_organization_id IS NULL THEN
13741        IF inv_mwb_globals.g_responsibility_id  IS NOT NULL THEN
13742           dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
13743        END IF;
13744 
13745        IF inv_mwb_globals.g_resp_application_id  IS NOT NULL THEN
13746           dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
13747        END IF;
13748     END IF;
13749 
13750 
13751    --Bug # 3539766
13752    IF inv_mwb_globals.g_qty_from IS NOT NULL THEN
13753      dbms_sql.bind_variable(query_hdl, 'qty_from', inv_mwb_globals.g_qty_from);
13754    END IF;
13755 
13756    IF inv_mwb_globals.g_qty_to IS NOT NULL THEN
13757       dbms_sql.bind_variable(query_hdl, 'qty_to', inv_mwb_globals.g_qty_to);
13758    END IF;
13759 
13760 
13761     DBMS_SQL.define_column(query_hdl, 1, item_id);
13762     DBMS_SQL.define_column(query_hdl, 2, item, 40);
13763     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
13764 
13765     LOOP
13766       -- fetch a row
13767       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
13768         -- fetch columns from the row
13769         DBMS_SQL.column_value(query_hdl, 1, item_id);
13770         DBMS_SQL.column_value(query_hdl, 2, item);
13771 
13772         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
13773           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
13774           x_node_tbl(i).DEPTH  := 1;
13775           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
13776           x_node_tbl(i).icon   := 'inv_item';
13777           x_node_tbl(i).VALUE  := TO_CHAR(item_id);
13778           x_node_tbl(i).TYPE   := 'ITEM';
13779           i                    := i + 1;
13780         END IF;
13781 
13782         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
13783         j  := j + 1;
13784       ELSE
13785         EXIT;
13786       END IF;
13787     END LOOP;
13788 
13789     DBMS_SQL.close_cursor(query_hdl); -- close cursor
13790     x_node_value    := j;
13791     x_tbl_index     := i;
13792   EXCEPTION
13793     WHEN NO_DATA_FOUND THEN
13794       NULL;
13795     WHEN OTHERS THEN
13796       RAISE;
13797   END add_items;
13798 
13799   PROCEDURE add_revs(
13800     x_node_value           IN OUT NOCOPY  NUMBER
13801   , x_node_tbl             IN OUT NOCOPY  fnd_apptree.node_tbl_type
13802   , x_tbl_index            IN OUT NOCOPY  NUMBER
13803   ) IS
13804        query_str           VARCHAR2(10000);
13805        query_hdl           NUMBER;
13806        rows_processed      NUMBER;
13807        item                mtl_system_items_kfv.concatenated_segments%TYPE;
13808        rev                 mtl_onhand_quantities.revision%TYPE;
13809        rev_control         NUMBER;
13810        i                   NUMBER   := x_tbl_index;
13811        j                   NUMBER   := x_node_value;
13812        table_required      VARCHAR2(300);
13813        is_grade_t          BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
13814        select_from_str     VARCHAR2(1000);
13815        from_str            VARCHAR2(1000);
13816        where_str           VARCHAR2(3000);
13817        lpn_from_id         wms_license_plate_numbers.lpn_id%type;
13818        lpn_to_id           wms_license_plate_numbers.lpn_id%type;
13819        l_item_id           mtl_system_items_kfv.inventory_item_id%TYPE;			-- Bug 6350236
13820 
13821        l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_REVS';
13822        l_default_status_id NUMBER; -- Onhand Material Status Support
13823    BEGIN
13824       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
13825 
13826       -- Onhand Material Status Support
13827       if (inv_mwb_globals.g_organization_id is not null) then
13828          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
13829            l_default_status_id :=  inv_cache.org_rec.default_status_id;
13830          end if;
13831       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
13832          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
13833            l_default_status_id :=  inv_cache.org_rec.default_status_id;
13834          end if;
13835       end if;
13836 
13837       IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN -- If add_item called from node_expanded of inbound lpn number.
13838 
13839          IF (inv_mwb_globals.g_organization_id IS NOT NULL
13840          OR inv_mwb_globals.g_organization_id IS NOT NULL)
13841          AND (inv_mwb_globals.g_inventory_item_id IS NOT NULL
13842          OR inv_mwb_globals.g_tree_item_id IS NOT NULL) THEN
13843             SELECT revision_qty_control_code
13844               INTO rev_control
13845               FROM mtl_system_items
13846              WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id
13847                                        , inv_mwb_globals.g_organization_id)
13848                AND inventory_item_id = NVL(inv_mwb_globals.g_tree_item_id
13849                                          , inv_mwb_globals.g_inventory_item_id);
13850 
13851          IF rev_control = 1 THEN
13852             inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Not revision controlled, returning' );
13853             RETURN;
13854          END IF;
13855       END IF;
13856 
13857 
13858       select_from_str :=
13859          ' SELECT DISTINCT rsl.item_revision
13860                 , msik.concatenated_segments
13861 		, msik.inventory_item_id				-- Bug 6350236
13862              FROM rcv_shipment_lines rsl
13863                 , mtl_system_items_kfv msik ';
13864 
13865 
13866       where_str :=
13867          ' WHERE 1 = 1
13868              AND rsl.item_id = msik.inventory_item_id
13869              AND msik.organization_id = rsl.to_organization_id
13870              AND rsl.to_organization_id = :to_org_id
13871              AND rsl.shipment_header_id = :shipment_header_id
13872              AND rsl.item_id = :item_id ';
13873 
13874 
13875       IF inv_mwb_globals.g_serial_from IS NOT NULL
13876       OR inv_mwb_globals.g_serial_to IS NOT NULL THEN
13877          select_from_str := select_from_str || ' , rcv_serials_supply rss ';
13878          where_str := where_str || ' AND rss.shipment_line_id = rsl.shipment_line_id  ';
13879       END IF;
13880 
13881       IF (inv_mwb_globals.g_lot_from is NOT NULL
13882       OR inv_mwb_globals.g_lot_to is NOT NULL)
13883       AND (inv_mwb_globals.g_serial_from IS NULL
13884       OR inv_mwb_globals.g_serial_to IS NULL) THEN
13885          select_from_str := select_from_str || ' , rcv_lots_supply rls ';
13886          where_str := where_str || ' AND rls.shipment_line_id = rsl.shipment_line_id  ';
13887       END IF;
13888 
13889       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13890          where_str := where_str || ' AND rsl.asn_lpn_id  = :lpn_from_id ';
13891       END IF;
13892 
13893       IF inv_mwb_globals.g_lot_from IS NOT NULL
13894       AND inv_mwb_globals.g_lot_to IS NOT NULL
13895       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
13896          where_str := where_str || ' AND rls.lot_num  = :lot_from ';
13897       END IF;
13898 
13899       IF inv_mwb_globals.g_lot_from IS NOT NULL
13900       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
13901          where_str := where_str || ' AND rls.lot_num  >= :lot_from ';
13902       END IF;
13903 
13904       IF inv_mwb_globals.g_lot_to IS NOT NULL
13905       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
13906          where_str := where_str || ' AND rls.lot_num  >= :lot_to ';
13907       END IF;
13908 
13909       IF inv_mwb_globals.g_serial_from IS NOT NULL
13910       AND inv_mwb_globals.g_serial_to IS NOT NULL
13911       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
13912          where_str := where_str || ' AND rss.serial_num  = :serial_from ';
13913       END IF;
13914 
13915       IF inv_mwb_globals.g_serial_from IS NOT NULL
13916       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
13917          where_str := where_str || ' AND rss.serial_num  >= :serial_from ';
13918       END IF;
13919 
13920       IF inv_mwb_globals.g_serial_to IS NOT NULL
13921       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
13922          where_str := where_str || ' AND rss.serial_num  <= :serial_to ';
13923       END IF;
13924 
13925       IF inv_mwb_globals.g_revision IS NOT NULL THEN
13926          where_str := where_str || ' AND rsl.item_revision  = :item_revision ';
13927       END IF;
13928 
13929 
13930       query_str := select_from_str || where_str;
13931 
13932       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
13933       inv_mwb_globals.g_last_query := query_str;
13934 
13935       query_hdl  := DBMS_SQL.open_cursor;
13936       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
13937 
13938       DBMS_SQL.bind_variable(query_hdl, 'to_org_id', NVL(inv_mwb_globals.g_organization_id
13939                                                        , inv_mwb_globals.g_tree_organization_id));
13940       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
13941       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
13942 
13943       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
13944          DBMS_SQL.bind_variable(query_hdl, 'lpn_from_id', inv_mwb_globals.g_tree_parent_lpn_id);
13945       END IF;
13946 
13947       IF inv_mwb_globals.g_lot_from IS NOT NULL
13948       AND inv_mwb_globals.g_lot_to IS NOT NULL
13949       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
13950          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
13951       END IF;
13952 
13953       IF inv_mwb_globals.g_lot_from IS NOT NULL
13954       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
13955          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
13956       END IF;
13957 
13958       IF inv_mwb_globals.g_lot_to IS NOT NULL
13959       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
13960          DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
13961       END IF;
13962 
13963       IF inv_mwb_globals.g_serial_from IS NOT NULL
13964       AND inv_mwb_globals.g_serial_to IS NOT NULL
13965       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
13966          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
13967       END IF;
13968 
13969       IF inv_mwb_globals.g_serial_from IS NOT NULL
13970       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
13971          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
13972       END IF;
13973 
13974       IF inv_mwb_globals.g_serial_to IS NOT NULL
13975       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
13976          DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
13977       END IF;
13978 
13979       IF inv_mwb_globals.g_revision IS NOT NULL THEN
13980          DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_revision);
13981       END IF;
13982 
13983       DBMS_SQL.define_column(query_hdl, 1, rev, 100);
13984       DBMS_SQL.define_column(query_hdl, 2, item, 240);
13985       DBMS_SQL.define_column(query_hdl, 3, l_item_id);				-- Bug 6350236
13986 
13987       BEGIN
13988          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
13989       EXCEPTION
13990          WHEN NO_DATA_FOUND THEN
13991          NULL;
13992          RETURN;
13993       WHEN OTHERS THEN
13994          RAISE;
13995       END;
13996 
13997 
13998       LOOP
13999          -- fetch a row
14000          IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
14001          -- fetch columns from the row
14002             DBMS_SQL.column_value(query_hdl, 1, rev);
14003             DBMS_SQL.column_value(query_hdl, 2, item);
14004 	    DBMS_SQL.column_value(query_hdl, 3, l_item_id);			-- Bug 6350236
14005 
14006             IF j >= inv_mwb_globals.g_tree_node_low_value AND
14007             rev IS NOT NULL THEN
14008                x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
14009                x_node_tbl(i).DEPTH  := 1;
14010                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
14011                x_node_tbl(i).icon   := 'inv_revi';
14012                x_node_tbl(i).VALUE  := rev;
14013                x_node_tbl(i).TYPE   := 'REV';
14014                i                    := i + 1;
14015             END IF;
14016 
14017             EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
14018             j  := j + 1;
14019          ELSE
14020             EXIT;
14021          END IF;
14022       END LOOP;
14023 
14024 
14025       DBMS_SQL.close_cursor(query_hdl); -- close cursor
14026       x_node_value    := j;
14027       x_tbl_index     := i;
14028 
14029       RETURN;
14030    END IF;
14031 
14032 -- For the receiving and onhand
14033 -- NSRIVAST, INVCONV, Start
14034 
14035 
14036      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
14037           is_grade_t     := TRUE ;
14038      END IF ;
14039 -- NSRIVAST, INVCONV, End
14040     -- Exit out of the procedure if the item is not revision controlled
14041     IF (inv_mwb_globals.g_organization_id IS NOT NULL
14042        OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
14043        AND (inv_mwb_globals.g_inventory_item_id IS NOT NULL
14044             OR inv_mwb_globals.g_tree_item_id IS NOT NULL) THEN
14045 
14046       SELECT revision_qty_control_code
14047         INTO rev_control
14048         FROM mtl_system_items
14049        WHERE organization_id = inv_mwb_globals.g_tree_organization_id
14050          AND inventory_item_id = inv_mwb_globals.g_tree_item_id;
14051 
14052       IF rev_control = 1 THEN
14053         RETURN;
14054       END IF;
14055     END IF;
14056 
14057     IF (
14058         inv_mwb_globals.g_serial_from IS NULL
14059         AND inv_mwb_globals.g_serial_to IS NULL
14060         AND inv_mwb_globals.g_tree_serial_number IS NULL
14061         AND inv_mwb_globals.g_status_id IS NULL
14062         AND inv_mwb_globals.g_lpn_from IS NULL
14063         AND inv_mwb_globals.g_lpn_to IS NULL
14064         AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
14065         AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
14066         AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
14067        ) THEN
14068       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14069         table_required  := ' mtl_rcv_mwb_onhand_v v ';
14070       ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
14071         table_required  := ' mtl_onhand_total_mwb_v v ';
14072            IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
14073               table_required  := ' mtl_onhand_total_v v ';  -- NSRIVAST, INVCONV
14074            END IF;
14075       ELSE
14076         table_required  := ' mtl_onhand_total_v v ';
14077       END IF;
14078        --bug 6633612
14079 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14080 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
14081 	END IF;
14082 	--bug 6633612
14083 
14084       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
14085         query_str  := query_str || 'SELECT v.item, v.inventory_item_id, v.revision from ' || table_required;		-- Bug 6350236
14086         query_str  := query_str || 'WHERE 1=1 ';
14087       ELSE
14088         query_str  :=
14089               query_str
14090            || 'SELECT v.item, v.inventory_item_id, v.revision from'							-- Bug 6350236
14091            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14092            || inv_mwb_globals.g_tree_lot_attr_query
14093            || ') mln, '
14094            || table_required;
14095         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
14096  		--BUG 7556505
14097 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14098 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14099 	           END IF;
14100 		--BUG 7556505
14101       END IF;
14102 
14103       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
14104       -- from onhand table (MOQD)
14105       if (l_default_status_id is not null) then
14106          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14107            query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
14108          END IF;
14109       else
14110          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14111            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id OR ';
14112            query_str  := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
14113          END IF;
14114       end if;
14115 
14116       --bug 6633612
14117 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14118 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
14119 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
14120 					 || ' AND rt.organization_id = mmt.organization_id '
14121 					 || ' AND rt.transaction_type = ''DELIVER'''
14122 					 || ' AND rt.destination_type_code = ''INVENTORY'''
14123 					 || ' AND mmt.transaction_id = v.create_transaction_id '
14124 					 || ' AND mmt.organization_id = v.organization_id ';
14125 
14126 	END IF;
14127 	--bug 6633612
14128 
14129       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
14130         query_str  := query_str || 'AND v.lot_number = :lot_n ';
14131       END IF;
14132 
14133       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14134         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
14135       END IF;
14136 
14137       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14138         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
14139       END IF;
14140 
14141    -- NSRIVAST, INVCONV, Start
14142       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
14143          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
14144       END IF ;
14145       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
14146          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
14147       END IF ;
14148    -- NSRIVAST, INVCONV, End
14149 
14150       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14151         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
14152       END IF;
14153 
14154       IF inv_mwb_globals.g_revision IS NOT NULL THEN
14155         query_str  := query_str || 'AND v.revision = :rev ';
14156       END IF;
14157 
14158       IF inv_mwb_globals.g_containerized = 1 THEN
14159         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
14160       ELSIF inv_mwb_globals.g_containerized = 2 THEN
14161         query_str  := query_str || 'AND v.containerized_flag = 1 ';
14162       END IF;
14163 
14164       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
14165       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
14166         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
14167       END IF;
14168 
14169       IF inv_mwb_globals.g_locator_controlled = 1 THEN
14170         query_str  := query_str || 'AND v.locator_id IS NULL ';
14171       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
14172         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
14173       END IF;
14174 
14175       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14176       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14177         query_str  := query_str || 'AND v.locator_id = :loc_id ';
14178       END IF;
14179 
14180       --ER(3338592) Changes
14181       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
14182          query_str := query_str || ' AND v.item_description LIKE :item_description ';
14183       END IF;
14184       --ER(3338592) Changes
14185 
14186       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14187       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14188         query_str  := query_str || 'AND v.subinventory_code = :sub ';
14189       END IF;
14190 
14191       IF inv_mwb_globals.g_organization_id IS NOT NULL
14192       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
14193         query_str  := query_str || 'AND v.organization_id = :org_id ';
14194       END IF;
14195 
14196       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
14197         query_str  := query_str || ' AND v.project_id = :pr_id ';
14198       END IF;
14199 
14200       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
14201         query_str  := query_str || ' AND v.task_id = :ta_id ';
14202       END IF;
14203 
14204       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
14205         query_str  := query_str || ' AND v.unit_number=:un_id ';
14206       END IF;
14207 
14208       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
14209          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14210          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
14211        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
14212          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
14213          query_str := query_str || ' AND  planning_organization_id in ';
14214          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
14215          query_str := query_str || '  where vendor_id = :vendor_id )';
14216       END IF;*/
14217       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14218         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14219         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
14220       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
14221         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14222         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14223       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
14224         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14225       END IF;
14226 
14227       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
14228         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14229         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
14230       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
14231         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14232         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14233       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
14234         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14235       END IF;
14236 
14237       query_str  := query_str || 'GROUP BY v.item, v.inventory_item_id, v.revision ';			-- Bug 6350236
14238       query_str  := query_str || 'ORDER BY v.revision ';
14239     ELSIF(
14240           (
14241            inv_mwb_globals.g_serial_from IS NOT NULL
14242            OR inv_mwb_globals.g_serial_from IS NOT NULL
14243            OR inv_mwb_globals.g_tree_serial_number IS NOT NULL
14244            OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
14245           )
14246           AND inv_mwb_globals.g_lpn_from IS NULL
14247           AND inv_mwb_globals.g_lpn_to IS NULL
14248           AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
14249           AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
14250          ) THEN
14251       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14252         table_required  := ' mtl_rcv_serial_oh_v v ';
14253       ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
14254         table_required  := ' mtl_onhand_serial_mwb_v v ';
14255         IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
14256           table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
14257         END IF;                                         -- NSRIVAST, INVCONV
14258       ELSE
14259         table_required  := ' mtl_onhand_serial_v v ';
14260       END IF;
14261 
14262         --bug 6633612
14263 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14264 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
14265 	END IF;
14266 	--bug 6633612
14267 
14268       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
14269          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14270         query_str  := query_str || 'SELECT v.item, v.inventory_item_id, v.revision from ' || table_required;  -- Bug 6350236
14271         query_str  := query_str || 'WHERE 1=1 ';
14272       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
14273             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
14274         query_str  :=
14275               query_str
14276            || 'SELECT v.item, v.inventory_item_id, v.revision from'							-- Bug 6350236
14277            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
14278            || inv_mwb_globals.g_tree_serial_attr_query
14279            || ') msn, '
14280 	   || table_required;
14281         query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
14282       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
14283             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14284         query_str  :=
14285               query_str
14286            || 'SELECT v.item, v.inventory_item_id, v.revision from'							-- Bug 6350236
14287            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14288            || inv_mwb_globals.g_tree_lot_attr_query
14289            || ') mln, '
14290 	   || table_required;
14291         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
14292  		--BUG 7556505
14293 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14294 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14295 	           END IF;
14296 		--BUG 7556505
14297       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
14298             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
14299         query_str  :=
14300               query_str
14301            || 'SELECT v.item, v.inventory_item_id, v.revision from'							-- Bug 6350236
14302            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14303            || inv_mwb_globals.g_tree_lot_attr_query
14304            || ') mln, '
14305            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
14306            || inv_mwb_globals.g_tree_serial_attr_query
14307            || ') msn, '
14308 	   || table_required;
14309         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
14310  		--BUG 7556505
14311 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14312 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14313 	           END IF;
14314 		--BUG 7556505
14315 	query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
14316       END IF;
14317 
14318       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
14319       -- from serial table (MSN)
14320       if (l_default_status_id is not null) then
14321          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14322            query_str  := query_str || 'AND v.serial_status_id = :st_id ';
14323          END IF;
14324       else
14325         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14326            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
14327            query_str  := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
14328         END IF;
14329       end if;
14330 
14331       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
14332         query_str  := query_str || 'AND v.lot_number = :lot_n ';
14333       END IF;
14334 
14335       --bug 6633612
14336 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14337 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
14338 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
14339 					 || ' AND rt.organization_id = mmt.organization_id '
14340 					 || ' AND rt.transaction_type = ''DELIVER'''
14341 					 || ' AND rt.destination_type_code = ''INVENTORY'''
14342 					 || ' AND mmt.transaction_id = v.last_transaction_id '
14343 					 || ' AND mmt.organization_id = v.organization_id ';
14344 
14345 	END IF;
14346 	--bug 6633612
14347 
14348       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14349         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
14350       END IF;
14351 
14352       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14353         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
14354       END IF;
14355 
14356       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14357         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
14358       END IF;
14359 
14360   -- NSRIVAST, INVCONV, Start
14361       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
14362          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
14363       END IF ;
14364       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
14365          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
14366       END IF ;
14367    -- NSRIVAST, INVCONV, End
14368 
14369       IF inv_mwb_globals.g_revision IS NOT NULL THEN
14370         query_str  := query_str || 'AND v.revision = :rev ';
14371       END IF;
14372 
14373       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
14374         query_str  := query_str || 'AND (v.serial_number = :serial_n) ';
14375       END IF;
14376 
14377       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
14378         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
14379       END IF;
14380 
14381       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
14382         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
14383       END IF;
14384 
14385       /*IF(inv_mwb_globals.g_vendor_id IS NULL AND inv_mwb_globals.g_site_id IS NULL) THEN
14386         IF inv_mwb_globals.g_containerized = 1 THEN
14387           query_str := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
14388         ELSIF inv_mwb_globals.g_containerized = 2 THEN
14389           query_str := query_str || 'AND containerized_flag = 1 ';
14390         END IF;
14391       END IF;*/
14392       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14393         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14394         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
14395       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
14396         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14397         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14398       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
14399         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14400       END IF;
14401 
14402       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
14403         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14404         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
14405       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
14406         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14407         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14408       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
14409         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14410       END IF;
14411 
14412       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
14413       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
14414         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
14415       END IF;
14416 
14417       IF inv_mwb_globals.g_locator_controlled = 1 THEN
14418         query_str  := query_str || 'AND v.locator_id IS NULL ';
14419       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
14420         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
14421       END IF;
14422 
14423       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14424       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14425         query_str  := query_str || 'AND v.locator_id = :loc_id ';
14426       END IF;
14427 
14428       --ER(3338592) Changes
14429       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
14430          query_str := query_str || ' AND v.item_description LIKE :item_description ';
14431       END IF;
14432       --ER(3338592) Changes
14433 
14434       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14435       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14436         query_str  := query_str || 'AND v.subinventory_code = :sub ';
14437       END IF;
14438 
14439       IF inv_mwb_globals.g_organization_id IS NOT NULL
14440       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
14441         query_str  := query_str || 'AND v.organization_id = :org_id ';
14442       END IF;
14443 
14444       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
14445         query_str  := query_str || ' AND v.project_id = :pr_id ';
14446       END IF;
14447 
14448       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
14449         query_str  := query_str || ' AND v.task_id = :ta_id ';
14450       END IF;
14451 
14452       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
14453         query_str  := query_str || ' AND v.unit_number=:un_id ';
14454       END IF;
14455 
14456       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
14457          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14458          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
14459        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
14460          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
14461          query_str := query_str || ' AND  planning_organization_id in ';
14462          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
14463          query_str := query_str || '  where vendor_id = :vendor_id )';
14464       END IF;*/
14465       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14466         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14467         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
14468       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
14469         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14470         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14471       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
14472         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14473       END IF;
14474 
14475       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
14476         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14477         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
14478       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
14479         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14480         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14481       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
14482         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14483       END IF;
14484 
14485       query_str  := query_str || 'GROUP BY v.item, v.inventory_item_id, v.revision ';				-- Bug 6350236
14486       query_str  := query_str || 'ORDER BY v.revision ';
14487     -- Need to query both mtl_onhand_total_v and mtl_onhand_serial_v
14488     ELSIF(
14489           inv_mwb_globals.g_serial_from IS NULL
14490           AND inv_mwb_globals.g_serial_to IS NULL
14491           AND inv_mwb_globals.g_tree_serial_number IS NULL
14492           AND inv_mwb_globals.g_status_id IS NOT NULL
14493           AND inv_mwb_globals.g_lpn_from IS NULL
14494           AND inv_mwb_globals.g_lpn_to IS NULL
14495           AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
14496           AND(NVL(inv_mwb_globals.g_prepacked, 1) = 1)
14497          ) THEN
14498       IF (inv_mwb_globals.g_status_id IS NULL) THEN
14499         table_required  := ' mtl_onhand_total_mwb_v v ';
14500 --      ELSIF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
14501 --          table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
14502       ELSE
14503         table_required  := ' mtl_onhand_total_v v ';
14504       END IF;
14505 
14506       --bug 6633612
14507 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14508 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
14509 	END IF;
14510 	--bug 6633612
14511 
14512       query_str  := 'SELECT item, inventory_item_id, revision from( ';					-- Bug 6350236
14513 
14514       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
14515         query_str  := query_str || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from ' || table_required;	-- Bug 6350236
14516         query_str  := query_str || 'WHERE 1=1 ';
14517       ELSE
14518         query_str  :=
14519               query_str
14520            || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from'						-- Bug 6350236
14521            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14522            || inv_mwb_globals.g_tree_lot_attr_query
14523            || ') mln, '
14524            || table_required;
14525         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
14526  		--BUG 7556505
14527 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14528 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14529 	           END IF;
14530 		--BUG 7556505
14531       END IF;
14532 
14533       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
14534       -- from onhand table (MOQD)
14535       if (l_default_status_id is not null) then
14536          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14537            query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
14538          END IF;
14539       else
14540         IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14541            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id OR ';
14542            query_str  := query_str || 'v.locator_status_id = :st_id or v.lot_status_id = :st_id) ';
14543         END IF;
14544       end if;
14545 
14546       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
14547         query_str  := query_str || 'AND v.lot_number = :lot_n ';
14548       END IF;
14549 
14550       --bug 6633612
14551 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14552 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
14553 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
14554 					 || ' AND rt.organization_id = mmt.organization_id '
14555 					 || ' AND rt.transaction_type = ''DELIVER'''
14556 					 || ' AND rt.destination_type_code = ''INVENTORY'''
14557 					 || ' AND mmt.transaction_id = v.create_transaction_id '
14558 					 || ' AND mmt.organization_id = v.organization_id ';
14559 
14560 	END IF;
14561 	--bug 6633612
14562 
14563       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
14564         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
14565       END IF;
14566 
14567       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
14568         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
14569       END IF;
14570 
14571       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14572         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
14573       END IF;
14574 
14575   -- NSRIVAST, INVCONV, Start
14576       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
14577          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
14578       END IF ;
14579       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
14580          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
14581       END IF ;
14582    -- NSRIVAST, INVCONV, End
14583 
14584       IF inv_mwb_globals.g_revision IS NOT NULL THEN
14585         query_str  := query_str || 'AND v.revision = :rev ';
14586       END IF;
14587 
14588       IF inv_mwb_globals.g_containerized = 1 THEN
14589         query_str  := query_str || ' AND (v.containerized_flag is null or containerized_flag <> 1) ';
14590       ELSIF inv_mwb_globals.g_containerized = 2 THEN
14591         query_str  := query_str || 'AND v.containerized_flag = 1 ';
14592       END IF;
14593 
14594       --query_str  := query_str || 'AND serial_number_control_code in (1,6) ';
14595       query_str := query_str || 'AND v.item_serial_control in (1,6) ';
14596 
14597       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
14598       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
14599         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
14600       END IF;
14601 
14602       IF inv_mwb_globals.g_locator_controlled = 1 THEN
14603         query_str  := query_str || 'AND v.locator_id IS NULL ';
14604       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
14605         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
14606       END IF;
14607 
14608       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14609       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14610         query_str  := query_str || 'AND v.locator_id = :loc_id ';
14611       END IF;
14612 
14613       --ER(3338592) Changes
14614       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
14615          query_str := query_str || ' AND v.item_description LIKE :item_description ';
14616       END IF;
14617       --ER(3338592) Changes
14618 
14619       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14620       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14621         query_str  := query_str || 'AND v.subinventory_code = :sub ';
14622       END IF;
14623 
14624       IF inv_mwb_globals.g_organization_id IS NOT NULL
14625       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
14626         query_str  := query_str || 'AND v.organization_id = :org_id ';
14627       END IF;
14628 
14629       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
14630         query_str  := query_str || ' AND v.project_id = :pr_id ';
14631       END IF;
14632 
14633       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
14634         query_str  := query_str || ' AND v.task_id = :ta_id ';
14635       END IF;
14636 
14637       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
14638         query_str  := query_str || ' AND v.unit_number=:un_id ';
14639       END IF;
14640 
14641       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
14642          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14643          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
14644        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
14645          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
14646          query_str := query_str || ' AND  planning_organization_id in ';
14647          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
14648          query_str := query_str || '  where vendor_id = :vendor_id )';
14649       END IF;*/
14650       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14651         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14652         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
14653       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
14654         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14655         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14656       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
14657         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14658       END IF;
14659 
14660       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
14661         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14662         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
14663       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
14664         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14665         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14666       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
14667         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14668       END IF;
14669 
14670       query_str  := query_str || 'UNION ';
14671 
14672       IF (inv_mwb_globals.g_status_id IS NULL) THEN
14673         table_required  := ' mtl_onhand_serial_mwb_v v ';
14674       ELSE
14675         table_required  := ' mtl_onhand_serial_v v ';
14676       END IF;
14677 
14678 	 --bug 6633612
14679 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14680 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
14681 	END IF;
14682 	--bug 6633612
14683 
14684       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
14685          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14686         query_str  := query_str || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from ' || table_required;		-- Bug 6350236
14687         query_str  := query_str || 'WHERE 1=1 ';
14688       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
14689             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14690         query_str  :=
14691               query_str
14692            || 'SELECT v.item item, v.inventory_item_id inventory_item_id, v.revision revision from'							-- Bug 6350236
14693            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14694            || inv_mwb_globals.g_tree_lot_attr_query
14695            || ') mln, '
14696 	   || table_required;
14697         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
14698  		--BUG 7556505
14699 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14700 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14701 	           END IF;
14702 		--BUG 7556505
14703       END IF;
14704 
14705       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
14706       -- from serial table (MSN)
14707       if (l_default_status_id is not null) then
14708          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14709            query_str  := query_str || 'AND v.serial_status_id = :st_id ';
14710          END IF;
14711       else
14712          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
14713            query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id or ';
14714            query_str  := query_str || 'v.lot_status_id = :st_id or v.serial_status_id = :st_id) ';
14715          END IF;
14716       end if;
14717 
14718       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
14719         query_str  := query_str || 'AND v.lot_number = :lot_n ';
14720       END IF;
14721 
14722       --bug 6633612
14723 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
14724 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
14725 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
14726 					 || ' AND rt.organization_id = mmt.organization_id '
14727 					 || ' AND rt.transaction_type = ''DELIVER'''
14728 					 || ' AND rt.destination_type_code = ''INVENTORY'''
14729 					 || ' AND mmt.transaction_id = v.last_transaction_id '
14730 					 || ' AND mmt.organization_id = v.organization_id ';
14731 
14732 	END IF;
14733 	--bug 6633612
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       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
14744         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
14745       END IF;
14746 
14747       IF inv_mwb_globals.g_revision IS NOT NULL THEN
14748         query_str  := query_str || 'AND v.revision = :rev ';
14749       END IF;
14750 
14751       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
14752         query_str  := query_str || 'AND (v.serial_number = :serial_n) ';
14753       END IF;
14754 
14755       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
14756         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
14757       END IF;
14758 
14759       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
14760         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
14761       END IF;
14762 
14763       IF inv_mwb_globals.g_containerized = 1 THEN
14764         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
14765       ELSIF inv_mwb_globals.g_containerized = 2 THEN
14766         query_str  := query_str || 'AND v.containerized_flag = 1 ';
14767       END IF;
14768 
14769       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
14770       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
14771         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
14772       END IF;
14773 
14774       IF inv_mwb_globals.g_locator_controlled = 1 THEN
14775         query_str  := query_str || 'AND v.locator_id IS NULL ';
14776       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
14777         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
14778       END IF;
14779 
14780       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14781       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14782         query_str  := query_str || 'AND v.locator_id = :loc_id ';
14783       END IF;
14784 
14785       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14786       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14787         query_str  := query_str || 'AND v.subinventory_code = :sub ';
14788       END IF;
14789 
14790       --ER(3338592) Changes
14791       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
14792          query_str := query_str || ' AND v.item_description LIKE :item_description ';
14793       END IF;
14794       --ER(3338592) Changes
14795 
14796       IF inv_mwb_globals.g_organization_id IS NOT NULL
14797       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
14798         query_str  := query_str || 'AND v.organization_id = :org_id ';
14799       END IF;
14800 
14801       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
14802         query_str  := query_str || ' AND v.project_id = :pr_id ';
14803       END IF;
14804 
14805       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
14806         query_str  := query_str || ' AND v.task_id = :ta_id ';
14807       END IF;
14808 
14809       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
14810         query_str  := query_str || ' AND v.unit_number=:un_id ';
14811       END IF;
14812 
14813       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
14814          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14815          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
14816        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
14817          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
14818          query_str := query_str || ' AND  planning_organization_id in ';
14819          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
14820          query_str := query_str || '  where vendor_id = :vendor_id )';
14821       END IF;*/
14822       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14823         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14824         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
14825       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
14826         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
14827         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14828       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
14829         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
14830       END IF;
14831 
14832       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
14833         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14834         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
14835       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
14836         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
14837         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14838       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
14839         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
14840       END IF;
14841 
14842       query_str  := query_str || ') GROUP BY item, inventory_item_id, revision ';			-- Bug 6350236
14843       query_str  := query_str || 'ORDER BY revision ';
14844     ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
14845           OR inv_mwb_globals.g_lpn_to IS NOT NULL
14846           OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
14847           OR(NVL(inv_mwb_globals.g_prepacked, 1) <> 1)) THEN
14848       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14849         table_required  := ' mtl_onhand_lpn_mwb_v mol ';
14850       ELSIF(inv_mwb_globals.g_status_id IS NULL) THEN
14851         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
14852           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
14853           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
14854             table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
14855           END IF;                                          -- NSRIVAST, INVCONV
14856         ELSE
14857           table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
14858         END IF;
14859       ELSE
14860         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
14861           table_required  := ' mtl_onhand_lpn_v mol  ';
14862           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
14863             table_required  := ' mtl_onhand_new_lpn_v mol ';   -- NSRIVAST, INVCONV
14864           END IF;                                          -- NSRIVAST, INVCONV
14865         ELSE
14866           table_required  := ' mtl_onhand_new_lpn_v mol ';
14867         END IF;
14868       END IF;
14869 
14870       query_str  := 'SELECT item, inventory_item_id, revision ';				-- Bug 6350236
14871       query_str  := query_str || 'FROM ' || table_required;
14872 
14873       IF (inv_mwb_globals.g_lpn_from IS NOT NULL
14874           OR inv_mwb_globals.g_lpn_to IS NOT NULL)
14875          AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
14876         query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
14877         query_str  := query_str || ' WHERE 1=1 ';
14878 
14879         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
14880           query_str  := query_str || ' AND lpn_context = 3 ';
14881         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
14882           query_str  := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
14883         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
14884           query_str  := query_str || 'AND lpn_context = 1 ';
14885         ELSIF inv_mwb_globals.g_prepacked <> 1
14886               AND inv_mwb_globals.g_prepacked <> 999 THEN
14887           query_str  := query_str || 'AND lpn_context = :prepacked ';
14888         END IF;
14889 
14890       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
14891       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
14892           query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
14893         END IF;
14894 
14895    -- NSRIVAST, INVCONV, Start
14896       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
14897          query_str := query_str || ' AND grade_code = :grade_f ' ;
14898       END IF ;
14899       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
14900          query_str := query_str || ' AND grade_code = :grade_c ' ;
14901       END IF ;
14902    -- NSRIVAST, INVCONV, End
14903 
14904       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
14905       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
14906           query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
14907         END IF;
14908 
14909       IF inv_mwb_globals.g_organization_id IS NOT NULL
14910       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
14911           query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
14912       END IF;
14913 
14914      IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
14915         IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
14916            query_str  := query_str || ' and license_plate_number = :lpn_f ';
14917         ELSE
14918            IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
14919               query_str  := query_str || ' and license_plate_number >= :lpn_f ';
14920            END IF;
14921            IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
14922               query_str  := query_str || ' and license_plate_number >= :lpn_t ';
14923      	   END IF;
14924         END IF;
14925      END IF;
14926 
14927         query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
14928       END IF;
14929 
14930       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
14931          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14932         query_str  := query_str || 'WHERE 1=1 ';
14933       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
14934             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
14935         query_str  :=
14936                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
14937                      || ') msn ';
14938         query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
14939       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
14940             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
14941         query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
14942         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
14943  		--BUG 7556505
14944 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14945 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14946 	           END IF;
14947 		--BUG 7556505
14948       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
14949             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
14950         query_str  :=
14951               query_str
14952            || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
14953            || inv_mwb_globals.g_tree_lot_attr_query
14954            || ') mln '
14955            || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
14956            || inv_mwb_globals.g_tree_serial_attr_query
14957            || ') msn ';
14958         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
14959  		--BUG 7556505
14960 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
14961 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
14962 	           END IF;
14963 		--BUG 7556505
14964 	query_str  := query_str || 'AND msn.serial_num = serial_number ';
14965       END IF;
14966 
14967       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
14968         query_str  := query_str || ' AND project_id = :pr_id ';
14969       END IF;
14970 
14971       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
14972         query_str  := query_str || ' AND task_id = :ta_id ';
14973       END IF;
14974 
14975       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
14976         query_str  := query_str || ' AND unit_number=:un_id ';
14977       END IF;
14978 
14979   -- NSRIVAST, INVCONV, Start
14980       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
14981          query_str := query_str || ' AND grade_code = :grade_f ' ;
14982       END IF ;
14983       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
14984          query_str := query_str || ' AND grade_code = :grade_c ' ;
14985       END IF ;
14986    -- NSRIVAST, INVCONV, End
14987 
14988       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
14989          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
14990          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
14991        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
14992          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
14993          query_str := query_str || ' AND  planning_organization_id in ';
14994          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
14995          query_str := query_str || '  where vendor_id = :vendor_id )';
14996       END IF;*/
14997       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
14998         query_str  := query_str || ' AND owning_organization_id = :own_org ';
14999         query_str  := query_str || ' AND owning_tp_type = 2 ';
15000       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15001         query_str  := query_str || ' AND owning_organization_id = :own_org ';
15002         query_str  := query_str || ' AND owning_tp_type = 1 ';
15003       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
15004         query_str  := query_str || ' AND owning_tp_type = 1 ';
15005       END IF;
15006 
15007       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
15008         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
15009         query_str  := query_str || ' AND planning_tp_type = 2 ';
15010       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
15011         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
15012         query_str  := query_str || ' AND planning_tp_type = 1 ';
15013       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
15014         query_str  := query_str || ' AND planning_tp_type = 1 ';
15015       END IF;
15016 
15017       /*LPN Status Project */
15018       IF (l_default_status_id IS NOT NULL) THEN
15019          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15020            query_str  := query_str || 'AND onhand_status_id = :st_id ';
15021          END IF;
15022       ELSE
15023          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15024            query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
15025            query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id OR :st_id IS NULL) ';
15026          END IF;
15027       END IF;
15028       /*End of fix for LPN Status Project */
15029 
15030       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
15031         query_str  := query_str || 'AND lot_number = :lot_n ';
15032       END IF;
15033 
15034       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15035         query_str  := query_str || 'AND lot_number >= :lot_f ';
15036       END IF;
15037 
15038       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15039         query_str  := query_str || 'AND lot_number <= :lot_t ';
15040       END IF;
15041 
15042       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15043         query_str  := query_str || 'AND cost_group_id = :cg_id ';
15044       END IF;
15045 
15046       IF inv_mwb_globals.g_revision IS NOT NULL THEN
15047         query_str  := query_str || 'AND revision = :rev ';
15048       END IF;
15049 
15050       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
15051         query_str  := query_str || 'AND serial_number = :serial_n ';
15052       END IF;
15053 
15054       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
15055         query_str  := query_str || 'AND serial_number >= :serial_f ';
15056       END IF;
15057 
15058       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
15059         query_str  := query_str || 'AND serial_number <= :serial_t ';
15060       END IF;
15061 
15062       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
15063         query_str  := query_str || ' AND lpn_context = 3 ';
15064       ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
15065         query_str  := query_str || ' AND (lpn_context=1  OR lpn_context=9 OR lpn_context=11 ) ';
15066       ELSIF inv_mwb_globals.g_prepacked = 1 THEN
15067         query_str  := query_str || 'AND lpn_context = 1 ';
15068       ELSIF inv_mwb_globals.g_prepacked <> 1
15069             AND inv_mwb_globals.g_prepacked <> 999 THEN
15070         query_str  := query_str || 'AND lpn_context = :prepacked ';
15071       END IF;
15072 
15073       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
15074         query_str  := query_str || 'AND MOL.lpn_id = :plpn_id ';
15075       END IF;
15076 
15077 /*      IF inv_mwb_globals.g_lpn_from IS NOT NULL
15078          OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
15079         query_str  := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
15080       END IF;
15081 */
15082 
15083       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
15084       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
15085         query_str  := query_str || 'AND inventory_item_id = :item_id ';
15086       END IF;
15087 
15088       IF (inv_mwb_globals.g_locator_controlled = 2) THEN
15089         query_str  := query_str || 'AND locator_id IS not NULL ';
15090       ELSIF(inv_mwb_globals.g_locator_controlled = 1) THEN
15091         query_str  := query_str || 'AND locator_id IS NULL ';
15092       END IF;
15093 
15094       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
15095       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
15096         query_str  := query_str || 'AND locator_id = :loc_id ';
15097       END IF;
15098 
15099       --ER(3338592) Changes
15100       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15101          query_str := query_str || ' AND item_description LIKE :item_description ';
15102       END IF;
15103       --ER(3338592) Changes
15104 
15105       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
15106       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15107         query_str  := query_str || 'AND subinventory_code = :sub ';
15108       END IF;
15109 
15110       IF inv_mwb_globals.g_organization_id IS NOT NULL
15111       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15112         query_str  := query_str || 'AND organization_id = :org_id ';
15113       END IF;
15114 
15115       query_str  := query_str || 'GROUP BY item, inventory_item_id, revision ';				-- Bug 6350236
15116       query_str  := query_str || 'ORDER BY revision ';
15117     END IF;
15118 
15119      --trace1(query_str, 'add_revs', 9);
15120     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
15121     inv_mwb_globals.g_last_query := query_str;
15122     query_hdl       := DBMS_SQL.open_cursor;
15123     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
15124 
15125 
15126    IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15127       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
15128    ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
15129       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
15130    END IF;
15131 
15132     IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
15133       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
15134     ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15135       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
15136     END IF;
15137 
15138     IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
15139       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
15140     ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
15141       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
15142     END IF;
15143 
15144     IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
15145       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
15146     ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
15147       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
15148     END IF;
15149 
15150     IF inv_mwb_globals.g_revision IS NOT NULL THEN
15151       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
15152     END IF;
15153 
15154     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15155       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
15156     END IF;
15157 
15158     --BUG 7556505
15159     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15160       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
15161     END IF;
15162     --BUG 7556505
15163 
15164     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15165       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
15166     END IF;
15167 
15168     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15169       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
15170     END IF;
15171 
15172     --bug 6633612
15173     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
15174       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
15175     END IF;
15176     --bug 6633612
15177 
15178       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered  200' );
15179 -- NSRIVAST, INVCONV, Start
15180     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15181       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
15182     END IF;
15183     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
15184       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
15185     END IF;
15186 -- NSRIVAST, INVCONV, End
15187 
15188     IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
15189       DBMS_SQL.bind_variable(query_hdl, 'lot_n', inv_mwb_globals.g_tree_lot_number);
15190     END IF;
15191 
15192     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
15193       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
15194     END IF;
15195 
15196     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
15197       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
15198     END IF;
15199 
15200     IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
15201       DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
15202     END IF;
15203 
15204     IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
15205        IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
15206           dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
15207        ELSE
15208           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
15209              dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
15210           END IF;
15211  	  IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
15212              dbms_sql.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
15213    	  END IF;
15214        END IF;
15215     END IF;
15216 
15217     IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
15218       DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
15219     END IF;
15220 
15221       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered  300' );
15222     IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15223       DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
15224     END IF;
15225 
15226     IF inv_mwb_globals.g_prepacked <> 1
15227        AND inv_mwb_globals.g_prepacked <> 999
15228        AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
15229       DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
15230     END IF;
15231 
15232     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
15233       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
15234     END IF;
15235 
15236     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15237       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
15238     END IF;
15239 
15240     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15241       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
15242     END IF;
15243 
15244     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
15245       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
15246     END IF;
15247 
15248     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
15249        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
15250      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
15251        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
15252     END IF;*/
15253       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered  400' );
15254 
15255     IF (inv_mwb_globals.g_owning_qry_mode = 4)
15256        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15257       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
15258     END IF;
15259 
15260     IF (inv_mwb_globals.g_planning_query_mode = 4)
15261        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
15262       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
15263     END IF;
15264 
15265       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered  500' );
15266 
15267     --ER(3338592) Changes
15268     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15269       /* Fix for bug #3457285
15270          Following line has been removed.
15271          query_str := query_str || ' AND item_description LIKE :item_description ';
15272          Added the following line to bind the item_description value to WHERE clause the query*/
15273       DBMS_SQL.bind_variable(query_hdl,'item_description',inv_mwb_globals.g_item_description);
15274      /*End of fix 3457285 */
15275 
15276     END IF;
15277     --ER(3338592) Changes
15278 
15279     DBMS_SQL.define_column(query_hdl, 1, item, 40);
15280     DBMS_SQL.define_column(query_hdl, 2, l_item_id);			-- Bug 6350236
15281     DBMS_SQL.define_column(query_hdl, 3, rev, 3);			-- Bug 6350236
15282     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
15283 
15284     LOOP
15285       -- fetch a row
15286       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
15287         -- fetch columns from the row
15288         DBMS_SQL.column_value(query_hdl, 1, item);
15289 	DBMS_SQL.column_value(query_hdl, 2, l_item_id);			-- Bug 6350236
15290         DBMS_SQL.column_value(query_hdl, 3, rev);			-- Bug 6350236
15291 
15292         IF j >= inv_mwb_globals.g_tree_node_low_value AND
15293            rev IS NOT NULL THEN
15294           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
15295           x_node_tbl(i).DEPTH  := 1;
15296           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
15297           x_node_tbl(i).icon   := 'inv_revi';
15298           x_node_tbl(i).VALUE  := rev;
15299           x_node_tbl(i).TYPE   := 'REV';
15300           i                    := i + 1;
15301         END IF;
15302 
15303         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
15304         j  := j + 1;
15305       ELSE
15306         EXIT;
15307       END IF;
15308     END LOOP;
15309 
15310     DBMS_SQL.close_cursor(query_hdl); -- close cursor
15311     x_node_value    := j;
15312     x_tbl_index     := i;
15313   EXCEPTION
15314     WHEN NO_DATA_FOUND THEN
15315       NULL;
15316     WHEN OTHERS THEN
15317       RAISE;
15318   END add_revs;
15319 
15320   PROCEDURE add_lots(
15321     x_node_value           IN OUT NOCOPY  NUMBER
15322   , x_node_tbl             IN OUT NOCOPY  fnd_apptree.node_tbl_type
15323   , x_tbl_index            IN OUT NOCOPY  NUMBER
15324   ) IS
15325     query_str      VARCHAR2(10000);
15326     query_hdl      NUMBER;
15327     rows_processed NUMBER;
15328     lot            mtl_onhand_quantities.lot_number%TYPE;
15329     lot_control    NUMBER;
15330     serial_control NUMBER;
15331     i              NUMBER                                  := x_tbl_index;
15332     j              NUMBER                                  := x_node_value;
15333     table_required VARCHAR2(300);
15334     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
15335     select_from_str VARCHAR2(2000);
15336     where_str VARCHAR2(2000);
15337     lpn_from_id wms_license_plate_numbers.lpn_id%type;
15338     lpn_to_id   wms_license_plate_numbers.lpn_id%type;
15339     l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_LOTS';
15340     l_default_status_id NUMBER; -- Onhand Material Status Support
15341    BEGIN
15342       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
15343       IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
15344         inv_mwb_globals.g_containerized := 1;
15345       ELSE
15346         inv_mwb_globals.g_containerized := 2;
15347       END IF;
15348 
15349       IF inv_mwb_globals.g_view_by IN ('SERIAL','LOT','ITEM') THEN
15350          inv_mwb_globals.g_containerized := NULL;
15351       END IF;
15352 
15353       IF inv_mwb_globals.g_view_by = 'STATUS' THEN
15354          inv_mwb_globals.g_only_subinventory_status := 1;
15355       ELSE
15356          inv_mwb_globals.g_only_subinventory_status := NULL;
15357       END IF;
15358 
15359       -- Onhand Material Status Support
15360       if (inv_mwb_globals.g_organization_id is not null) then
15361          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
15362            l_default_status_id :=  inv_cache.org_rec.default_status_id;
15363          end if;
15364       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
15365          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
15366            l_default_status_id :=  inv_cache.org_rec.default_status_id;
15367          end if;
15368       end if;
15369 
15370       -- If add_item called from node_expanded of inbound lpn number.
15371       IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL THEN
15372 
15373          IF (inv_mwb_globals.g_organization_id IS NOT NULL
15374          OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
15375          AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
15376          OR inv_mwb_globals.g_inventory_item_id IS NOT NULL)  THEN
15377 
15378             SELECT lot_control_code
15379                  , serial_number_control_code
15380               INTO lot_control
15381                  , serial_control
15382               FROM mtl_system_items
15383              WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id
15384                                        , inv_mwb_globals.g_organization_id)
15385                AND inventory_item_id = NVL(inv_mwb_globals.g_inventory_item_id
15386                                          , inv_mwb_globals.g_tree_item_id);
15387 
15388             IF lot_control = 1 THEN
15389                RETURN;
15390             END IF;
15391       END IF;
15392 
15393 
15394       select_from_str :=
15395          ' SELECT DISTINCT rls.lot_num
15396              FROM rcv_shipment_lines rsl
15397                 , mtl_supply ms ';
15398 
15399       where_str :=
15400          ' WHERE 1 = 1
15401              AND ms.shipment_line_id = rsl.shipment_line_id
15402              AND ms.supply_type_code <> ''RECEIVING''
15403              AND ms.shipment_header_id IS NOT NULL
15404              AND rsl.to_organization_id = :to_org_id
15405              AND rsl.shipment_header_id = :shipment_header_id
15406              AND rsl.item_id = :item_id ';
15407 
15408 
15409       IF inv_mwb_globals.g_serial_from IS NOT NULL
15410       OR inv_mwb_globals.g_serial_to IS NOT NULL
15411       OR serial_control = 2 THEN
15412          select_from_str := select_from_str || ' , rcv_serials_supply rls ';
15413          where_str := where_str || ' AND rls.shipment_line_id = ms.shipment_line_id  ';
15414       ELSE
15415          select_from_str := select_from_str || ' , rcv_lots_supply rls ';
15416          where_str := where_str || ' AND rls.shipment_line_id = ms.shipment_line_id  ';
15417       END IF;
15418 
15419       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
15420          where_str := where_str || ' AND rsl.asn_lpn_id  = :lpn_from_id ';
15421       END IF;
15422 
15423       IF inv_mwb_globals.g_lot_from IS NOT NULL
15424       AND inv_mwb_globals.g_lot_to IS NOT NULL
15425       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
15426          where_str := where_str || ' AND rls.lot_num  = :lot_from ';
15427       END IF;
15428 
15429       IF inv_mwb_globals.g_lot_from IS NOT NULL
15430       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
15431          where_str := where_str || ' AND rls.lot_num  >= :lot_from ';
15432       END IF;
15433 
15434       IF inv_mwb_globals.g_lot_to IS NOT NULL
15435       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
15436          where_str := where_str || ' AND rls.lot_num  >= :lot_to ';
15437       END IF;
15438         -- kmotupal LOT-EXP
15439       IF inv_mwb_globals.g_expired_lots = 'Y'
15440       AND inv_mwb_globals.g_serial_from IS NULL
15441       AND inv_mwb_globals.g_serial_to IS NULL
15442       AND serial_control <> 2 THEN
15443          where_str := where_str || ' AND rls.expiration_date  = :expiration_date ';
15444       END IF;
15445 
15446 
15447       IF inv_mwb_globals.g_serial_from IS NOT NULL
15448       AND inv_mwb_globals.g_serial_to IS NOT NULL
15449       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
15450          where_str := where_str || ' AND rls.serial_num  = :serial_from ';
15451       END IF;
15452 
15453       IF inv_mwb_globals.g_serial_from IS NOT NULL
15454       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
15455          where_str := where_str || ' AND rls.serial_num  >= :serial_from ';
15456       END IF;
15457 
15458       IF inv_mwb_globals.g_serial_to IS NOT NULL
15459       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
15460          where_str := where_str || ' AND rls.serial_num  <= :serial_to ';
15461       END IF;
15462 
15463       IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
15464          where_str := where_str || ' AND rsl.item_revision  = :item_revision ';
15465       END IF;
15466 
15467       where_str := where_str || ' ORDER BY rls.lot_num ';
15468 
15469       query_str := select_from_str || where_str;
15470 
15471       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
15472       inv_mwb_globals.g_last_query := query_str;
15473 
15474       query_hdl  := DBMS_SQL.open_cursor;
15475       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
15476 
15477       IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15478          DBMS_SQL.bind_variable(query_hdl, 'to_org_id', inv_mwb_globals.g_tree_organization_id);
15479       END IF;
15480 
15481       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
15482       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
15483 
15484       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
15485          DBMS_SQL.bind_variable(query_hdl, 'lpn_from_id', inv_mwb_globals.g_tree_parent_lpn_id);
15486       END IF;
15487 
15488       IF inv_mwb_globals.g_lot_from IS NOT NULL
15489       AND inv_mwb_globals.g_lot_to IS NOT NULL
15490       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
15491          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
15492       END IF;
15493 
15494       IF inv_mwb_globals.g_lot_from IS NOT NULL
15495       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
15496          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
15497       END IF;
15498 
15499       IF inv_mwb_globals.g_lot_to IS NOT NULL
15500       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
15501          DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
15502       END IF;
15503 
15504       -- kmotupal LOT-EXP
15505       IF inv_mwb_globals.g_expired_lots ='Y'  THEN
15506         DBMS_SQL.bind_variable(query_hdl,'expiration_date', inv_mwb_globals.g_expiration_date);
15507       END IF;
15508 
15509       IF inv_mwb_globals.g_serial_from IS NOT NULL
15510       AND inv_mwb_globals.g_serial_to IS NOT NULL
15511       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
15512          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
15513       END IF;
15514 
15515       IF inv_mwb_globals.g_serial_from IS NOT NULL
15516       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
15517          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
15518       END IF;
15519 
15520       IF inv_mwb_globals.g_serial_to IS NOT NULL
15521       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
15522          DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
15523       END IF;
15524 
15525       IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
15526          DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_tree_rev);
15527       END IF;
15528 
15529       BEGIN
15530          DBMS_SQL.define_column(query_hdl, 1, lot, 80);
15531          rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
15532       EXCEPTION
15533          WHEN NO_DATA_FOUND THEN
15534          NULL;
15535          RETURN;
15536       WHEN OTHERS THEN
15537          RAISE;
15538       END;
15539 
15540       LOOP
15541       -- fetch a row
15542       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
15543          -- fetch columns from the row
15544          DBMS_SQL.column_value(query_hdl, 1, lot);
15545          IF j >= inv_mwb_globals.g_tree_node_low_value THEN
15546             x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
15547             x_node_tbl(i).DEPTH  := 1;
15548             x_node_tbl(i).label  := lot;
15549             x_node_tbl(i).icon   := 'inv_lott';
15550             x_node_tbl(i).VALUE  := lot;
15551             x_node_tbl(i).TYPE   := 'LOT';
15552             i                    := i + 1;
15553          END IF;
15554 
15555          EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
15556          j  := j + 1;
15557          ELSE
15558          EXIT;
15559       END IF;
15560       END LOOP;
15561 
15562 
15563       DBMS_SQL.close_cursor(query_hdl); -- close cursor
15564       x_node_value    := j;
15565       x_tbl_index     := i;
15566 
15567       RETURN;
15568   END IF;
15569 
15570 
15571 -- For ONHAND and RECEVING
15572 -- NSRIVAST, INVCONV, Start
15573    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
15574           is_grade_t     := TRUE ;
15575    END IF ;
15576 -- NSRIVAST, INVCONV, End
15577     -- Exit out of the procedure if the item is not lot controlled
15578     IF (inv_mwb_globals.g_organization_id IS NOT NULL
15579         OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
15580        AND (inv_mwb_globals.g_inventory_item_id IS NOT NULL
15581             OR inv_mwb_globals.g_tree_item_id IS NOT NULL) THEN
15582       SELECT lot_control_code
15583         INTO lot_control
15584         FROM mtl_system_items
15585        WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
15586 				   inv_mwb_globals.g_organization_id)
15587          AND inventory_item_id = NVL(inv_mwb_globals.g_tree_item_id,
15588 				     inv_mwb_globals.g_inventory_item_id);
15589 
15590       IF lot_control = 1 THEN
15591         RETURN;
15592       END IF;
15593     END IF;
15594 
15595     IF (
15596         inv_mwb_globals.g_serial_from IS NULL
15597         AND inv_mwb_globals.g_serial_to IS NULL
15598         AND inv_mwb_globals.g_tree_serial_number IS NULL
15599         AND inv_mwb_globals.g_unit_number IS NULL
15600         AND inv_mwb_globals.g_status_id IS NULL
15601         AND inv_mwb_globals.g_lpn_from IS NULL
15602         AND inv_mwb_globals.g_lpn_to IS NULL
15603         AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
15604         AND NVL(inv_mwb_globals.g_prepacked,1) = 1
15605         AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
15606        ) THEN
15607       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
15608         table_required  := ' mtl_rcv_mwb_onhand_v v ';
15609       ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
15610         table_required  := ' mtl_onhand_total_mwb_v v ';
15611           IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
15612             table_required  := ' mtl_onhand_total_v v ';   -- NSRIVAST, INVCONV
15613          END IF;                                         -- NSRIVAST, INVCONV
15614       ELSE
15615         table_required  := ' mtl_onhand_total_v v ';
15616       END IF;
15617 
15618 	--bug 6633612
15619 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15620 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
15621 	END IF;
15622 	--bug 6633612
15623 
15624       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
15625         query_str  := query_str || 'SELECT v.lot_number from ' || table_required;
15626         query_str  := query_str || 'WHERE 1=1 ';
15627       ELSE
15628         query_str  :=
15629               query_str
15630            || 'SELECT v.lot_number from'
15631            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
15632            || inv_mwb_globals.g_tree_lot_attr_query
15633            || ') mln, '
15634            || table_required;
15635         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
15636  		--BUG 7556505
15637 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15638 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15639 	           END IF;
15640 		--BUG 7556505
15641       END IF;
15642 
15643       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15644         query_str  := query_str || ' AND v.project_id = :pr_id ';
15645       END IF;
15646 
15647       --bug 6633612
15648 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15649 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
15650 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
15651 					 || ' AND rt.organization_id = mmt.organization_id '
15652 					 || ' AND rt.transaction_type = ''DELIVER'''
15653 					 || ' AND rt.destination_type_code = ''INVENTORY'''
15654 					 || ' AND mmt.transaction_id = v.create_transaction_id '
15655 					 || ' AND mmt.organization_id = v.organization_id ';
15656 
15657 	END IF;
15658 	--bug 6633612
15659 
15660       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15661         query_str  := query_str || ' AND v.task_id = :ta_id ';
15662       END IF;
15663 
15664   -- NSRIVAST, INVCONV, Start
15665       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15666          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
15667       END IF ;
15668       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
15669          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
15670       END IF ;
15671    -- NSRIVAST, INVCONV, End
15672 
15673       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
15674          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
15675          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
15676        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
15677          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
15678          query_str := query_str || ' AND  planning_organization_id in ';
15679          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
15680          query_str := query_str || '  where vendor_id = :vendor_id )';
15681       END IF;*/
15682       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
15683         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
15684         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
15685       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15686         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
15687         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
15688       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
15689         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
15690       END IF;
15691 
15692       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
15693         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
15694         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
15695       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
15696         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
15697         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
15698       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
15699         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
15700       END IF;
15701 
15702 /*
15703       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15704         IF inv_mwb_globals.g_only_lot_status = 1 THEN
15705           query_str  := query_str || 'AND (subinventory_status_id = :st_id or ';
15706           query_str  := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
15707         ELSE
15708           query_str  := query_str || 'AND lot_status_id = :st_id ';
15709         END IF;
15710       END IF;
15711 */
15712       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
15713       -- from onhand table (MOQD)
15714       if (l_default_status_id is not null) then -- Status at onhand level
15715          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
15716              query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
15717          ELSE
15718             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15719                query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
15720             END IF;
15721          END IF;
15722       else
15723          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
15724             query_str  := query_str || 'AND v.lot_status_id = :st_id ';
15725          ELSE
15726             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15727                query_str  := query_str || 'AND v.lot_status_id = :st_id ';
15728             END IF;
15729          END IF;
15730       end if;
15731 
15732       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15733         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
15734       END IF;
15735 
15736       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15737         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
15738       END IF;
15739 
15740     --KMOTUPAL ME # 3922793
15741       IF inv_mwb_globals.g_expired_lots = 'Y' THEN
15742         query_str := query_str || ' AND v.expiration_date  <= :expiration_date ';
15743       END IF;
15744     --KMOTUPAL ME # 3922793
15745 
15746       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
15747         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
15748       END IF;
15749 
15750       IF inv_mwb_globals.g_revision_controlled = 1 THEN
15751         query_str  := query_str || 'AND v.revision IS NULL ';
15752       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
15753         query_str  := query_str || 'AND v.revision IS NOT NULL ';
15754       END IF;
15755 
15756       IF inv_mwb_globals.g_revision IS NOT NULL
15757       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
15758         query_str  := query_str || 'AND v.revision = :rev ';
15759       END IF;
15760 
15761       IF inv_mwb_globals.g_serial_controlled = 1 THEN
15762         --query_str  := query_str || 'AND serial_number_control_code in (1,6) ';
15763         query_str  := query_str || 'AND v.item_serial_control in (1,6) ';
15764       ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
15765         --query_str  := query_str || 'AND serial_number_control_code in (2,5) ';
15766         query_str := query_str || 'AND v.item_serial_control in (2,5) ';
15767       END IF;
15768 
15769       IF inv_mwb_globals.g_containerized = 1 THEN
15770         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
15771       ELSIF inv_mwb_globals.g_containerized = 2 THEN
15772         query_str  := query_str || 'AND v.containerized_flag = 1 ';
15773       END IF;
15774 
15775       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
15776       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
15777         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
15778       END IF;
15779 
15780       IF inv_mwb_globals.g_locator_controlled = 1 THEN
15781         query_str  := query_str || 'AND v.locator_id IS NULL ';
15782       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
15783         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
15784       END IF;
15785 
15786       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
15787       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
15788         query_str  := query_str || 'AND v.locator_id = :loc_id ';
15789       END IF;
15790 
15791       --ER(3338592) Changes
15792       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
15793          query_str := query_str || ' AND v.item_description LIKE :item_description ';
15794       END IF;
15795       --ER(3338592) Changes
15796 
15797       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
15798       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
15799         query_str  := query_str || 'AND v.subinventory_code = :sub ';
15800       END IF;
15801 
15802       IF inv_mwb_globals.g_organization_id IS NOT NULL
15803       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
15804         query_str  := query_str || 'AND v.organization_id = :org_id ';
15805       END IF;
15806 
15807       query_str := query_str || ' AND v.lot_number is not null ';
15808 
15809       query_str  := query_str || 'GROUP BY v.lot_number ';
15810       query_str  := query_str || 'ORDER BY v.lot_number ';
15811     ELSIF(
15812           (
15813            inv_mwb_globals.g_serial_from IS NOT NULL
15814            OR inv_mwb_globals.g_serial_from IS NOT NULL
15815            OR inv_mwb_globals.g_tree_serial_number IS NOT NULL
15816            OR inv_mwb_globals.g_serial_controlled = 2
15817            OR inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL
15818            OR inv_mwb_globals.g_unit_number IS NOT NULL
15819           )
15820           AND inv_mwb_globals.g_lpn_from IS NULL
15821           AND inv_mwb_globals.g_lpn_to IS NULL
15822           AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
15823           AND nvl(inv_mwb_globals.g_prepacked,1) = 1
15824          ) THEN
15825       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
15826         table_required  := ' mtl_rcv_serial_oh_v v ';
15827       ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
15828         table_required  := ' mtl_onhand_serial_mwb_v v ';
15829          IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
15830           table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
15831         END IF;                                         -- NSRIVAST, INVCONV
15832       ELSE
15833         table_required  := ' mtl_onhand_serial_v v ';
15834       END IF;
15835 
15836         --bug 6633612
15837 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15838 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
15839 	END IF;
15840 	--bug 6633612
15841 
15842       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
15843          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
15844         query_str  := query_str || 'SELECT v.lot_number from ' || table_required;
15845         query_str  := query_str || 'WHERE 1=1 ';
15846       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
15847             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
15848         query_str  :=
15849               query_str
15850            || 'SELECT v.lot_number from'
15851            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
15852            || inv_mwb_globals.g_tree_serial_attr_query
15853            || ') msn, '
15854            || table_required;
15855         query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
15856       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
15857             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
15858         query_str  :=
15859               query_str
15860            || 'SELECT v.lot_number from'
15861            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
15862            || inv_mwb_globals.g_tree_lot_attr_query
15863            || ') mln, '
15864            || table_required;
15865         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
15866  		--BUG 7556505
15867 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15868 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15869 	           END IF;
15870 		--BUG 7556505
15871       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
15872             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
15873         query_str  :=
15874               query_str
15875            || 'SELECT v.lot_number from'
15876            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
15877            || inv_mwb_globals.g_tree_lot_attr_query
15878            || ') mln, '
15879            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
15880            || inv_mwb_globals.g_tree_serial_attr_query
15881            || ') msn, '
15882            || table_required;
15883         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
15884  		--BUG 7556505
15885 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
15886 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
15887 	           END IF;
15888 		--BUG 7556505
15889 	query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
15890       END IF;
15891 
15892       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
15893         query_str  := query_str || ' AND v.project_id = :pr_id ';
15894       END IF;
15895 
15896       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
15897         query_str  := query_str || ' AND v.task_id = :ta_id ';
15898       END IF;
15899       --bug 6633612
15900 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
15901 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
15902 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
15903 					 || ' AND rt.organization_id = mmt.organization_id '
15904 					 || ' AND rt.transaction_type = ''DELIVER'''
15905 					 || ' AND rt.destination_type_code = ''INVENTORY'''
15906 					 || ' AND mmt.transaction_id = v.last_transaction_id '
15907 					 || ' AND mmt.organization_id = v.organization_id ';
15908 
15909 	END IF;
15910 	--bug 6633612
15911 
15912       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
15913         query_str  := query_str || ' AND v.unit_number=:un_id ';
15914       END IF;
15915 
15916   -- NSRIVAST, INVCONV, Start
15917       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
15918          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
15919       END IF ;
15920       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
15921          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
15922       END IF ;
15923    -- NSRIVAST, INVCONV, End
15924 
15925       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
15926          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
15927          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
15928        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
15929          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
15930          query_str := query_str || ' AND  planning_organization_id in ';
15931          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
15932          query_str := query_str || '  where vendor_id = :vendor_id )';
15933       END IF;*/
15934       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
15935         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
15936         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
15937       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
15938         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
15939         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
15940       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
15941         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
15942       END IF;
15943 
15944       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
15945         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
15946         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
15947       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
15948         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
15949         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
15950       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
15951         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
15952       END IF;
15953 
15954       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
15955       -- from serial table (MSN)
15956       if (l_default_status_id is not null) then -- Status at onhand level
15957          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
15958              query_str  := query_str || 'AND v.serial_status_id = :st_id ';
15959          ELSE
15960             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15961                query_str  := query_str || 'AND v.serial_status_id = :st_id ';
15962             END IF;
15963          END IF;
15964       else
15965          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
15966             query_str  := query_str || 'AND v.lot_status_id = :st_id ';
15967          ELSE
15968             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15969                query_str  := query_str || 'AND v.lot_status_id = :st_id ';
15970             END IF;
15971          END IF;
15972       end if;
15973 
15974 /*
15975       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
15976         IF inv_mwb_globals.g_only_lot_status = 1 THEN
15977           query_str  := query_str || ' AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
15978           query_str  := query_str || ' lot_status_id = :st_id or serial_status_id = :st_id) ';
15979         ELSE
15980           query_str  := query_str || ' AND (lot_status_id = :st_id or :st_id IS NULL) ';
15981         END IF;
15982       END IF;
15983 */
15984 
15985       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
15986         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
15987       END IF;
15988 
15989       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
15990         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
15991       END IF;
15992 
15993     --KMOTUPAL ME # 3922793
15994       IF inv_mwb_globals.g_expired_lots = 'Y' THEN
15995         query_str := query_str || ' AND v.expiration_date  <= :expiration_date ';
15996       END IF;
15997     --KMOTUPAL ME # 3922793
15998 
15999       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16000         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
16001       END IF;
16002 
16003       IF inv_mwb_globals.g_revision_controlled = 1 THEN
16004         query_str  := query_str || 'AND v.revision IS NULL ';
16005       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
16006         query_str  := query_str || 'AND v.revision IS NOT NULL ';
16007       END IF;
16008 
16009       IF inv_mwb_globals.g_revision IS NOT NULL
16010       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
16011         query_str  := query_str || 'AND v.revision = :rev ';
16012       END IF;
16013 
16014       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
16015         query_str  := query_str || 'AND (v.serial_number = :serial_n) ';
16016       END IF;
16017 
16018       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
16019         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
16020       END IF;
16021 
16022       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
16023         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
16024       END IF;
16025 
16026       IF inv_mwb_globals.g_containerized = 1 THEN
16027         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
16028       ELSIF inv_mwb_globals.g_containerized = 2 THEN
16029         query_str  := query_str || 'AND v.containerized_flag = 1 ';
16030       END IF;
16031 
16032       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
16033       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
16034 	query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
16035       END IF;
16036 
16037       IF inv_mwb_globals.g_locator_controlled = 1 THEN
16038         query_str  := query_str || 'AND v.locator_id IS NULL ';
16039       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
16040         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
16041       END IF;
16042 
16043       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
16044       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
16045         query_str  := query_str || 'AND v.locator_id = :loc_id ';
16046       END IF;
16047 
16048       --ER(3338592) Changes
16049       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16050          query_str := query_str || ' AND v.item_description LIKE :item_description ';
16051       END IF;
16052       --ER(3338592) Changes
16053 
16054       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
16055       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16056         query_str  := query_str || 'AND v.subinventory_code = :sub ';
16057       END IF;
16058 
16059       IF inv_mwb_globals.g_organization_id IS NOT NULL
16060       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16061         query_str  := query_str || 'AND v.organization_id = :org_id ';
16062       END IF;
16063 
16064       query_str := query_str || ' AND v.lot_number is not null ';
16065 
16066       query_str  := query_str || 'GROUP BY v.lot_number ';
16067       query_str  := query_str || 'ORDER BY v.lot_number ';
16068     --Need to query both mtl_onhand_total_v and mtl_onhand_serial_v
16069     ELSIF(
16070           inv_mwb_globals.g_serial_from IS NULL
16071           AND inv_mwb_globals.g_serial_to IS NULL
16072           AND inv_mwb_globals.g_tree_serial_number IS NULL
16073           AND inv_mwb_globals.g_tree_serial_attr_query IS NULL
16074           AND inv_mwb_globals.g_unit_number IS NULL
16075           AND inv_mwb_globals.g_status_id IS NOT NULL
16076           AND inv_mwb_globals.g_lpn_from IS NULL
16077           AND inv_mwb_globals.g_lpn_to IS NULL
16078           AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
16079           AND nvl(inv_mwb_globals.g_prepacked,1) = 1
16080          ) THEN
16081       IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
16082         table_required  := ' mtl_onhand_total_mwb_v v ';
16083 --      ELSIF is_grade_t = TRUE THEN                            -- NSRIVAST, INVCONV
16084 --          table_required  := ' mtl_onhand_new_lpn_v moq ';    -- NSRIVAST, INVCONV
16085       ELSE
16086         table_required  := ' mtl_onhand_total_v v ';
16087       END IF;
16088 
16089       --bug 6633612
16090 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
16091 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
16092 	END IF;
16093 	--bug 6633612
16094 
16095       query_str  := 'SELECT lot_number from( ';
16096 
16097       IF inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL THEN
16098         query_str  := query_str || 'SELECT v.lot_number lot_number from ' || table_required;
16099         query_str  := query_str || 'WHERE 1=1 ';
16100       ELSE
16101         query_str  :=
16102               query_str
16103            || 'SELECT v.lot_number lot_number from'
16104            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
16105            || inv_mwb_globals.g_tree_lot_attr_query
16106            || ') mln, '
16107            || table_required;
16108         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
16109  		--BUG 7556505
16110 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16111 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
16112 	           END IF;
16113 		--BUG 7556505
16114       END IF;
16115 
16116       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
16117         query_str  := query_str || ' AND v.project_id = :pr_id ';
16118       END IF;
16119 
16120       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
16121         query_str  := query_str || ' AND v.task_id = :ta_id ';
16122       END IF;
16123 
16124       --bug 6633612
16125 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
16126 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
16127 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
16128 					 || ' AND rt.organization_id = mmt.organization_id '
16129 					 || ' AND rt.transaction_type = ''DELIVER'''
16130 					 || ' AND rt.destination_type_code = ''INVENTORY'''
16131 					 || ' AND mmt.transaction_id = v.create_transaction_id '
16132 					 || ' AND mmt.organization_id = v.organization_id ';
16133 
16134 	END IF;
16135 	--bug 6633612
16136 
16137   -- NSRIVAST, INVCONV, Start
16138       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
16139          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
16140       END IF ;
16141       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
16142          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
16143       END IF ;
16144    -- NSRIVAST, INVCONV, End
16145 
16146       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
16147          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
16148          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
16149        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
16150          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
16151          query_str := query_str || ' AND  planning_organization_id in ';
16152          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
16153          query_str := query_str || '  where vendor_id = :vendor_id )';
16154       END IF;*/
16155       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
16156         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
16157         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
16158       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
16159         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
16160         query_str  := query_str || ' AND owning_tp_type = 1 ';
16161       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
16162         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
16163       END IF;
16164 
16165       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
16166         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
16167         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
16168       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
16169         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
16170         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
16171       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
16172         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
16173       END IF;
16174 
16175       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
16176       -- from onhand table (MOQD)
16177       if (l_default_status_id is not null) then -- Status at onhand level
16178          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16179              query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
16180          ELSE
16181             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16182                query_str  := query_str || 'AND v.onhand_status_id = :st_id ';
16183             END IF;
16184          END IF;
16185       else
16186          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16187             query_str  := query_str || 'AND v.lot_status_id = :st_id ';
16188          ELSE
16189             IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
16190                query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
16191                query_str  := query_str || 'OR v.lot_status_id = :st_id) ';
16192             END IF;
16193          END IF;
16194       end if;
16195 
16196 /*
16197       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16198         IF inv_mwb_globals.g_only_lot_status = 1 THEN
16199           query_str  := query_str || 'AND (subinventory_status_id = :st_id or ';
16200           query_str  := query_str || 'locator_status_id = :st_id or lot_status_id = :st_id) ';
16201         ELSE
16202           query_str  := query_str || 'AND lot_status_id = :st_id ';
16203         END IF;
16204       END IF;
16205 */
16206       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16207         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
16208       END IF;
16209 
16210       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16211         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
16212       END IF;
16213 
16214     --KMOTUPAL ME # 3922793
16215       IF inv_mwb_globals.g_expired_lots = 'Y' THEN
16216         query_str := query_str || ' AND v.expiration_date  <= :expiration_date ';
16217       END IF;
16218     --KMOTUPAL ME # 3922793
16219 
16220       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16221         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
16222       END IF;
16223 
16224       IF inv_mwb_globals.g_revision_controlled = 1 THEN
16225         query_str  := query_str || 'AND v.revision IS NULL ';
16226       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
16227         query_str  := query_str || 'AND revision IS NOT NULL ';
16228       END IF;
16229 
16230       IF inv_mwb_globals.g_revision IS NOT NULL
16231       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
16232         query_str  := query_str || 'AND v.revision = :rev ';
16233       END IF;
16234 
16235       IF inv_mwb_globals.g_containerized = 1 THEN
16236         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
16237       ELSIF inv_mwb_globals.g_containerized = 2 THEN
16238         query_str  := query_str || 'AND v.containerized_flag = 1 ';
16239       END IF;
16240 
16241       -- query_str := query_str || 'AND serial_number_control_code in (1,6) ';
16242       query_str  :=
16243             query_str
16244          || ' AND exists '
16245          || ' ( select null from mtl_system_items msi WHERE '
16246          || ' v.organization_id = msi.organization_id and '
16247          || ' v.inventory_item_id =  msi.inventory_item_id and '
16248          || ' item_serial_control in (1,6) ) ';
16249 
16250       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
16251       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
16252         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
16253       END IF;
16254 
16255       IF inv_mwb_globals.g_locator_controlled = 1 THEN
16256         query_str  := query_str || 'AND v.locator_id IS NULL ';
16257       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
16258         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
16259       END IF;
16260 
16261       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
16262       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
16263         query_str  := query_str || 'AND v.locator_id = :loc_id ';
16264       END IF;
16265 
16266       --ER(3338592) Changes
16267       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16268          query_str := query_str || ' AND v.item_description LIKE :item_description ';
16269       END IF;
16270       --ER(3338592) Changes
16271 
16272       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
16273       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16274         query_str  := query_str || 'AND v.subinventory_code = :sub ';
16275       END IF;
16276 
16277       IF inv_mwb_globals.g_organization_id IS NOT NULL
16278       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16279          query_str  := query_str || 'AND v.organization_id = :org_id ';
16280       END IF;
16281 
16282       query_str  := query_str || 'UNION ';
16283 
16284       IF (inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
16285         table_required  := ' mtl_onhand_serial_mwb_v v ';
16286       ELSE
16287         table_required  := ' mtl_onhand_serial_v v ';
16288       END IF;
16289 
16290        --bug 6633612
16291 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
16292 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
16293 	END IF;
16294 	--bug 6633612
16295 
16296       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
16297          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
16298         query_str  := query_str || 'SELECT v.lot_number from ' || table_required;
16299         query_str  := query_str || 'WHERE 1=1 ';
16300       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
16301             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
16302         query_str  :=
16303               query_str
16304            || 'SELECT v.lot_number from'
16305            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
16306            || inv_mwb_globals.g_tree_lot_attr_query
16307            || ') mln, '
16308            || table_required;
16309         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
16310  		--BUG 7556505
16311 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16312 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
16313 	           END IF;
16314 		--BUG 7556505
16315       END IF;
16316 
16317       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
16318       -- from serial table (MSN)
16319       if (l_default_status_id is not null) then -- Status at onhand level
16320          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16321              query_str  := query_str || 'AND v.serial_status_id = :st_id ';
16322          ELSE
16323             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16324                query_str  := query_str || 'AND v.serial_status_id = :st_id ';
16325             END IF;
16326          END IF;
16327       else
16328          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16329             query_str  := query_str || 'AND v.lot_status_id = :st_id ';
16330          ELSE
16331             IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 6060233
16332                query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
16333                query_str  := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
16334             END IF;
16335          END IF;
16336       end if;
16337 
16338 /*
16339       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16340         IF inv_mwb_globals.g_only_lot_status = 1 THEN
16341           query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
16342           query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
16343         ELSE
16344           query_str  := query_str || 'AND (lot_status_id = :st_id or :st_id IS NULL) ';
16345         END IF;
16346       END IF;
16347 */
16348 
16349       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16350         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
16351       END IF;
16352 
16353       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16354         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
16355       END IF;
16356 
16357       --bug 6633612
16358 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
16359 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
16360 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
16361 					 || ' AND rt.organization_id = mmt.organization_id '
16362 					 || ' AND rt.transaction_type = ''DELIVER'''
16363 					 || ' AND rt.destination_type_code = ''INVENTORY'''
16364 					 || ' AND mmt.transaction_id = v.last_transaction_id '
16365 					 || ' AND mmt.organization_id = v.organization_id ';
16366 
16367 	END IF;
16368 	--bug 6633612
16369 
16370     --KMOTUPAL ME # 3922793
16371       IF inv_mwb_globals.g_expired_lots = 'Y' THEN
16372         query_str := query_str || ' AND v.expiration_date  <= :expiration_date ';
16373       END IF;
16374     --KMOTUPAL ME # 3922793
16375 
16376       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16377         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
16378       END IF;
16379 
16380       IF inv_mwb_globals.g_revision_controlled = 1 THEN
16381         query_str  := query_str || 'AND v.revision IS NULL ';
16382       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
16383         query_str  := query_str || 'AND v.revision IS NOT NULL ';
16384       END IF;
16385 
16386       IF inv_mwb_globals.g_revision IS NOT NULL
16387       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
16388         query_str  := query_str || 'AND v.revision = :rev ';
16389       END IF;
16390 
16391       IF inv_mwb_globals.g_containerized = 1 THEN
16392         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
16393       ELSIF inv_mwb_globals.g_containerized = 2 THEN
16394         query_str  := query_str || 'AND v.containerized_flag = 1 ';
16395       END IF;
16396 
16397       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
16398         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
16399       END IF;
16400 
16401       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
16402         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
16403       END IF;
16404 
16405       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
16406       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
16407         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
16408       END IF;
16409 
16410       IF inv_mwb_globals.g_locator_controlled = 1 THEN
16411         query_str  := query_str || 'AND v.locator_id IS NULL ';
16412       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
16413         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
16414       END IF;
16415 
16416       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
16417       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
16418         query_str  := query_str || 'AND v.locator_id = :loc_id ';
16419       END IF;
16420 
16421       --ER(3338592) Changes
16422       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16423          query_str := query_str || ' AND v.item_description LIKE :item_description ';
16424       END IF;
16425       --ER(3338592) Changes
16426 
16427       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
16428       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16429         query_str  := query_str || 'AND v.subinventory_code = :sub ';
16430       END IF;
16431 
16432       IF inv_mwb_globals.g_organization_id IS NOT NULL
16433       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16434         query_str  := query_str || 'AND v.organization_id = :org_id ';
16435       END IF;
16436 
16437       query_str  := query_str || ') GROUP BY lot_number ';
16438       query_str  := query_str || 'ORDER BY lot_number ';
16439     ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
16440           OR inv_mwb_globals.g_lpn_to IS NOT NULL
16441           OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
16442           OR inv_mwb_globals.g_prepacked <> 1) THEN
16443       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
16444         table_required  := ' mtl_onhand_lpn_mwb_v mol ';
16445       ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
16446         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
16447           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
16448           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
16449             table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
16450           END IF;                                          -- NSRIVAST, INVCONV
16451         ELSE
16452           table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
16453           IF is_grade_t = TRUE THEN                        -- %%NSRIVAST, INVCONV
16454             table_required  := ' mtl_onhand_new_lpn_v mol ';   -- %%NSRIVAST, INVCONV
16455           END IF;
16456         END IF;
16457       ELSE
16458         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
16459           table_required  := ' mtl_onhand_lpn_v mol  ';
16460           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
16461             table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
16462           END IF;                                          -- NSRIVAST, INVCONV
16463         ELSE
16464           table_required  := ' mtl_onhand_new_lpn_v mol ';
16465         END IF;
16466       END IF;
16467 
16468       query_str  := 'SELECT lot_number  ';
16469       query_str  := query_str || 'FROM ' || table_required;
16470 
16471       IF (inv_mwb_globals.g_lpn_from IS NOT NULL
16472           OR inv_mwb_globals.g_lpn_to IS NOT NULL)
16473          AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
16474         query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
16475         query_str  := query_str || ' WHERE 1=1 ';
16476 
16477         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
16478           query_str  := query_str || ' AND lpn_context = 3 ';
16479         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
16480           query_str  := query_str || ' AND (lpn_context=1  or lpn_context=9 or lpn_context=11 )';
16481         ELSIF inv_mwb_globals.g_prepacked = 1 THEN
16482           query_str  := query_str || 'AND lpn_context = 1 ';
16483         ELSIF inv_mwb_globals.g_prepacked <> 1
16484               AND inv_mwb_globals.g_prepacked <> 999
16485               AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
16486           query_str  := query_str || 'AND lpn_context = :prepacked ';
16487         END IF;
16488 
16489       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
16490       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
16491           query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
16492       END IF;
16493 
16494   -- NSRIVAST, INVCONV, Start
16495       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
16496          query_str := query_str || ' AND grade_code = :grade_f ' ;
16497       END IF ;
16498       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
16499          query_str := query_str || ' AND grade_code = :grade_c ' ;
16500       END IF ;
16501    -- NSRIVAST, INVCONV, End
16502 
16503       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
16504       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16505           query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
16506         END IF;
16507 
16508       IF inv_mwb_globals.g_organization_id IS NOT NULL
16509       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16510           query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
16511       END IF;
16512 
16513       IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
16514          IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
16515             query_str  := query_str || ' and license_plate_number = :lpn_f ';
16516          ELSE
16517    	    IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
16518                query_str  := query_str || ' and license_plate_number >= :lpn_f ';
16519     	    END IF;
16520  	    IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
16521                query_str  := query_str || ' and license_plate_number <= :lpn_t ';
16522    	    END IF;
16523          END IF;
16524       END IF;
16525 
16526         query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
16527       END IF;
16528 
16529       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
16530          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
16531         query_str  := query_str || 'WHERE 1=1 ';
16532       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
16533             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
16534         query_str  :=
16535                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
16536                      || ') msn ';
16537         query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
16538       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
16539             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
16540         query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
16541         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
16542  		--BUG 7556505
16543 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16544 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
16545 	           END IF;
16546 		--BUG 7556505
16547       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
16548             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
16549         query_str  :=
16550               query_str
16551            || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
16552            || inv_mwb_globals.g_tree_lot_attr_query
16553            || ') mln '
16554            || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
16555            || inv_mwb_globals.g_tree_serial_attr_query
16556            || ') msn ';
16557         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
16558  		--BUG 7556505
16559 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16560 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
16561 	           END IF;
16562 		--BUG 7556505
16563 	query_str  := query_str || 'AND msn.serial_num = serial_number ';
16564       END IF;
16565 
16566       /*LPN Status Project*/
16567       IF (l_default_status_id IS NOT NULL) THEN -- Status at onhand level
16568          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16569              query_str  := query_str || 'AND onhand_status_id = :st_id ';
16570          ELSE
16571             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16572                query_str  := query_str || 'AND onhand_status_id = :st_id ';
16573             END IF;
16574          END IF;
16575       ELSE
16576         IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16577           query_str  := query_str || 'AND lot_status_id = :st_id ';
16578         ELSE
16579           IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16580             query_str  := query_str || 'AND lot_status_id = :st_id ';
16581           END IF;
16582         END IF;
16583       END IF;
16584       /* End of fix for LPN Status Project */
16585 /*
16586       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16587         IF inv_mwb_globals.g_only_lot_status = 1 THEN
16588           query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
16589           query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
16590         ELSE
16591           query_str  := query_str || 'AND lot_status_id = :st_id ';
16592         END IF;
16593       END IF;
16594 */
16595       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
16596         query_str  := query_str || ' AND project_id = :pr_id ';
16597       END IF;
16598 
16599   -- NSRIVAST, INVCONV, Start
16600       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
16601          query_str := query_str || ' AND grade_code = :grade_f ' ;
16602       END IF ;
16603       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
16604          query_str := query_str || ' AND grade_code = :grade_c ' ;
16605       END IF ;
16606    -- NSRIVAST, INVCONV, End
16607 
16608       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
16609         query_str  := query_str || ' AND task_id = :ta_id ';
16610       END IF;
16611 
16612       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
16613         query_str  := query_str || ' AND unit_number=:un_id ';
16614       END IF;
16615 
16616       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
16617          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
16618          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
16619        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
16620          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
16621          query_str := query_str || ' AND  planning_organization_id in ';
16622          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
16623          query_str := query_str || '  where vendor_id = :vendor_id )';
16624       END IF;*/
16625 
16626       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
16627         query_str  := query_str || ' AND owning_organization_id = :own_org ';
16628         query_str  := query_str || ' AND owning_tp_type = 2 ';
16629       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
16630         query_str  := query_str || ' AND owning_organization_id = :own_org ';
16631         query_str  := query_str || ' AND owning_tp_type = 1 ';
16632       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
16633         query_str  := query_str || ' AND owning_tp_type = 1 ';
16634       END IF;
16635 
16636       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
16637         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
16638         query_str  := query_str || ' AND planning_tp_type = 2 ';
16639       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
16640         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
16641         query_str  := query_str || ' AND planning_tp_type = 1 ';
16642       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
16643         query_str  := query_str || ' AND planning_tp_type = 1 ';
16644       END IF;
16645 
16646       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16647         query_str  := query_str || 'AND lot_number >= :lot_f ';
16648       END IF;
16649 
16650       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16651         query_str  := query_str || 'AND lot_number <= :lot_t ';
16652       END IF;
16653 
16654     --KMOTUPAL ME # 3922793
16655       IF inv_mwb_globals.g_expired_lots = 'Y' THEN
16656         query_str := query_str || ' AND expiration_date  <= :expiration_date ';
16657       END IF;
16658     --KMOTUPAL ME # 3922793
16659 
16660       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16661         query_str  := query_str || 'AND cost_group_id = :cg_id ';
16662       END IF;
16663 
16664       IF inv_mwb_globals.g_revision_controlled = 1 THEN
16665         query_str  := query_str || 'AND revision IS NULL ';
16666       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
16667         query_str  := query_str || 'AND revision IS NOT NULL ';
16668       END IF;
16669 
16670       IF inv_mwb_globals.g_revision IS NOT NULL
16671       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
16672         query_str  := query_str || 'AND revision = :rev ';
16673       END IF;
16674 
16675       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
16676         query_str  := query_str || 'AND (serial_number = :serial_n) ';
16677       END IF;
16678 
16679       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
16680         query_str  := query_str || 'AND serial_number >= :serial_f ';
16681       END IF;
16682 
16683       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
16684         query_str  := query_str || 'AND serial_number <= :serial_t ';
16685       END IF;
16686 
16687       IF inv_mwb_globals.g_serial_controlled = 1 THEN
16688         query_str  :=
16689               query_str
16690            || ' AND exists '
16691            || ' ( select null from mtl_system_items msi WHERE '
16692            || ' mol.organization_id = msi.organization_id and '
16693            || ' mol.inventory_item_id =  msi.inventory_item_id and '
16694            || ' item_serial_control in (1,6) ) ';
16695       ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
16696         query_str  :=
16697               query_str
16698            || ' AND exists '
16699            || ' ( select null from mtl_system_items msi WHERE '
16700            || ' mol.organization_id = msi.organization_id and '
16701            || ' mol.inventory_item_id =  msi.inventory_item_id and '
16702            || ' item_serial_control in (2,5) ) ';
16703       END IF;
16704 
16705       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
16706         query_str  := query_str || ' AND lpn_context = 3 ';
16707       ELSIF inv_mwb_globals.g_prepacked = 1 THEN
16708         query_str  := query_str || 'AND lpn_context = 1 ';
16709       ELSIF inv_mwb_globals.g_prepacked <> 1
16710             AND inv_mwb_globals.g_prepacked <> 999
16711             AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
16712         query_str  := query_str || 'AND lpn_context = :prepacked ';
16713       END IF;
16714 
16715       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
16716         query_str  := query_str || 'AND MOL.lpn_id = :plpn_id ';
16717       ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL
16718             OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
16719         query_str  := query_str || 'AND MOL.outermost_lpn_id = X.outermost_lpn_id ';
16720       END IF;
16721 
16722       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
16723       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
16724         query_str  := query_str || 'AND inventory_item_id = :item_id ';
16725       END IF;
16726 
16727       IF inv_mwb_globals.g_locator_controlled = 1 THEN
16728         query_str  := query_str || 'AND locator_id IS NULL ';
16729       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
16730         query_str  := query_str || 'AND locator_id IS NOT NULL ';
16731       END IF;
16732 
16733       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
16734       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
16735         query_str  := query_str || 'AND locator_id = :loc_id ';
16736       END IF;
16737 
16738       --ER(3338592) Changes
16739       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16740          query_str := query_str || ' AND item_description LIKE :item_description ';
16741       END IF;
16742       --ER(3338592) Changes
16743 
16744       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
16745       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16746         query_str  := query_str || 'AND subinventory_code = :sub ';
16747       END IF;
16748 
16749       IF inv_mwb_globals.g_organization_id IS NOT NULL
16750       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16751         query_str  := query_str || 'AND organization_id = :org_id ';
16752       END IF;
16753 
16754       query_str  := query_str || 'GROUP BY lot_number  ';
16755       query_str  := query_str || 'ORDER BY lot_number ';
16756     END IF;
16757 
16758     -- Enable this during debugging
16759      inv_trx_util_pub.trace(query_str, 'Add_lot :- Material Workbench', 9);
16760     --trace1(query_str, 'add_lots', 9);
16761     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
16762     inv_mwb_globals.g_last_query := query_str;
16763     query_hdl       := DBMS_SQL.open_cursor;
16764     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
16765 
16766 
16767    IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
16768     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_org' ); --rs
16769       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
16770    ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
16771       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
16772    END IF;
16773 
16774     IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
16775     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_sub' ); --rs
16776       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
16777     ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
16778       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
16779     END IF;
16780 
16781     IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
16782     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_loc' ); --rs
16783       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
16784     ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
16785       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
16786     END IF;
16787 
16788    IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
16789     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_item' ); --rs
16790       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
16791     ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
16792       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
16793     END IF;
16794 
16795 
16796     IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
16797     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_rev' ); --rs
16798       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_tree_rev);
16799     ELSIF inv_mwb_globals.g_revision IS NOT NULL THEN
16800       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
16801     END IF;
16802 
16803     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
16804     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_cg' ); --rs
16805       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
16806     END IF;
16807 
16808     --BUG 7556505
16809     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
16810     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, ' parent_lot ');
16811       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
16812     END IF;
16813     --BUG 7556505
16814 
16815     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
16816     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lot_f' ); --rs
16817       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
16818     END IF;
16819 
16820     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
16821     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lot_to' ); --rs
16822       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
16823     END IF;
16824 
16825     --KMOTUPAL ME # 3922793
16826     IF inv_mwb_globals.g_expired_lots = 'Y' THEN
16827       DBMS_SQL.bind_variable(query_hdl,'expiration_date', inv_mwb_globals.g_expiration_date);
16828     END IF;
16829     --KMOTUPAL ME # 3922793
16830 
16831  -- NSRIVAST, INVCONV, Start
16832     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
16833       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
16834     END IF;
16835     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
16836       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
16837     END IF;
16838  -- NSRIVAST, INVCONV, End
16839 
16840     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
16841       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
16842     END IF;
16843 
16844     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
16845       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
16846     END IF;
16847 
16848     IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
16849       DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
16850     END IF;
16851 
16852     IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
16853        IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
16854            inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn1_f' ); --rs
16855           dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
16856        ELSE
16857           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
16858     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn_f' ); --rs
16859              dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
16860     	  END IF;
16861  	  IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
16862     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'lpn_t' ); --rs
16863              DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
16864    	  END IF;
16865        END IF;
16866     END IF;
16867 
16868     IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
16869     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_lpn' ); --rs
16870       DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
16871     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'tree_lpn after' ); --rs
16872     END IF;
16873 
16874       IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
16875          DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
16876       ELSE
16877          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
16878             DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
16879          END IF;
16880       END IF;
16881 
16882     IF inv_mwb_globals.g_prepacked <> 1
16883        AND inv_mwb_globals.g_prepacked <> 999
16884        AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
16885     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'prapacked' ); --rs
16886       DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
16887     END IF;
16888 
16889     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
16890       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
16891     END IF;
16892 
16893     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
16894       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
16895     END IF;
16896 
16897     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
16898       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
16899     END IF;
16900 
16901     --bug 6633612
16902     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
16903       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
16904     END IF;
16905     --bug 6633612
16906 
16907     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
16908       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
16909     END IF;
16910 
16911     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
16912        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
16913      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
16914        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
16915     END IF;*/
16916     IF (inv_mwb_globals.g_owning_qry_mode = 4)
16917        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
16918       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
16919     END IF;
16920 
16921     IF (inv_mwb_globals.g_planning_query_mode = 4)
16922        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
16923       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
16924     END IF;
16925 
16926     --ER(3338592) Changes
16927     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
16928     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'item_desc' ); --rs
16929        dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
16930     END IF;
16931 
16932 
16933     DBMS_SQL.define_column(query_hdl, 1, lot, 80);
16934     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
16935 
16936     LOOP
16937       -- fetch a row
16938       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
16939         -- fetch columns from the row
16940         DBMS_SQL.column_value(query_hdl, 1, lot);
16941 
16942         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
16943           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
16944           x_node_tbl(i).DEPTH  := 1;
16945           x_node_tbl(i).label  := lot;
16946           x_node_tbl(i).icon   := 'inv_lott';
16947           x_node_tbl(i).VALUE  := lot;
16948           x_node_tbl(i).TYPE   := 'LOT';
16949           i                    := i + 1;
16950         END IF;
16951 
16952         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
16953         j  := j + 1;
16954       ELSE
16955         EXIT;
16956       END IF;
16957     END LOOP;
16958 
16959     DBMS_SQL.close_cursor(query_hdl); -- close cursor
16960     x_node_value    := j;
16961     x_tbl_index     := i;
16962   EXCEPTION
16963     WHEN NO_DATA_FOUND THEN
16964       NULL;
16965     WHEN OTHERS THEN
16966       RAISE;
16967   END add_lots;
16968 
16969   PROCEDURE add_serials(
16970     x_node_value           IN OUT NOCOPY  NUMBER
16971   , x_node_tbl             IN OUT NOCOPY  fnd_apptree.node_tbl_type
16972   , x_tbl_index            IN OUT NOCOPY  NUMBER
16973   ) IS
16974     query_str      VARCHAR2(10000);
16975     query_hdl      NUMBER;
16976     rows_processed NUMBER;
16977     serial         mtl_serial_numbers.serial_number%TYPE;
16978     serial_control NUMBER;
16979     i              NUMBER                                  := x_tbl_index;
16980     j              NUMBER                                  := x_node_value;
16981     table_required VARCHAR2(300);
16982     is_grade_t     BOOLEAN DEFAULT FALSE ; -- NSRIVAST, INVCONV
16983     select_from_str VARCHAR2(2000);
16984     where_str VARCHAR2(2000);
16985     lpn_from_id wms_license_plate_numbers.lpn_id%type;
16986     lpn_to_id   wms_license_plate_numbers.lpn_id%type;
16987     l_default_status_id NUMBER; -- Onhand Material Status Support
16988 
16989         l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_SERIAL';
16990    BEGIN
16991 
16992       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
16993 
16994       IF inv_mwb_globals.g_view_by = 'STATUS' THEN
16995          inv_mwb_globals.g_only_subinventory_status := 1;
16996       ELSE
16997          inv_mwb_globals.g_only_subinventory_status := NULL;
16998       END IF;
16999 
17000       IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
17001         inv_mwb_globals.g_containerized := 1;
17002       ELSE
17003         inv_mwb_globals.g_containerized := 2;
17004       END IF;
17005 
17006       IF inv_mwb_globals.g_view_by IN ('SERIAL','LOT','ITEM') THEN
17007          inv_mwb_globals.g_containerized := NULL;
17008       END IF;
17009 
17010       -- Onhand Material Status Support
17011       if (inv_mwb_globals.g_organization_id is not null) then
17012          if (inv_cache.set_org_rec(inv_mwb_globals.g_organization_id)) then
17013            l_default_status_id :=  inv_cache.org_rec.default_status_id;
17014          end if;
17015       elsif (inv_mwb_globals.g_tree_organization_id is not null) then
17016          if (inv_cache.set_org_rec(inv_mwb_globals.g_tree_organization_id)) then
17017            l_default_status_id :=  inv_cache.org_rec.default_status_id;
17018          end if;
17019       end if;
17020 
17021 
17022   IF inv_mwb_globals.g_tree_doc_type_id IS NOT NULL
17023   AND inv_mwb_globals.g_tree_doc_type_id <> 1 THEN -- If add_item called from node_expanded of inbound lpn number.
17024 
17025 
17026     -- Exit out of the procedure if the item is not serial controlled
17027     IF (inv_mwb_globals.g_organization_id IS NOT NULL
17028 	OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
17029        AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
17030 	    OR inv_mwb_globals.g_inventory_item_id IS NOT NULL)	THEN
17031       SELECT serial_number_control_code
17032         INTO serial_control
17033         FROM mtl_system_items
17034        WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
17035 				   inv_mwb_globals.g_organization_id)
17036          AND inventory_item_id = NVL(inv_mwb_globals.g_inventory_item_id,
17037 				     inv_mwb_globals.g_tree_item_id);
17038 
17039       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Coming here after query : '|| serial_control );
17040 
17041       IF serial_control <> 2 THEN
17042         RETURN;
17043       END IF;
17044     END IF;
17045 
17046 
17047       select_from_str :=
17048          ' SELECT DISTINCT rss.serial_num
17049              FROM rcv_shipment_lines rsl
17050                 , mtl_supply ms
17051                 , rcv_serials_supply rss';
17052 
17053       where_str :=
17054          ' WHERE 1 = 1
17055              AND ms.supply_type_code <> ''RECEIVING''
17056              AND ms.shipment_header_id IS NOT NULL
17057              AND ms.shipment_line_id = rsl.shipment_line_id
17058              AND ms.to_organization_id = :to_org_id
17059              AND rsl.shipment_header_id = :shipment_header_id
17060              AND rsl.item_id = :item_id
17061              AND rss.shipment_line_id = ms.shipment_line_id ';
17062 
17063 
17064       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
17065          where_str := where_str || ' AND rsl.asn_lpn_id  = :lpn_from_id ';
17066       END IF;
17067 
17068       IF inv_mwb_globals.g_lot_from IS NOT NULL
17069       AND inv_mwb_globals.g_lot_to IS NOT NULL
17070       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
17071          where_str := where_str || ' AND rss.lot_num  = :lot_from ';
17072       END IF;
17073 
17074       IF inv_mwb_globals.g_lot_from IS NOT NULL
17075       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
17076          where_str := where_str || ' AND rss.lot_num  >= :lot_from ';
17077       END IF;
17078 
17079       IF inv_mwb_globals.g_lot_to IS NOT NULL
17080       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
17081          where_str := where_str || ' AND rss.lot_num  >= :lot_to ';
17082       END IF;
17083 
17084       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17085          where_str := where_str || ' AND rss.lot_num  = :tree_lot_number ';
17086       END IF;
17087 
17088       IF inv_mwb_globals.g_serial_from IS NOT NULL
17089       AND inv_mwb_globals.g_serial_to IS NOT NULL
17090       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
17091          where_str := where_str || ' AND rss.serial_num  = :serial_from ';
17092       END IF;
17093 
17094       IF inv_mwb_globals.g_serial_from IS NOT NULL
17095       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
17096          where_str := where_str || ' AND rss.serial_num  >= :serial_from ';
17097       END IF;
17098 
17099       IF inv_mwb_globals.g_serial_to IS NOT NULL
17100       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
17101          where_str := where_str || ' AND rss.serial_num  <= :serial_to ';
17102       END IF;
17103 
17104       IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
17105          where_str := where_str || ' AND rsl.item_revision  = :item_revision ';
17106       END IF;
17107 
17108       where_str := where_str || ' ORDER BY rss.serial_num ';
17109 
17110       query_str := select_from_str || where_str;
17111 
17112       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
17113       inv_mwb_globals.g_last_query := query_str;
17114 
17115       query_hdl  := DBMS_SQL.open_cursor;
17116       DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
17117 
17118       DBMS_SQL.bind_variable(query_hdl, 'to_org_id', NVL(inv_mwb_globals.g_organization_id
17119                                                        , inv_mwb_globals.g_tree_organization_id));
17120       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id', inv_mwb_globals.g_tree_doc_header_id);
17121       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
17122 
17123       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
17124          DBMS_SQL.bind_variable(query_hdl, 'lpn_from_id', inv_mwb_globals.g_tree_parent_lpn_id);
17125       END IF;
17126 
17127       IF inv_mwb_globals.g_lot_from IS NOT NULL
17128       AND inv_mwb_globals.g_lot_to IS NOT NULL
17129       AND inv_mwb_globals.g_lot_to = inv_mwb_globals.g_lot_from THEN
17130          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
17131       END IF;
17132 
17133       IF inv_mwb_globals.g_lot_from IS NOT NULL
17134       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
17135          DBMS_SQL.bind_variable(query_hdl, 'lot_from', inv_mwb_globals.g_lot_from);
17136       END IF;
17137 
17138       IF inv_mwb_globals.g_lot_to IS NOT NULL
17139       AND inv_mwb_globals.g_lot_to <> inv_mwb_globals.g_lot_from THEN
17140          DBMS_SQL.bind_variable(query_hdl, 'lot_to', inv_mwb_globals.g_lot_to);
17141       END IF;
17142 
17143       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17144          DBMS_SQL.bind_variable(query_hdl, 'tree_lot_number', inv_mwb_globals.g_tree_lot_number);
17145       END IF;
17146 
17147       IF inv_mwb_globals.g_serial_from IS NOT NULL
17148       AND inv_mwb_globals.g_serial_to IS NOT NULL
17149       AND inv_mwb_globals.g_serial_to = inv_mwb_globals.g_serial_from THEN
17150          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
17151       END IF;
17152 
17153       IF inv_mwb_globals.g_serial_from IS NOT NULL
17154       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
17155          DBMS_SQL.bind_variable(query_hdl, 'serial_from', inv_mwb_globals.g_serial_from);
17156       END IF;
17157 
17158       IF inv_mwb_globals.g_serial_to IS NOT NULL
17159       AND inv_mwb_globals.g_serial_to <> inv_mwb_globals.g_serial_from THEN
17160          DBMS_SQL.bind_variable(query_hdl, 'serial_to', inv_mwb_globals.g_serial_from);
17161       END IF;
17162 
17163       IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
17164          DBMS_SQL.bind_variable(query_hdl, 'item_revision', inv_mwb_globals.g_tree_rev);
17165       END IF;
17166 
17167     BEGIN
17168     DBMS_SQL.define_column(query_hdl, 1, serial, 30);
17169     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
17170     EXCEPTION
17171     WHEN NO_DATA_FOUND THEN
17172       NULL;
17173       RETURN;
17174     WHEN OTHERS THEN
17175       RAISE;
17176     END;
17177 
17178 
17179     LOOP
17180       -- fetch a row
17181       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
17182         -- fetch columns from the row
17183         DBMS_SQL.column_value(query_hdl, 1, serial);
17184 
17185         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
17186           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
17187           x_node_tbl(i).DEPTH  := 1;
17188           x_node_tbl(i).label  := serial;
17189           x_node_tbl(i).icon   := 'inv_seri';
17190           x_node_tbl(i).VALUE  := serial;
17191           x_node_tbl(i).TYPE   := 'SERIAL';
17192           i                    := i + 1;
17193         END IF;
17194 
17195         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
17196         j  := j + 1;
17197       ELSE
17198         EXIT;
17199       END IF;
17200     END LOOP;
17201 
17202 
17203     DBMS_SQL.close_cursor(query_hdl); -- close cursor
17204     x_node_value    := j;
17205     x_tbl_index     := i;
17206 
17207     RETURN;
17208   END IF;
17209 
17210 -- NSRIVAST, INVCONV, Start
17211    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
17212          is_grade_t     := TRUE ;
17213    END IF ;
17214 -- NSRIVAST, INVCONV, End
17215 
17216     -- Exit out of the procedure if the item is not serial controlled
17217     IF (inv_mwb_globals.g_organization_id IS NOT NULL
17218 	OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
17219        AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
17220 	    OR inv_mwb_globals.g_inventory_item_id IS NOT NULL)	THEN
17221       SELECT serial_number_control_code
17222         INTO serial_control
17223         FROM mtl_system_items
17224        WHERE organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
17225 				   inv_mwb_globals.g_organization_id)
17226          AND inventory_item_id = NVL(inv_mwb_globals.g_inventory_item_id,
17227 				     inv_mwb_globals.g_tree_item_id);
17228 
17229       IF serial_control IN(1, 6) THEN
17230         RETURN;
17231       END IF;
17232     END IF;
17233 
17234     IF (inv_mwb_globals.g_lpn_from IS NULL
17235         AND inv_mwb_globals.g_lpn_to IS NULL
17236         AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL
17237         AND nvl(inv_mwb_globals.g_prepacked,1) = 1) THEN
17238       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17239         table_required  := ' mtl_rcv_serial_oh_v v ';
17240       ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
17241         table_required  := ' mtl_onhand_serial_mwb_v v ';
17242          IF is_grade_t = TRUE THEN                       -- NSRIVAST, INVCONV
17243             table_required  := ' mtl_onhand_serial_v v ';   -- NSRIVAST, INVCONV
17244          END IF;                                         -- NSRIVAST, INVCONV
17245       ELSE
17246         table_required  := ' mtl_onhand_serial_v v ';
17247       END IF;
17248 
17249        --bug 6633612
17250 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17251 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
17252 	END IF;
17253 	--bug 6633612
17254 
17255       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
17256          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17257         query_str  := query_str || 'SELECT v.serial_number serial_number from ' || table_required;
17258         query_str  := query_str || ' WHERE 1=1 ';
17259       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
17260             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17261         query_str  :=
17262               query_str
17263            || 'SELECT v.serial_number serial_number from'
17264            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
17265            || inv_mwb_globals.g_tree_serial_attr_query
17266            || ') msn, '
17267            || table_required;
17268         query_str  := query_str || 'WHERE msn.serial_num = v.serial_number ';
17269       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
17270             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17271         query_str  :=
17272               query_str
17273            || 'SELECT v.serial_number serial_number from'
17274            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17275            || inv_mwb_globals.g_tree_lot_attr_query
17276            || ') mln, '
17277 	   || table_required;
17278         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
17279  		--BUG 7556505
17280 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17281 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17282 	           END IF;
17283 		--BUG 7556505
17284       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
17285             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17286         query_str  :=
17287               query_str
17288            || 'SELECT v.serial_number serial_number from'
17289            || '(SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17290            || inv_mwb_globals.g_tree_lot_attr_query
17291            || ') mln, '
17292            || '(SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
17293            || inv_mwb_globals.g_tree_serial_attr_query
17294            || ') msn, '
17295 	   || table_required;
17296         query_str  := query_str || 'WHERE mln.lot_num = v.lot_number ';
17297  		--BUG 7556505
17298 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17299 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17300 	           END IF;
17301 		--BUG 7556505
17302 	query_str  := query_str || 'AND msn.serial_num = v.serial_number ';
17303       END IF;
17304 
17305       -- Onhand Material Status Support: If status is tracked at onhand level then check for status
17306       -- from serial table (MSN)
17307       if (l_default_status_id is not null) then -- Status at onhand level
17308 
17309          inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Came here 1' );
17310 
17311          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
17312              query_str  := query_str || 'AND v.serial_status_id = :st_id ';
17313          ELSE
17314             IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17315                query_str  := query_str || 'AND v.serial_status_id = :st_id ';
17316             END IF;
17317          END IF;
17318       else
17319          IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
17320             query_str  := query_str || 'AND v.serial_status_id = :st_id ';
17321          ELSE
17322             IF inv_mwb_globals.g_status_id IS NOT NULL THEN -- Bug 606233
17323                query_str  := query_str || 'AND (v.subinventory_status_id = :st_id or v.locator_status_id = :st_id ';
17324                query_str  := query_str || 'OR v.lot_status_id = :st_id OR v.serial_status_id = :st_id) ';
17325             END IF;
17326          END IF;
17327       end if;
17328 
17329 /*
17330       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17331         IF inv_mwb_globals.g_only_serial_status = 1 THEN
17332           query_str  := query_str || 'AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
17333           query_str  := query_str || 'lot_status_id = :st_id or serial_status_id = :st_id) ';
17334         ELSE
17335           query_str  := query_str || 'AND serial_status_id = :st_id ';
17336         END IF;
17337       END IF;
17338 */
17339 
17340       IF inv_mwb_globals.g_lot_controlled = 1 THEN
17341         query_str  := query_str || 'AND v.lot_number IS NULL ';
17342       ELSIF inv_mwb_globals.g_lot_controlled = 2 THEN
17343         query_str  := query_str || 'AND v.lot_number IS NOT NULL ';
17344       END IF;
17345 
17346 	--bug 6633612
17347 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
17348 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
17349 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
17350 					 || ' AND rt.organization_id = mmt.organization_id '
17351 					 || ' AND rt.transaction_type = ''DELIVER'''
17352 					 || ' AND rt.destination_type_code = ''INVENTORY'''
17353 					 || ' AND mmt.transaction_id = v.last_transaction_id '
17354 					 || ' AND mmt.organization_id = v.organization_id ';
17355 
17356 	END IF;
17357 	--bug 6633612
17358 
17359       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17360         query_str  := query_str || 'AND v.lot_number = :lot_n ';
17361       END IF;
17362 
17363       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17364         query_str  := query_str || 'AND v.lot_number >= :lot_f ';
17365       END IF;
17366 
17367       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17368         query_str  := query_str || 'AND v.lot_number <= :lot_t ';
17369       END IF;
17370 
17371       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17372         query_str  := query_str || 'AND v.cost_group_id = :cg_id ';
17373       END IF;
17374 
17375   -- NSRIVAST, INVCONV, Start
17376       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17377          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
17378       END IF ;
17379       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
17380          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
17381       END IF ;
17382    -- NSRIVAST, INVCONV, End
17383 
17384       IF inv_mwb_globals.g_revision_controlled = 1 THEN
17385         query_str  := query_str || 'AND v.revision IS NULL ';
17386       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
17387         query_str  := query_str || 'AND v.revision IS NOT NULL ';
17388       END IF;
17389 
17390       IF inv_mwb_globals.g_revision IS NOT NULL
17391       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
17392         query_str  := query_str || 'AND v.revision = :rev ';
17393       END IF;
17394 
17395       IF inv_mwb_globals.g_containerized = 1 THEN
17396         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
17397       ELSIF inv_mwb_globals.g_containerized = 2 THEN
17398         query_str  := query_str || 'AND v.containerized_flag = 1 ';
17399       END IF;
17400 
17401       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
17402         query_str  := query_str || 'AND v.serial_number >= :serial_f ';
17403       END IF;
17404 
17405       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
17406         query_str  := query_str || 'AND v.serial_number <= :serial_t ';
17407       END IF;
17408 
17409       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
17410       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17411         query_str  := query_str || 'AND v.inventory_item_id = :item_id ';
17412       END IF;
17413 
17414       IF inv_mwb_globals.g_locator_controlled = 1 THEN
17415         query_str  := query_str || 'AND v.locator_id IS NULL ';
17416        /* part of bug fix 2424304 */
17417       --  ELSE
17418       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
17419         /* end of bug fix 2424304 */
17420         query_str  := query_str || 'AND v.locator_id IS NOT NULL ';
17421       END IF;
17422 
17423       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17424       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17425         query_str  := query_str || 'AND v.locator_id = :loc_id ';
17426       END IF;
17427 
17428       --ER(3338592) Changes
17429       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
17430          query_str := query_str || ' AND v.item_description LIKE :item_description ';
17431       END IF;
17432       --ER(3338592) Changes
17433 
17434       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17435       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17436         query_str  := query_str || 'AND v.subinventory_code = :sub ';
17437       END IF;
17438 
17439       IF inv_mwb_globals.g_organization_id IS NOT NULL
17440       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17441         query_str  := query_str || 'AND v.organization_id = :org_id ';
17442       END IF;
17443 
17444       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17445         query_str  := query_str || ' AND v.project_id = :pr_id ';
17446       END IF;
17447 
17448       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17449         query_str  := query_str || ' AND v.task_id = :ta_id ';
17450       END IF;
17451 
17452       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17453         query_str  := query_str || ' AND v.unit_number=:un_id ';
17454       END IF;
17455 
17456       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17457          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17458          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
17459        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17460          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
17461          query_str := query_str || ' AND  planning_organization_id in ';
17462          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
17463          query_str := query_str || '  where vendor_id = :vendor_id )';
17464       END IF;*/
17465 
17466 /* RS     IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17467         query_str  := query_str || ' AND owning_organization_id = :own_org ';
17468         query_str  := query_str || ' AND owning_tp_type = 2 ';
17469       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17470         query_str  := query_str || ' AND owning_organization_id = :own_org ';
17471         query_str  := query_str || ' AND owning_tp_type = 1 ';
17472       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17473         query_str  := query_str || ' AND owning_tp_type = 1 ';
17474       END IF;
17475 
17476       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17477         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
17478         query_str  := query_str || ' AND planning_tp_type = 2 ';
17479       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17480         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
17481         query_str  := query_str || ' AND planning_tp_type = 1 ';
17482       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17483         query_str  := query_str || ' AND planning_tp_type = 1 ';
17484       END IF;
17485 */
17486 
17487       IF  inv_mwb_globals.g_owning_qry_mode = 2 THEN
17488          query_str := query_str || ' AND v.owning_tp_type = 1 ';
17489       ELSIF inv_mwb_globals.g_owning_qry_mode = 3 THEN
17490        query_str := query_str || ' AND v.owning_tp_type = 1 ';
17491        IF inv_mwb_globals.g_owning_org IS NOT NULL THEN
17492           query_str := query_str || ' AND v.owning_organization_id = :own_org';
17493        END IF;
17494       END IF;
17495 
17496       IF  inv_mwb_globals.g_planning_query_mode = 2 THEN
17497        query_str := query_str || ' AND v.planning_tp_type = 1 ';
17498       ELSIF inv_mwb_globals.g_planning_query_mode = 3 THEN
17499        query_str := query_str || ' AND v.planning_tp_type = 1 ';
17500        IF inv_mwb_globals.g_planning_org IS NOT NULL THEN
17501           query_str := query_str || ' AND v.planning_organization_id = :plan_org';
17502        END IF;
17503       END IF;
17504 
17505 
17506       query_str  := query_str || ' AND v.serial_number is NOT NULL ';
17507       query_str  := query_str || 'GROUP BY serial_number ';
17508       query_str  := query_str || 'ORDER BY serial_number ';
17509     ELSIF(inv_mwb_globals.g_lpn_from IS NOT NULL
17510           OR inv_mwb_globals.g_lpn_to IS NOT NULL
17511           OR inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL
17512           OR inv_mwb_globals.g_prepacked <> 1) THEN
17513       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17514         table_required  := ' mtl_onhand_lpn_mwb_v mol ';
17515       ELSIF(inv_mwb_globals.g_status_id IS NULL AND inv_mwb_globals.g_only_subinventory_status IS NULL) THEN
17516         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
17517           table_required  := ' mtl_onhand_lpn_mwb_v mol ';
17518           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
17519             table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
17520           END IF;                                          -- NSRIVAST, INVCONV
17521         ELSE
17522           table_required  := ' mtl_onhand_new_lpn_mwb_v mol ';
17523         END IF;
17524       ELSE
17525         IF (inv_mwb_globals.g_prepacked <> 1) AND (inv_mwb_globals.g_prepacked <> 9) AND (inv_mwb_globals.g_prepacked <> 11) THEN
17526           table_required  := ' mtl_onhand_lpn_v mol  ';
17527           IF is_grade_t = TRUE THEN                        -- NSRIVAST, INVCONV
17528             table_required  := ' mtl_onhand_new_lpn_v ';   -- NSRIVAST, INVCONV
17529           END IF;                                          -- NSRIVAST, INVCONV
17530         ELSE
17531           table_required  := ' mtl_onhand_new_lpn_v mol ';
17532         END IF;
17533       END IF;
17534 
17535       query_str  := 'SELECT serial_number  ';
17536       query_str  := query_str || 'FROM ' || table_required;
17537 
17538       IF (inv_mwb_globals.g_lpn_from IS NOT NULL
17539           OR inv_mwb_globals.g_lpn_to IS NOT NULL)
17540          AND inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
17541         query_str  := query_str || ', (select outermost_lpn_id from wms_license_plate_numbers wlpn ';
17542         query_str  := query_str || ' WHERE 1=1 ';
17543 
17544         IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17545           query_str  := query_str || ' AND lpn_context = 3 ';
17546         ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
17547           query_str  := query_str || ' AND (lpn_context=1 or lpn_context=9 or lpn_context=11 )';
17548         ELSIF nvl(inv_mwb_globals.g_prepacked,1) = 1 THEN
17549           query_str  := query_str || 'AND lpn_context = 1 ';
17550         ELSIF inv_mwb_globals.g_prepacked <> 1
17551               AND inv_mwb_globals.g_prepacked <> 999
17552               AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
17553           query_str  := query_str || 'AND lpn_context = :prepacked ';
17554         END IF;
17555 
17556       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17557       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17558           query_str  := query_str || 'AND wlpn.locator_id = :loc_id ';
17559         END IF;
17560 
17561   -- NSRIVAST, INVCONV, Start
17562       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17563          query_str := query_str || ' AND grade_code = :grade_f ' ;
17564       END IF ;
17565       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
17566          query_str := query_str || ' AND grade_code = :grade_c ' ;
17567       END IF ;
17568    -- NSRIVAST, INVCONV, End
17569 
17570       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17571       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17572           query_str  := query_str || 'AND wlpn.subinventory_code = :sub ';
17573         END IF;
17574 
17575       IF inv_mwb_globals.g_organization_id IS NOT NULL
17576       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17577           query_str  := query_str || 'AND wlpn.organization_id = :org_id ';
17578       END IF;
17579 
17580       IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
17581          IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
17582             query_str  := query_str || ' and license_plate_number = :lpn_f ';
17583          ELSE
17584             IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
17585                query_str  := query_str || ' and license_plate_number >= :lpn_f ';
17586             END IF;
17587             IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
17588                query_str  := query_str || ' and license_plate_number <= :lpn_t ';
17589      	    END IF;
17590          END IF;
17591       END IF;
17592 
17593         query_str  := query_str || 'group by wlpn.outermost_lpn_id) X ';
17594       END IF;
17595 
17596       IF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
17597          AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17598         query_str  := query_str || 'WHERE 1=1 ';
17599       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NULL AND inv_mwb_globals.g_parent_lot IS NULL)
17600             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17601         query_str  :=
17602                      query_str || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_serial_attr_query
17603                      || ') msn ';
17604         query_str  := query_str || 'WHERE msn.serial_num = serial_number ';
17605       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
17606             AND inv_mwb_globals.g_tree_serial_attr_query IS NULL THEN
17607         query_str  := query_str || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 ' || inv_mwb_globals.g_tree_lot_attr_query || ') mln ';
17608         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
17609  		--BUG 7556505
17610 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17611 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17612 	           END IF;
17613 		--BUG 7556505
17614       ELSIF (inv_mwb_globals.g_tree_lot_attr_query IS NOT NULL OR inv_mwb_globals.g_parent_lot IS NOT NULL)
17615             AND inv_mwb_globals.g_tree_serial_attr_query IS NOT NULL THEN
17616         query_str  :=
17617               query_str
17618            || ', (SELECT lot_number lot_num, parent_lot_number FROM mtl_lot_numbers WHERE 1=1 '
17619            || inv_mwb_globals.g_tree_lot_attr_query
17620            || ') mln '
17621            || ', (SELECT serial_number serial_num FROM mtl_serial_numbers WHERE 1=1 '
17622            || inv_mwb_globals.g_tree_serial_attr_query
17623            || ') msn ';
17624         query_str  := query_str || 'WHERE mln.lot_num = lot_number ';
17625  		--BUG 7556505
17626 		   IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17627 		       query_str  := query_str || ' AND mln.parent_lot_number = :parent_lot ';
17628 	           END IF;
17629 		--BUG 7556505
17630 	query_str  := query_str || 'AND msn.serial_num = serial_number ';
17631       END IF;
17632 
17633       IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
17634          query_str  := query_str || 'AND serial_status_id = :st_id ';
17635          query_str := query_str || ' AND mol.lpn_id = x.outermost_lpn_id ';
17636       ELSE
17637          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17638             query_str  := query_str || 'AND serial_status_id = :st_id ';
17639             query_str := query_str || ' AND mol.lpn_id = x.outermost_lpn_id ';
17640          END IF;
17641       END IF;
17642 /*
17643       IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17644         IF inv_mwb_globals.g_only_serial_status = 1 THEN
17645           query_str  := query_str || ' AND (subinventory_status_id = :st_id or locator_status_id = :st_id or ';
17646           query_str  := query_str || ' lot_status_id = :st_id or serial_status_id = :st_id) ';
17647         ELSE
17648           query_str  := query_str || 'AND serial_status_id = :st_id ';
17649         END IF;
17650       END IF;
17651 -- */
17652 
17653       IF inv_mwb_globals.g_lot_controlled = 1 THEN
17654         query_str  := query_str || 'AND lot_number IS NULL ';
17655       ELSIF inv_mwb_globals.g_lot_controlled = 2 THEN
17656         query_str  := query_str || 'AND lot_number IS NOT NULL ';
17657       END IF;
17658 
17659       IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17660         query_str  := query_str || 'AND lot_number = :lot_n ';
17661       END IF;
17662 
17663       IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17664         query_str  := query_str || 'AND lot_number >= :lot_f ';
17665       END IF;
17666 
17667       IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17668         query_str  := query_str || 'AND lot_number <= :lot_t ';
17669       END IF;
17670 
17671       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17672         query_str  := query_str || 'AND cost_group_id = :cg_id ';
17673       END IF;
17674 
17675       IF inv_mwb_globals.g_revision_controlled = 1 THEN
17676         query_str  := query_str || 'AND revision IS NULL ';
17677       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
17678         query_str  := query_str || 'AND revision IS NOT NULL ';
17679       END IF;
17680 
17681       IF inv_mwb_globals.g_revision IS NOT NULL
17682       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
17683         query_str  := query_str || 'AND revision = :rev ';
17684       END IF;
17685 
17686       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
17687         query_str  := query_str || 'AND serial_number >= :serial_f ';
17688       END IF;
17689 
17690       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
17691         query_str  := query_str || 'AND serial_number <= :serial_t ';
17692       END IF;
17693 
17694       IF inv_mwb_globals.g_tree_mat_loc_id = 2 THEN
17695         query_str  := query_str || ' AND lpn_context = 3 ';
17696       ELSIF inv_mwb_globals.g_prepacked IS NULL THEN
17697          query_str := query_str || ' AND (lpn_context = 1 or lpn_context = 9 or lpn_context = 11) ';
17698       ELSIF inv_mwb_globals.g_prepacked = 1 THEN
17699         query_str  := query_str || 'AND lpn_context = 1 ';
17700       ELSIF inv_mwb_globals.g_prepacked <> 1
17701             AND inv_mwb_globals.g_prepacked <> 999
17702             AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
17703         query_str  := query_str || 'AND lpn_context = :prepacked ';
17704       END IF;
17705 
17706       IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
17707         query_str  := query_str || 'AND MOL.lpn_id = :plpn_id ';
17708       END IF;
17709 
17710 /*      IF inv_mwb_globals.g_lpn_from IS NOT NULL
17711          OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
17712         query_str  := query_str || ' AND mol.outermost_lpn_id = x.outermost_lpn_id ';
17713       END IF;
17714 */
17715 
17716       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
17717       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17718 	query_str  := query_str || 'AND inventory_item_id = :item_id ';
17719       END IF;
17720 
17721       IF inv_mwb_globals.g_locator_controlled = 1 THEN
17722         query_str  := query_str || 'AND locator_id IS NULL ';
17723       ELSIF inv_mwb_globals.g_locator_controlled = 2 THEN
17724         query_str  := query_str || 'AND locator_id IS NOT NULL ';
17725       END IF;
17726 
17727       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
17728       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
17729         query_str  := query_str || 'AND locator_id = :loc_id ';
17730       END IF;
17731 
17732       --ER(3338592) Changes
17733       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
17734          query_str := query_str || ' AND item_description LIKE :item_description ';
17735       END IF;
17736       --ER(3338592) Changes
17737 
17738       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
17739       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17740         query_str  := query_str || 'AND subinventory_code = :sub ';
17741       END IF;
17742 
17743       IF inv_mwb_globals.g_organization_id IS NOT NULL
17744       OR inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17745         query_str  := query_str || 'AND organization_id = :org_id ';
17746       END IF;
17747 
17748       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17749         query_str  := query_str || ' AND project_id = :pr_id ';
17750       END IF;
17751 
17752       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17753         query_str  := query_str || ' AND task_id = :ta_id ';
17754       END IF;
17755 
17756       IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17757         query_str  := query_str || ' AND unit_number=:un_id ';
17758       END IF;
17759 
17760       /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17761          query_str := query_str || ' AND PLANNING_TP_TYPE = 1 ';
17762          query_str := query_str || ' AND planning_organization_id = :site_id ' ;
17763        ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17764          query_str := query_str || ' AND  PLANNING_TP_TYPE = 1 ';
17765          query_str := query_str || ' AND  planning_organization_id in ';
17766          query_str := query_str || ' (select vendor_site_id from po_vendor_sites_all ';
17767          query_str := query_str || '  where vendor_id = :vendor_id )';
17768       END IF;*/
17769 /*      IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
17770         query_str  := query_str || ' AND owning_organization_id = :own_org ';
17771         query_str  := query_str || ' AND owning_tp_type = 2 ';
17772       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17773         query_str  := query_str || ' AND owning_organization_id = :own_org ';
17774         query_str  := query_str || ' AND owning_tp_type = 1 ';
17775       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
17776         query_str  := query_str || ' AND owning_tp_type = 1 ';
17777       END IF;
17778 
17779       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
17780         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
17781         query_str  := query_str || ' AND planning_tp_type = 2 ';
17782       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
17783         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
17784         query_str  := query_str || ' AND planning_tp_type = 1 ';
17785       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
17786         query_str  := query_str || ' AND planning_tp_type = 1 ';
17787       END IF;
17788 */
17789       IF  inv_mwb_globals.g_owning_qry_mode = 2 THEN
17790          query_str := query_str || ' AND owning_tp_type = 1 ';
17791       ELSIF inv_mwb_globals.g_owning_qry_mode = 3 THEN
17792        query_str := query_str || ' AND owning_tp_type = 1 ';
17793        IF inv_mwb_globals.g_owning_org IS NOT NULL THEN
17794           query_str := query_str || ' AND owning_organization_id = :own_org';
17795        END IF;
17796       END IF;
17797 
17798       IF  inv_mwb_globals.g_planning_query_mode = 2 THEN
17799        query_str := query_str || ' AND planning_tp_type = 1 ';
17800       ELSIF inv_mwb_globals.g_planning_query_mode = 3 THEN
17801        query_str := query_str || ' AND planning_tp_type = 1 ';
17802        IF inv_mwb_globals.g_planning_org IS NOT NULL THEN
17803           query_str := query_str || ' AND planning_organization_id = :plan_org';
17804        END IF;
17805       END IF;
17806 
17807       query_str  := query_str || 'GROUP BY serial_number  ';
17808       query_str  := query_str || 'ORDER BY serial_number ';
17809     END IF;
17810 
17811     inv_trx_util_pub.trace(query_str, 'Add Serails :- Material Workbench', 9);
17812     --trace1(query_str, 'add_serials', 9);
17813 
17814     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
17815 
17816     inv_mwb_globals.g_last_query := query_str;
17817     query_hdl       := DBMS_SQL.open_cursor;
17818     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
17819 
17820 
17821     IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
17822       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
17823     ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
17824       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
17825     END IF;
17826 
17827     IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
17828       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
17829     ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
17830       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
17831     END IF;
17832 
17833     IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
17834       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
17835     ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
17836       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
17837     END IF;
17838 
17839     IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
17840       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
17841     ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
17842       DBMS_SQL.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
17843     END IF;
17844 
17845     IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
17846       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_tree_rev);
17847     ELSIF inv_mwb_globals.g_revision IS NOT NULL THEN
17848       DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
17849     END IF;
17850 
17851     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
17852       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
17853     END IF;
17854 
17855     --BUG 7556505
17856     IF inv_mwb_globals.g_parent_lot IS NOT NULL THEN
17857       DBMS_SQL.bind_variable(query_hdl, 'parent_lot', inv_mwb_globals.g_parent_lot);
17858     END IF;
17859     --BUG 7556505
17860 
17861     IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
17862       DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
17863     END IF;
17864 
17865     IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
17866       DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
17867     END IF;
17868 
17869     IF inv_mwb_globals.g_tree_lot_number IS NOT NULL THEN
17870       DBMS_SQL.bind_variable(query_hdl, 'lot_n', inv_mwb_globals.g_tree_lot_number);
17871     END IF;
17872 
17873     --bug 6633612
17874     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
17875       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
17876     END IF;
17877     --bug 6633612
17878 
17879  -- NSRIVAST, INVCONV, Start
17880     IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
17881       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
17882     END IF;
17883     IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
17884       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
17885     END IF;
17886  -- NSRIVAST, INVCONV, End
17887 
17888     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
17889       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
17890     END IF;
17891 
17892     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
17893       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
17894     END IF;
17895 
17896     IF inv_mwb_globals.g_tree_parent_lpn_id IS NULL THEN
17897        IF inv_mwb_globals.g_lpn_from = inv_mwb_globals.g_lpn_to THEN
17898           dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
17899        ELSE
17900           IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
17901              dbms_sql.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
17902           END IF;
17903  	  IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
17904              dbms_sql.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
17905    	  END IF;
17906        END IF;
17907     END IF;
17908 
17909     IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
17910       DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
17911     END IF;
17912 
17913       IF inv_mwb_globals.g_only_subinventory_status = 1 THEN
17914          DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_tree_st_id);
17915       ELSE
17916          IF inv_mwb_globals.g_status_id IS NOT NULL THEN
17917             DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
17918          END IF;
17919       END IF;
17920 
17921     IF inv_mwb_globals.g_prepacked <> 1
17922        AND inv_mwb_globals.g_prepacked <> 999
17923        AND inv_mwb_globals.g_prepacked IS NOT NULL THEN
17924       DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
17925     END IF;
17926 
17927     IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
17928       DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
17929     END IF;
17930 
17931     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
17932       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
17933     END IF;
17934 
17935     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
17936       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
17937     END IF;
17938 
17939     IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
17940       DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
17941     END IF;
17942 
17943     /*IF inv_mwb_globals.g_site_id IS NOT NULL THEN
17944        dbms_sql.bind_variable(query_hdl,'site_id', inv_mwb_globals.g_site_id);
17945      ELSIF inv_mwb_globals.g_vendor_id is NOT NULL THEN
17946        dbms_sql.bind_variable(query_hdl,'vendor_id', inv_mwb_globals.g_vendor_id);
17947     END IF;*/
17948 /*    IF (inv_mwb_globals.g_owning_qry_mode = 4)
17949        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
17950       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
17951     END IF;
17952 
17953     IF (inv_mwb_globals.g_planning_query_mode = 4)
17954        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
17955       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
17956     END IF;
17957 */
17958 
17959       IF inv_mwb_globals.g_owning_qry_mode = 3
17960       AND inv_mwb_globals.g_owning_org IS NOT NULL THEN
17961          DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
17962       END IF;
17963 
17964       IF inv_mwb_globals.g_planning_query_mode = 3
17965       AND inv_mwb_globals.g_planning_org IS NOT NULL THEN
17966          DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
17967       END IF;
17968 
17969    --ER(3338592) Changes
17970    IF inv_mwb_globals.g_item_description IS NOT NULL THEN
17971       dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
17972    END IF;
17973 
17974     DBMS_SQL.define_column(query_hdl, 1, serial, 30);
17975     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
17976 
17977     LOOP
17978       -- fetch a row
17979       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
17980         -- fetch columns from the row
17981         DBMS_SQL.column_value(query_hdl, 1, serial);
17982 
17983         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
17984           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
17985           x_node_tbl(i).DEPTH  := 1;
17986           x_node_tbl(i).label  := serial;
17987           x_node_tbl(i).icon   := 'inv_seri';
17988           x_node_tbl(i).VALUE  := serial;
17989           x_node_tbl(i).TYPE   := 'SERIAL';
17990           i                    := i + 1;
17991         END IF;
17992 
17993         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
17994         j  := j + 1;
17995       ELSE
17996         EXIT;
17997       END IF;
17998     END LOOP;
17999 
18000     DBMS_SQL.close_cursor(query_hdl); -- close cursor
18001     x_node_value    := j;
18002     x_tbl_index     := i;
18003   EXCEPTION
18004     WHEN NO_DATA_FOUND THEN
18005       NULL;
18006     WHEN OTHERS THEN
18007       RAISE;
18008   END add_serials;
18009 
18010 
18011 -- NSRIVAST, INVCONV, Start
18012 -- Procedure to give grade nodes for view by Grade
18013  PROCEDURE add_grades  (
18014     x_node_value                IN OUT NOCOPY  NUMBER
18015   , x_node_tbl                  IN OUT NOCOPY  fnd_apptree.node_tbl_type
18016   , x_tbl_index                 IN OUT NOCOPY  NUMBER
18017   ) IS
18018 
18019     query_str      VARCHAR2(10000);
18020     query_hdl      NUMBER;
18021     rows_processed NUMBER;
18022     org_id         mtl_onhand_quantities.organization_id%TYPE;
18023     org_code       mtl_parameters.organization_code%TYPE;
18024     i              NUMBER                                       := x_tbl_index;
18025     j              NUMBER                                       := x_node_value;
18026     grade_control    mtl_system_items.GRADE_CONTROL_FLAG%TYPE  ;
18027     table_required VARCHAR2(300);
18028     --ER(3338592) Changes
18029     group_str      VARCHAR2(10000) ;
18030     having_str     VARCHAR2(10000) := ' HAVING 1=1 ';
18031     --End of ER Changes
18032 
18033     grade          mtl_grades.grade_code%TYPE ;
18034 
18035          l_procedure_name CONSTANT VARCHAR2(30) := 'ADD_GRADES';
18036    BEGIN
18037       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
18038 
18039 
18040      -- Exit out of the procedure if the item is not grade controlled
18041     IF (inv_mwb_globals.g_organization_id IS NOT NULL
18042 	OR inv_mwb_globals.g_tree_organization_id IS NOT NULL)
18043        AND (inv_mwb_globals.g_tree_item_id IS NOT NULL
18044 	    OR inv_mwb_globals.g_inventory_item_id IS NOT NULL)	THEN
18045 
18046       SELECT DISTINCT grade_control_flag
18047         INTO grade_control
18048         FROM mtl_system_items
18049        WHERE inventory_item_id = NVL(inv_mwb_globals.g_tree_item_id,
18050 				     inv_mwb_globals.g_inventory_item_id)
18051          AND organization_id = NVL(inv_mwb_globals.g_tree_organization_id,
18052 	                           inv_mwb_globals.g_organization_id);
18053 
18054       IF ( grade_control IN ('N','n') )  THEN
18055         RETURN;
18056       END IF;
18057     END IF;
18058 
18059 --       query_str  := query_str || ' SELECT grade_code from  mtl_grades ';
18060 --       query_str  := query_str || ' WHERE 1=1 ';
18061 
18062    -- Check the parameters on Find window, and build the query accordingly
18063      IF inv_mwb_globals.g_serial_from IS NULL
18064       AND inv_mwb_globals.g_serial_to IS NULL
18065       AND inv_mwb_globals.g_tree_serial_number IS NULL
18066       AND inv_mwb_globals.g_lpn_from IS NULL
18067       AND inv_mwb_globals.g_lpn_to IS NULL THEN
18068 
18069          table_required := ' MTL_ONHAND_TOTAL_V v ' ;
18070 
18071 	--bug 6633612
18072 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18073 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
18074 	END IF;
18075 	--bug 6633612
18076 
18077        query_str  := query_str || ' SELECT v.grade_code grade_code from ' || table_required;
18078        query_str  := query_str || ' WHERE 1=1 ';
18079 
18080       IF inv_mwb_globals.g_tree_item_id IS NOT NULL
18081       OR inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
18082         query_str  := query_str || ' AND v.inventory_item_id = :item_id ';
18083       END IF;
18084       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18085         query_str  := query_str || ' AND v.project_id = :pr_id ';
18086       END IF;
18087       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18088         query_str  := query_str || ' AND v.task_id = :ta_id ';
18089       END IF;
18090 
18091       --bug 6633612
18092 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18093 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
18094 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
18095 					 || ' AND rt.organization_id = mmt.organization_id '
18096 					 || ' AND rt.transaction_type = ''DELIVER'''
18097 					 || ' AND rt.destination_type_code = ''INVENTORY'''
18098 					 || ' AND mmt.transaction_id = v.create_transaction_id '
18099 					 || ' AND mmt.organization_id = v.organization_id ';
18100 
18101 	END IF;
18102 	--bug 6633612
18103 
18104      IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
18105         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
18106         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
18107       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
18108         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
18109         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
18110       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
18111         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
18112       END IF;
18113       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
18114         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
18115         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
18116       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
18117         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
18118         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
18119       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
18120         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
18121       END IF;
18122       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
18123         query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
18124       END IF;
18125       IF inv_mwb_globals.g_revision_controlled = 1 THEN
18126         query_str  := query_str || ' AND v.revision IS NULL ';
18127       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
18128         query_str  := query_str || ' AND v.revision IS NOT NULL ';
18129       END IF;
18130 
18131       IF inv_mwb_globals.g_revision IS NOT NULL
18132       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18133         query_str  := query_str || ' AND v.revision = :rev ';
18134       END IF;
18135 
18136       IF inv_mwb_globals.g_containerized = 1 THEN
18137         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
18138       ELSIF inv_mwb_globals.g_containerized = 2 THEN
18139         query_str  := query_str || ' AND v.containerized_flag = 1 ';
18140       END IF;
18141       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
18142       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
18143         query_str  := query_str || ' AND v.locator_id = :loc_id ';
18144       END IF;
18145       --ER(3338592) Changes
18146       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18147          query_str := query_str || ' AND v.item_description LIKE :item_description ';
18148       END IF;
18149       --ER(3338592) Changes
18150       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
18151       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18152         query_str  := query_str || ' AND v.subinventory_code = :sub ';
18153       END IF;
18154       IF inv_mwb_globals.g_serial_controlled = 1 THEN
18155             query_str  := query_str || ' AND v.item_serial_control in (1,6) ';
18156       ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
18157         query_str := query_str || ' AND v.item_serial_control in (2,5) ';
18158       END IF;
18159 
18160       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
18161          query_str := query_str || ' and v.grade_code = :grade_f ' ;
18162       END IF ;
18163 
18164       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
18165          query_str := query_str || ' and grade_code = :grade_c ' ;
18166       END IF ;
18167 
18168       query_str := query_str || ' AND v.grade_code is not null ';
18169 
18170       IF inv_mwb_globals.g_tree_organization_id IS NOT NULL
18171       OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
18172         query_str  := query_str || ' AND v.organization_id = :org_id ';
18173       ELSE
18174         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
18175         query_str  := query_str || ' FROM org_access_view oav ' ;
18176         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
18177         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
18178         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
18179       END IF;
18180 
18181       query_str  := query_str || ' GROUP BY grade_code ';
18182  --      query_str := query_str ||  ' ) ' ;  -- new
18183 
18184     ELSIF ((inv_mwb_globals.g_serial_from IS NOT NULL OR inv_mwb_globals.g_serial_to IS NOT NULL
18185          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
18186 
18187 	 table_required := ' MTL_ONHAND_SERIAL_V v ' ;
18188 
18189 	 --bug 6633612
18190 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18191 		table_required  := table_required || ' , rcv_transactions rt, mtl_material_transactions mmt ';
18192 	END IF;
18193 	--bug 6633612
18194 
18195       query_str  := query_str || ' SELECT v.grade_code grade_code from ' || table_required;
18196       query_str  := query_str || ' WHERE 1=1 ';
18197 
18198       IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
18199         query_str  := query_str || ' AND (v.serial_number = :serial_n) ';
18200       END IF;
18201       IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
18202         query_str  := query_str || ' AND v.serial_number >= :serial_f ';
18203       END IF;
18204       IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
18205         query_str  := query_str || ' AND v.serial_number <= :serial_t ';
18206       END IF;
18207       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
18208       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
18209         query_str  := query_str || ' AND v.inventory_item_id = :item_id ';
18210       END IF;
18211 
18212       	--bug 6633612
18213 	IF (inv_mwb_globals.g_shipment_header_id is not null) THEN
18214 		query_str := query_str || ' AND rt.shipment_header_id = :shipment_header_id '
18215 					 || ' AND rt.transaction_id = mmt.rcv_transaction_id '
18216 					 || ' AND rt.organization_id = mmt.organization_id '
18217 					 || ' AND rt.transaction_type = ''DELIVER'''
18218 					 || ' AND rt.destination_type_code = ''INVENTORY'''
18219 					 || ' AND mmt.transaction_id = v.last_transaction_id '
18220 					 || ' AND mmt.organization_id = v.organization_id ';
18221 
18222 	END IF;
18223 	--bug 6633612
18224 
18225       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18226         query_str  := query_str || ' AND v.project_id = :pr_id ';
18227       END IF;
18228       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18229         query_str  := query_str || ' AND v.task_id = :ta_id ';
18230       END IF;
18231       IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
18232         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
18233         query_str  := query_str || ' AND v.owning_tp_type = 2 ';
18234       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
18235         query_str  := query_str || ' AND v.owning_organization_id = :own_org ';
18236         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
18237       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
18238         query_str  := query_str || ' AND v.owning_tp_type = 1 ';
18239       END IF;
18240       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
18241         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
18242         query_str  := query_str || ' AND v.planning_tp_type = 2 ';
18243       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
18244         query_str  := query_str || ' AND v.planning_organization_id = :plan_org ';
18245         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
18246       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
18247         query_str  := query_str || ' AND v.planning_tp_type = 1 ';
18248       END IF;
18249       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
18250         query_str  := query_str || ' AND v.cost_group_id = :cg_id ';
18251       END IF;
18252       IF inv_mwb_globals.g_revision_controlled = 1 THEN
18253         query_str  := query_str || ' AND v.revision IS NULL ';
18254       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
18255         query_str  := query_str || ' AND v.revision IS NOT NULL ';
18256       END IF;
18257 
18258       IF inv_mwb_globals.g_revision IS NOT NULL
18259       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18260         query_str  := query_str || ' AND v.revision = :rev ';
18261       END IF;
18262       IF inv_mwb_globals.g_containerized = 1 THEN
18263         query_str  := query_str || ' AND (v.containerized_flag is null or v.containerized_flag <> 1) ';
18264       ELSIF inv_mwb_globals.g_containerized = 2 THEN
18265         query_str  := query_str || ' AND v.containerized_flag = 1 ';
18266       END IF;
18267 
18268       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
18269       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
18270         query_str  := query_str || ' AND v.locator_id = :loc_id ';
18271       END IF;
18272       --ER(3338592) Changes
18273       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18274          query_str := query_str || ' AND v.item_description LIKE :item_description ';
18275       END IF;
18276       --ER(3338592) Changes
18277       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
18278       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18279         query_str  := query_str || ' AND v.subinventory_code = :sub ';
18280       END IF;
18281       IF inv_mwb_globals.g_serial_controlled = 1 THEN
18282             query_str  := query_str || 'AND item_serial_control in (1,6) ';
18283       ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
18284         query_str := query_str || ' AND v.item_serial_control in (2,5) ';
18285       END IF;
18286 
18287       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
18288          query_str := query_str || ' AND v.grade_code = :grade_f ' ;
18289       END IF ;
18290 
18291       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
18292          query_str := query_str || ' AND v.grade_code = :grade_c ' ;
18293       END IF ;
18294 
18295       query_str := query_str || ' AND v.grade_code is not null ';
18296 
18297       IF inv_mwb_globals.g_tree_organization_id IS NOT NULL
18298       OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
18299         query_str  := query_str || ' AND v.organization_id = :org_id ';
18300       ELSE
18301         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
18302         query_str  := query_str || ' FROM org_access_view oav ' ;
18303         query_str  := query_str || ' WHERE oav.organization_id   = v.organization_id ' ;
18304         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
18305         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
18306       END IF;
18307 
18308  --       query_str := query_str ||  ' ) ' ;  -- new
18309 
18310       query_str  := query_str || ' GROUP BY grade_code ';
18311 
18312     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 )
18313             AND ( inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL ) ) THEN
18314 
18315        IF inv_mwb_globals.g_tree_mat_loc_id = 2
18316        OR inv_mwb_globals.g_chk_receiving = 1 THEN
18317 
18318          table_required := ' MTL_ONHAND_LPN_MWB_V ml ' ;
18319        ELSE
18320          table_required := ' MTL_ONHAND_NEW_LPN_MWB_V ml ' ;
18321        END IF ;
18322 
18323       query_str  := query_str || ' SELECT grade_code from ' || table_required;
18324       query_str  := query_str || ' WHERE 1=1 ';
18325 
18326       IF inv_mwb_globals.g_inventory_item_id IS NOT NULL
18327       OR inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
18328         query_str  := query_str || 'AND inventory_item_id = :item_id ';
18329       END IF;
18330       IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18331         query_str  := query_str || ' AND project_id = :pr_id ';
18332       END IF;
18333       IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18334         query_str  := query_str || ' AND task_id = :ta_id ';
18335       END IF;
18336      IF (inv_mwb_globals.g_owning_qry_mode = 4) THEN
18337         query_str  := query_str || ' AND owning_organization_id = :own_org ';
18338         query_str  := query_str || ' AND owning_tp_type = 2 ';
18339       ELSIF(inv_mwb_globals.g_owning_qry_mode = 3) THEN
18340         query_str  := query_str || ' AND owning_organization_id = :own_org ';
18341         query_str  := query_str || ' AND owning_tp_type = 1 ';
18342       ELSIF(inv_mwb_globals.g_owning_qry_mode = 2) THEN
18343         query_str  := query_str || ' AND owning_tp_type = 1 ';
18344       END IF;
18345       IF (inv_mwb_globals.g_planning_query_mode = 4) THEN
18346         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
18347         query_str  := query_str || ' AND planning_tp_type = 2 ';
18348       ELSIF(inv_mwb_globals.g_planning_query_mode = 3) THEN
18349         query_str  := query_str || ' AND planning_organization_id = :plan_org ';
18350         query_str  := query_str || ' AND planning_tp_type = 1 ';
18351       ELSIF(inv_mwb_globals.g_planning_query_mode = 2) THEN
18352         query_str  := query_str || ' AND planning_tp_type = 1 ';
18353       END IF;
18354       IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
18355         query_str  := query_str || ' AND cost_group_id = :cg_id ';
18356       END IF;
18357       IF inv_mwb_globals.g_revision_controlled = 1 THEN
18358         query_str  := query_str || ' AND revision IS NULL ';
18359       ELSIF inv_mwb_globals.g_revision_controlled = 2 THEN
18360         query_str  := query_str || ' AND revision IS NOT NULL ';
18361       END IF;
18362 
18363       IF inv_mwb_globals.g_revision IS NOT NULL
18364       OR inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18365         query_str  := query_str || ' AND revision = :rev ';
18366       END IF;
18367 
18368       IF inv_mwb_globals.g_containerized = 1 THEN
18369         query_str  := query_str || ' AND (containerized_flag is null or containerized_flag <> 1) ';
18370       ELSIF inv_mwb_globals.g_containerized = 2 THEN
18371         query_str  := query_str || 'AND containerized_flag = 1 ';
18372       END IF;
18373 
18374       IF inv_mwb_globals.g_tree_loc_id IS NOT NULL
18375       OR inv_mwb_globals.g_locator_id IS NOT NULL THEN
18376         query_str  := query_str || ' AND locator_id = :loc_id ';
18377       END IF;
18378 
18379       --ER(3338592) Changes
18380       IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18381          query_str := query_str || ' AND item_description LIKE :item_description ';
18382       END IF;
18383       --ER(3338592) Changes
18384       IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL
18385       OR inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18386         query_str  := query_str || ' AND subinventory_code = :sub ';
18387       END IF;
18388       IF inv_mwb_globals.g_serial_controlled = 1 THEN
18389             query_str  := query_str || ' AND item_serial_control in (1,6) ';
18390       ELSIF inv_mwb_globals.g_serial_controlled = 2 THEN
18391         query_str := query_str || ' AND item_serial_control in (2,5) ';
18392       END IF;
18393       IF inv_mwb_globals.g_lpn_from IS NOT NULL OR inv_mwb_globals.g_lpn_to IS NOT NULL THEN
18394          IF inv_mwb_globals.g_lpn_from IS NOT NULL AND inv_mwb_globals.g_lpn_to IS NULL THEN
18395             query_str  := query_str || ' AND license_plate_number >= :lpn_f ';
18396           ELSIF inv_mwb_globals.g_lpn_from IS NULL AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
18397             query_str  := query_str || ' AND license_plate_number <= :lpn_t ';
18398           ELSIF inv_mwb_globals.g_lpn_from IS NOT NULL  AND inv_mwb_globals.g_lpn_to IS NOT NULL THEN
18399             query_str  := query_str || ' AND license_plate_number >= :lpn_f ';
18400             query_str  := query_str || ' AND license_plate_number <= :lpn_t ';
18401           END IF;
18402       END IF;
18403 
18404       IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
18405          query_str := query_str || ' AND grade_code = :grade_f ' ;
18406       END IF ;
18407 
18408       IF inv_mwb_globals.g_tree_grade_code  IS NOT NULL THEN
18409          query_str := query_str || ' AND grade_code = :grade_c ' ;
18410       END IF ;
18411 
18412       query_str := query_str || ' AND grade_code is not NULL ';
18413 
18414       IF inv_mwb_globals.g_tree_organization_id IS NOT NULL
18415       OR inv_mwb_globals.g_organization_id IS NOT NULL THEN
18416         query_str  := query_str || ' AND organization_id = :org_id ';
18417       ELSE
18418         query_str  := query_str || ' and EXISTS ( SELECT 1 ' ;
18419         query_str  := query_str || ' FROM org_access_view oav ' ;
18420         query_str  := query_str || ' WHERE oav.organization_id   = ml.organization_id ' ;
18421         query_str  := query_str || ' AND oav.responsibility_id   = :responsibility_id ' ;
18422         query_str  := query_str || ' AND oav.resp_application_id = :resp_application_id ) ' ;
18423       END IF;
18424 
18425 --        query_str := query_str ||  ' ) ' ;  -- new
18426 
18427       query_str  := query_str || ' GROUP BY grade_code ';
18428 
18429    END IF ;
18430 
18431    inv_trx_util_pub.trace( query_str, 'Add-Grades Material Workbench', 9);
18432    -- execute the query and populate the node table
18433     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, query_str );
18434     inv_mwb_globals.g_last_query := query_str;
18435     query_hdl       := DBMS_SQL.open_cursor;
18436     DBMS_SQL.parse(query_hdl, query_str, DBMS_SQL.native);
18437 
18438 
18439    IF inv_mwb_globals.g_grade_from_code IS NOT NULL THEN
18440       DBMS_SQL.bind_variable(query_hdl, 'grade_f',inv_mwb_globals.g_grade_from_code );
18441    END IF;
18442 
18443    IF inv_mwb_globals.g_tree_grade_code IS NOT NULL THEN
18444       DBMS_SQL.bind_variable(query_hdl, 'grade_c', inv_mwb_globals.g_tree_grade_code);
18445    END IF;
18446 
18447    IF inv_mwb_globals.g_tree_organization_id IS NOT NULL THEN
18448       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_tree_organization_id);
18449    ELSIF inv_mwb_globals.g_organization_id IS NOT NULL THEN
18450       DBMS_SQL.bind_variable(query_hdl, 'org_id', inv_mwb_globals.g_organization_id);
18451    END IF;
18452 
18453    IF inv_mwb_globals.g_organization_id IS NULL THEN
18454       IF inv_mwb_globals.g_responsibility_id  IS NOT NULL THEN
18455          dbms_sql.bind_variable(query_hdl, 'responsibility_id', inv_mwb_globals.g_responsibility_id );
18456       END IF;
18457       IF inv_mwb_globals.g_resp_application_id  IS NOT NULL THEN
18458          dbms_sql.bind_variable(query_hdl, 'resp_application_id', inv_mwb_globals.g_resp_application_id );
18459       END IF;
18460     END IF;
18461 
18462     IF inv_mwb_globals.g_tree_subinventory_code IS NOT NULL THEN
18463       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_tree_subinventory_code);
18464     ELSIF inv_mwb_globals.g_subinventory_code IS NOT NULL THEN
18465       DBMS_SQL.bind_variable(query_hdl, 'sub', inv_mwb_globals.g_subinventory_code);
18466     END IF;
18467 
18468     IF inv_mwb_globals.g_tree_loc_id IS NOT NULL THEN
18469       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_tree_loc_id);
18470     ELSIF inv_mwb_globals.g_locator_id IS NOT NULL THEN
18471       DBMS_SQL.bind_variable(query_hdl, 'loc_id', inv_mwb_globals.g_locator_id);
18472     END IF;
18473 
18474 
18475     IF inv_mwb_globals.g_tree_rev IS NOT NULL THEN
18476 		DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_tree_rev);
18477 	 ELSIF inv_mwb_globals.g_revision IS NOT NULL THEN
18478 		DBMS_SQL.bind_variable(query_hdl, 'rev', inv_mwb_globals.g_revision);
18479 	 END IF;
18480 
18481     IF inv_mwb_globals.g_cost_group_id IS NOT NULL THEN
18482       DBMS_SQL.bind_variable(query_hdl, 'cg_id', inv_mwb_globals.g_cost_group_id);
18483     END IF;
18484   --  IF inv_mwb_globals.g_lot_from IS NOT NULL THEN
18485   --      DBMS_SQL.bind_variable(query_hdl, 'lot_f', inv_mwb_globals.g_lot_from);
18486   --  END IF;
18487   --  IF inv_mwb_globals.g_lot_to IS NOT NULL THEN
18488   --    DBMS_SQL.bind_variable(query_hdl, 'lot_t', inv_mwb_globals.g_lot_to);
18489   --  END IF;
18490     IF inv_mwb_globals.g_serial_from IS NOT NULL THEN
18491       DBMS_SQL.bind_variable(query_hdl, 'serial_f', inv_mwb_globals.g_serial_from);
18492     END IF;
18493     IF inv_mwb_globals.g_serial_to IS NOT NULL THEN
18494       DBMS_SQL.bind_variable(query_hdl, 'serial_t', inv_mwb_globals.g_serial_to);
18495     END IF;
18496 
18497     --bug 6633612
18498     IF inv_mwb_globals.g_shipment_header_id IS NOT NULL THEN
18499       DBMS_SQL.bind_variable(query_hdl, 'shipment_header_id',inv_mwb_globals.g_shipment_header_id );
18500     END IF;
18501     --bug 6633612
18502 
18503     IF inv_mwb_globals.g_tree_serial_number IS NOT NULL THEN
18504       DBMS_SQL.bind_variable(query_hdl, 'serial_n', inv_mwb_globals.g_tree_serial_number);
18505     END IF;
18506     IF inv_mwb_globals.g_lpn_from IS NOT NULL THEN
18507       DBMS_SQL.bind_variable(query_hdl, 'lpn_f', inv_mwb_globals.g_lpn_from);
18508     END IF;
18509     IF inv_mwb_globals.g_lpn_to IS NOT NULL THEN
18510       DBMS_SQL.bind_variable(query_hdl, 'lpn_t', inv_mwb_globals.g_lpn_to);
18511     END IF;
18512   --  IF inv_mwb_globals.g_tree_parent_lpn_id IS NOT NULL THEN
18513   --    DBMS_SQL.bind_variable(query_hdl, 'plpn_id', inv_mwb_globals.g_tree_parent_lpn_id);
18514   --  END IF;
18515 --    IF inv_mwb_globals.g_status_id IS NOT NULL THEN
18516 --      DBMS_SQL.bind_variable(query_hdl, 'st_id', inv_mwb_globals.g_status_id);
18517 --    END IF;
18518 --    IF inv_mwb_globals.g_prepacked <> 1
18519 --       AND inv_mwb_globals.g_prepacked <> 999 THEN
18520 --      DBMS_SQL.bind_variable(query_hdl, 'prepacked', inv_mwb_globals.g_prepacked);
18521 --    END IF;
18522 --  IF inv_mwb_globals.g_mln_context_code IS NOT NULL THEN
18523 --      DBMS_SQL.bind_variable(query_hdl, 'mln_context', inv_mwb_globals.g_mln_context_code);
18524 --    END IF;
18525     IF inv_mwb_globals.g_project_id IS NOT NULL THEN
18526       DBMS_SQL.bind_variable(query_hdl, 'pr_id', inv_mwb_globals.g_project_id);
18527     END IF;
18528     IF inv_mwb_globals.g_task_id IS NOT NULL THEN
18529       DBMS_SQL.bind_variable(query_hdl, 'ta_id', inv_mwb_globals.g_task_id);
18530     END IF;
18531 --    IF inv_mwb_globals.g_unit_number IS NOT NULL THEN
18532 --      DBMS_SQL.bind_variable(query_hdl, 'un_id', inv_mwb_globals.g_unit_number);
18533 --    END IF;
18534      IF (inv_mwb_globals.g_owning_qry_mode = 4)
18535        OR(inv_mwb_globals.g_owning_qry_mode = 3) THEN
18536       DBMS_SQL.bind_variable(query_hdl, 'own_org', inv_mwb_globals.g_owning_org);
18537     END IF;
18538     IF (inv_mwb_globals.g_planning_query_mode = 4)
18539        OR(inv_mwb_globals.g_planning_query_mode = 3) THEN
18540       DBMS_SQL.bind_variable(query_hdl, 'plan_org', inv_mwb_globals.g_planning_org);
18541     END IF;
18542     --ER(3338592) Changes
18543     IF inv_mwb_globals.g_item_description IS NOT NULL THEN
18544        dbms_sql.bind_variable(query_hdl, 'item_description', inv_mwb_globals.g_item_description);
18545     END IF;
18546     IF inv_mwb_globals.g_tree_item_id IS NOT NULL THEN
18547        dbms_sql.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_tree_item_id);
18548     ELSIF inv_mwb_globals.g_inventory_item_id IS NOT NULL THEN
18549        dbms_sql.bind_variable(query_hdl, 'item_id', inv_mwb_globals.g_inventory_item_id);
18550     END IF;
18551 
18552     DBMS_SQL.define_column(query_hdl, 1, grade, 150);
18553     rows_processed  := DBMS_SQL.EXECUTE(query_hdl);
18554 
18555     --inv_trx_util_pub.trace( 'Material Workbench rows processed  ' || rows_processed, 'Material Workbench', 9);
18556 
18557     LOOP
18558       -- fetch a row
18559       IF DBMS_SQL.fetch_rows(query_hdl) > 0 THEN
18560         -- fetch columns from the row
18561         DBMS_SQL.column_value(query_hdl, 1, grade);
18562         IF j >= inv_mwb_globals.g_tree_node_low_value THEN
18563           x_node_tbl(i).state  := inv_mwb_globals.g_tree_node_state;
18564           x_node_tbl(i).DEPTH  := 1;
18565           x_node_tbl(i).label  := substr(grade,1,80);
18566           x_node_tbl(i).icon   := 'grades_cctitle' ;
18567           x_node_tbl(i).VALUE  := grade;
18568           x_node_tbl(i).TYPE   := 'GRADE';
18569           i                    := i + 1;
18570         END IF;
18571         EXIT WHEN j >= inv_mwb_globals.g_tree_node_high_value;
18572         j  := j + 1;
18573       ELSE
18574         EXIT;
18575       END IF;
18576     END LOOP;
18577     DBMS_SQL.close_cursor(query_hdl); -- close cursor
18578     x_node_value    := j;
18579     x_tbl_index     := i;
18580   EXCEPTION
18581     WHEN NO_DATA_FOUND THEN
18582       NULL;
18583     WHEN OTHERS THEN
18584       RAISE;
18585   END add_grades ;
18586   -- NSRIVAST, INVCONV, End
18587 
18588   -- Procedure to get the flexfield structure of mtl_lot_numbers flexfield.
18589   -- This procedure appends the entries to a table that has
18590   -- already been populated
18591   PROCEDURE get_mln_attributes_structure(
18592     x_attributes       IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
18593   , x_attributes_count OUT NOCOPY    NUMBER
18594   , x_return_status    OUT NOCOPY    VARCHAR2
18595   , x_msg_count        OUT NOCOPY    NUMBER
18596   , x_msg_data         OUT NOCOPY    NUMBER
18597  -- , p_mln_context_code IN            VARCHAR2
18598   ) IS
18599     -- Cursor to get the segments that are enabled in the given context and
18600     -- IN the global context
18601     CURSOR mln_structure IS
18602       SELECT   fdfcu.form_left_prompt
18603              , fdfcu.application_column_name
18604           FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
18605          WHERE fdfcu.application_id = fa.application_id
18606            AND fa.application_short_name = 'INV'
18607            AND fdfcu.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
18608            AND(
18609                fdfcu.descriptive_flex_context_code IN(
18610                  SELECT fdfc.descriptive_flex_context_code
18611                    FROM fnd_descr_flex_contexts_vl fdfc
18612                   WHERE fdfc.global_flag = 'Y'
18613                     AND fdfc.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
18614                     AND fdfc.application_id = fa.application_id)
18615                OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_mln_context_code
18616               )
18617            AND fdfcu.enabled_flag = 'Y'
18618       ORDER BY fdfcu.column_seq_num;
18619       l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MLN_ATTRIBUTES_STRUCTURE';
18620    BEGIN
18621     inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
18622 
18623     x_return_status     := fnd_api.g_ret_sts_unexp_error;
18624     x_attributes_count  := x_attributes.COUNT;
18625 
18626     FOR mln_structure_rec IN mln_structure LOOP
18627       x_attributes_count                            := x_attributes_count + 1;
18628       x_attributes(x_attributes_count).prompt       := mln_structure_rec.form_left_prompt;
18629       x_attributes(x_attributes_count).column_type  := 'VARCHAR2';
18630       x_attributes(x_attributes_count).column_name  := mln_structure_rec.application_column_name;
18631     END LOOP;
18632 
18633     x_return_status     := fnd_api.g_ret_sts_success;
18634   END get_mln_attributes_structure;
18635 
18636   -- Procedure to get the values populated in MTL_LOT_NUMBERS of the enabled segments
18637   -- This procedure appends the entries to a table that has
18638   -- already been populated
18639   PROCEDURE get_mln_attributes(
18640     x_attribute_values  IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
18641   , x_attribute_prompts IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
18642   , x_attributes_count  OUT NOCOPY    NUMBER
18643   , x_return_status     OUT NOCOPY    VARCHAR2
18644   , x_msg_count         OUT NOCOPY    NUMBER
18645   , x_msg_data          OUT NOCOPY    NUMBER
18646 /*  , inv_mwb_globals.g_organization_id   IN            NUMBER
18647   , inv_mwb_globals.g_inventory_item_id IN            NUMBER
18648   , inv_mwb_globals.g_tree_lot_number        IN            VARCHAR2*/
18649   ) IS
18650     -- Cursor to get the segments that are enabled in the given context and
18651     -- IN the global context
18652     CURSOR mln_dff_structure/*(inv_mwb_globals.g_mln_context_code VARCHAR2)*/ IS
18653       SELECT   fdfcu.form_left_prompt
18654              , fdfcu.application_column_name
18655           FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
18656          WHERE fdfcu.application_id = fa.application_id
18657            AND fa.application_short_name = 'INV'
18658            AND fdfcu.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
18659            AND(
18660                fdfcu.descriptive_flex_context_code IN(
18661                  SELECT fdfc.descriptive_flex_context_code
18662                    FROM fnd_descr_flex_contexts_vl fdfc
18663                   WHERE fdfc.global_flag = 'Y'
18664                     AND fdfc.descriptive_flexfield_name = 'MTL_LOT_NUMBERS'
18665                     AND fdfc.application_id = fa.application_id)
18666                OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_mln_context_code
18667               )
18668            AND fdfcu.enabled_flag = 'Y'
18669       ORDER BY fdfcu.column_seq_num;
18670 
18671     TYPE l_attribute_type IS TABLE OF mtl_lot_numbers.attribute1%TYPE
18672       INDEX BY BINARY_INTEGER;
18673 
18674     l_attribute        l_attribute_type;
18675     l_mln_context_code mtl_lot_numbers.attribute_category%TYPE;
18676     l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MLN_ATTRIBUTES';
18677    BEGIN
18678       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
18679 
18680     x_return_status     := fnd_api.g_ret_sts_unexp_error;
18681 
18682     SELECT attribute1
18683          , attribute2
18684          , attribute3
18685          , attribute4
18686          , attribute5
18687          , attribute6
18688          , attribute7
18689          , attribute8
18690          , attribute9
18691          , attribute10
18692          , attribute11
18693          , attribute12
18694          , attribute13
18695          , attribute14
18696          , attribute15
18697          , attribute_category
18698       INTO l_attribute(1)
18699          , l_attribute(2)
18700          , l_attribute(3)
18701          , l_attribute(4)
18702          , l_attribute(5)
18703          , l_attribute(6)
18704          , l_attribute(7)
18705          , l_attribute(8)
18706          , l_attribute(9)
18707          , l_attribute(10)
18708          , l_attribute(11)
18709          , l_attribute(12)
18710          , l_attribute(13)
18711          , l_attribute(14)
18712          , l_attribute(15)
18713          , l_mln_context_code
18714       FROM mtl_lot_numbers
18715      WHERE inventory_item_id = inv_mwb_globals.g_inventory_item_id
18716        AND organization_id = inv_mwb_globals.g_organization_id
18717        AND lot_number = inv_mwb_globals.g_tree_lot_number;
18718 
18719     x_attributes_count  := x_attribute_values.COUNT;
18720 
18721     FOR mln_dff_structure_rec IN mln_dff_structure /*(l_mln_context_code)*/ LOOP
18722       x_attributes_count                                   := x_attributes_count + 1;
18723       x_attribute_prompts(x_attributes_count).prompt       := mln_dff_structure_rec.form_left_prompt;
18724       x_attribute_prompts(x_attributes_count).column_name  := mln_dff_structure_rec.application_column_name;
18725       x_attribute_values(x_attributes_count).column_name   := mln_dff_structure_rec.application_column_name;
18726       x_attribute_values(x_attributes_count).column_value  :=
18727                                                        l_attribute(TO_NUMBER(SUBSTR(mln_dff_structure_rec.application_column_name, 10, 2)));
18728     END LOOP;
18729 
18730     x_return_status     := fnd_api.g_ret_sts_success;
18731   END get_mln_attributes;
18732 
18733   -- Procedure to get the flexfield structure of mtl_lot_numbers flexfield.
18734   -- This procedure appends the entries to a table that has
18735   -- already been populated
18736   PROCEDURE get_msn_attributes_structure(
18737     x_attributes       IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
18738   , x_attributes_count OUT NOCOPY    NUMBER
18739   , x_return_status    OUT NOCOPY    VARCHAR2
18740   , x_msg_count        OUT NOCOPY    NUMBER
18741   , x_msg_data         OUT NOCOPY    NUMBER
18742  -- , inv_mwb_globals.g_msn_context_code IN            VARCHAR2
18743   ) IS
18744     -- Cursor to get the segments that are enabled in the given context and
18745     -- IN the global context
18746     CURSOR msn_structure IS
18747       SELECT   fdfcu.form_left_prompt
18748              , fdfcu.application_column_name
18749           FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
18750          WHERE fdfcu.application_id = fa.application_id
18751            AND fa.application_short_name = 'INV'
18752            AND fdfcu.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
18753            AND(
18754                fdfcu.descriptive_flex_context_code IN(
18755                  SELECT fdfc.descriptive_flex_context_code
18756                    FROM fnd_descr_flex_contexts_vl fdfc
18757                   WHERE fdfc.global_flag = 'Y'
18758                     AND fdfc.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
18759                     AND fdfc.application_id = fa.application_id)
18760                OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_msn_context_code
18761               )
18762            AND fdfcu.enabled_flag = 'Y'
18763       ORDER BY fdfcu.column_seq_num;
18764         l_procedure_name CONSTANT VARCHAR2(30)  := 'GET_MSN_ATTRIBUTS_STRUCTURE';
18765    BEGIN
18766       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
18767 
18768     x_return_status     := fnd_api.g_ret_sts_unexp_error;
18769     x_attributes_count  := x_attributes.COUNT;
18770 
18771     FOR msn_structure_rec IN msn_structure LOOP
18772       x_attributes_count                            := x_attributes_count + 1;
18773       x_attributes(x_attributes_count).prompt       := msn_structure_rec.form_left_prompt;
18774       x_attributes(x_attributes_count).column_type  := 'VARCHAR2';
18775       x_attributes(x_attributes_count).column_name  := msn_structure_rec.application_column_name;
18776     END LOOP;
18777 
18778     x_return_status     := fnd_api.g_ret_sts_success;
18779   END get_msn_attributes_structure;
18780 
18781   -- Procedure to get the values populated in MTL_SERIAL_NUMBERS of the enabled segments
18782   -- This procedure appends the entries to a table that has
18783   -- already been populated
18784   PROCEDURE get_msn_attributes(
18785     x_attribute_values  IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
18786   , x_attribute_prompts IN OUT NOCOPY inv_lot_sel_attr.lot_sel_attributes_tbl_type
18787   , x_attributes_count  OUT NOCOPY    NUMBER
18788   , x_return_status     OUT NOCOPY    VARCHAR2
18789   , x_msg_count         OUT NOCOPY    NUMBER
18790   , x_msg_data          OUT NOCOPY    NUMBER
18791   /*, inv_mwb_globals.g_organization_id   IN            NUMBER
18792   , inv_mwb_globals.g_inventory_item_id IN            NUMBER
18793   , inv_mwb_globals.g_tree_serial_number     IN            VARCHAR2*/
18794   ) IS
18795     -- Cursor to get the segments that are enabled in the given context and
18796     -- IN the global context
18797     CURSOR msn_dff_structure/*(inv_mwb_globals.g_msn_context_code VARCHAR2)*/ IS
18798       SELECT   fdfcu.form_left_prompt
18799              , fdfcu.application_column_name
18800           FROM fnd_descr_flex_col_usage_vl fdfcu, fnd_application_vl fa
18801          WHERE fdfcu.application_id = fa.application_id
18802            AND fa.application_short_name = 'INV'
18803            AND fdfcu.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
18804            AND(
18805                fdfcu.descriptive_flex_context_code IN(
18806                  SELECT fdfc.descriptive_flex_context_code
18807                    FROM fnd_descr_flex_contexts_vl fdfc
18808                   WHERE fdfc.global_flag = 'Y'
18809                     AND fdfc.descriptive_flexfield_name = 'MTL_SERIAL_NUMBERS'
18810                     AND fdfc.application_id = fa.application_id)
18811                OR fdfcu.descriptive_flex_context_code = inv_mwb_globals.g_msn_context_code
18812               )
18813            AND fdfcu.enabled_flag = 'Y'
18814       ORDER BY fdfcu.column_seq_num;
18815 
18816     TYPE l_attribute_type IS TABLE OF mtl_serial_numbers.attribute1%TYPE
18817       INDEX BY BINARY_INTEGER;
18818 
18819     l_attribute        l_attribute_type;
18820     l_msn_context_code mtl_serial_numbers.attribute_category%TYPE;
18821         l_procedure_name CONSTANT VARCHAR2(30) := 'GET_MSN_ATTRIBUTE';
18822    BEGIN
18823       inv_mwb_globals.print_msg( g_pkg_name, l_procedure_name, 'Entered' );
18824 
18825     x_return_status     := fnd_api.g_ret_sts_unexp_error;
18826 
18827     SELECT attribute1
18828          , attribute2
18829          , attribute3
18830          , attribute4
18831          , attribute5
18832          , attribute6
18833          , attribute7
18834          , attribute8
18835          , attribute9
18836          , attribute10
18837          , attribute11
18838          , attribute12
18839          , attribute13
18840          , attribute14
18841          , attribute15
18842          , attribute_category
18843       INTO l_attribute(1)
18844          , l_attribute(2)
18845          , l_attribute(3)
18846          , l_attribute(4)
18847          , l_attribute(5)
18848          , l_attribute(6)
18849          , l_attribute(7)
18850          , l_attribute(8)
18851          , l_attribute(9)
18852          , l_attribute(10)
18853          , l_attribute(11)
18854          , l_attribute(12)
18855          , l_attribute(13)
18856          , l_attribute(14)
18857          , l_attribute(15)
18858          , l_msn_context_code
18859       FROM mtl_serial_numbers
18860      WHERE inventory_item_id = inv_mwb_globals.g_inventory_item_id
18861        AND current_organization_id = inv_mwb_globals.g_organization_id
18862        AND serial_number = inv_mwb_globals.g_tree_serial_number;
18863 
18864     x_attributes_count  := x_attribute_values.COUNT;
18865 
18866     FOR msn_dff_structure_rec IN msn_dff_structure /*(l_msn_context_code)*/ LOOP
18867       x_attributes_count                                   := x_attributes_count + 1;
18868       x_attribute_prompts(x_attributes_count).prompt       := msn_dff_structure_rec.form_left_prompt;
18869       x_attribute_prompts(x_attributes_count).column_name  := msn_dff_structure_rec.application_column_name;
18870       x_attribute_values(x_attributes_count).column_name   := msn_dff_structure_rec.application_column_name;
18871       x_attribute_values(x_attributes_count).column_value  :=
18872                                                        l_attribute(TO_NUMBER(SUBSTR(msn_dff_structure_rec.application_column_name, 10, 2)));
18873     END LOOP;
18874 
18875     x_return_status     := fnd_api.g_ret_sts_success;
18876   END get_msn_attributes;
18877 
18878   FUNCTION GET_ITEM(P_ITEM_ID IN NUMBER, P_ORG_ID IN NUMBER) RETURN VARCHAR2 IS		-- Bug 6350236 Starting
18879        I_CC_ID_RET  BOOLEAN;
18880        l_org_id	 NUMBER;
18881        l_item_name	 VARCHAR2(1000) := NULL;
18882   BEGIN
18883 	IF p_item_id is NULL then
18884 		RETURN NULL;
18885 	END IF;
18886 
18887 	IF p_org_id is NULL then
18888 	   BEGIN
18889 		SELECT	organization_id into l_org_id
18890 		FROM	mtl_system_items
18891 		WHERE	inventory_item_id = p_item_id
18892 		AND	rownum = 1;
18893 	   EXCEPTION
18894 	      WHEN NO_DATA_FOUND THEN
18895 		RETURN NULL;
18896 	   END;
18897 	ELSE
18898 		l_org_id := p_org_id;
18899 	END IF;
18900 
18901 	I_CC_ID_RET := FND_FLEX_KEYVAL.VALIDATE_CCID(
18902                                APPL_SHORT_NAME       => 'INV',
18903                                KEY_FLEX_CODE         => 'MSTK',
18904                                STRUCTURE_NUMBER      => 101,
18905                                COMBINATION_ID        => p_item_id,
18906                                DATA_SET              => l_org_id,
18907 			       RESP_APPL_ID          => 401);
18908 	IF I_CC_ID_RET THEN
18909 		l_item_name := FND_FLEX_KEYVAL.CONCATENATED_VALUES;
18910 	END IF;
18911 
18912         return l_item_name;
18913   EXCEPTION
18914       WHEN OTHERS THEN
18915          RETURN NULL;
18916   END GET_ITEM;										-- Bug 6350236 Ending
18917 
18918 END inv_mwb_tree1;