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;