DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_TRANSACTION_LOVS

Source


1 PACKAGE BODY INV_TRANSACTION_LOVS AS
2 /* $Header: INVMWALB.pls 120.1 2005/06/17 10:08:15 appldev  $ */
3 
4 PROCEDURE GET_TXN_REASONS(x_txnreasonLOV OUT NOCOPY /* file.sql.39 change */ t_genref) IS
5 BEGIN
6     OPEN x_txnreasonLOV FOR
7 	SELECT reason_id,reason_name,description
8 	FROM MTL_TRANSACTION_REASONS
9 	WHERE NVL(DISABLE_DATE,SYSDATE) >= SYSDATE;
10 
11 END GET_TXN_REASONS;
12 
13 PROCEDURE GET_CARRIER(x_getcarrierLOV OUT NOCOPY /* file.sql.39 change */ t_genref,
14 		      p_FromOrganization_Id IN NUMBER,
15 		      p_ToOrganization_Id IN NUMBER,
16 		      p_carrier IN VARCHAR2)
17   IS
18 BEGIN
19    OPEN x_getcarrierLOV FOR
20      select freight_code, description, distribution_account
21      from
22      org_enabled_freight_val_v
23      where organization_id = (SELECT decode(FOB_POINT,1,TO_ORGANIZATION_ID,2, FROM_ORGANIZATION_ID) from mtl_interorg_parameters where TO_ORGANIZATION_ID = p_FromOrganization_Id and from_organization_id =p_ToOrganization_Id )
24      AND freight_code LIKE p_carrier
25      order by freight_code;
26 END GET_CARRIER;
27 
28 
29 
30 PROCEDURE GET_TXN_TYPES(x_motxntypeLOV OUT NOCOPY /* file.sql.39 change */ t_genref,
31 			p_transaction_source_type_id IN NUMBER) IS
32 begin
33 	open x_motxntypeLOV FOR
34 	   select transaction_type_id, transaction_type_name, description, transaction_action_id
35 	   from mtl_transaction_types
36 	   where transaction_source_type_id = p_transaction_Source_type_id;
37 END GET_TXN_TYPES;
38 
39 
40 PROCEDURE GET_TXN_TYPES(x_txntypeLOV OUT NOCOPY /* file.sql.39 change */ t_genref,
41 				p_Transaction_Action_Id IN NUMBER,
42 				p_Transaction_Source_Type_Id IN NUMBER,
43 				p_Transaction_Type_Name IN VARCHAR2) IS
44 BEGIN
45     OPEN x_txntypeLOV FOR
46         select transaction_type_id,transaction_type_name,description
47 	from mtl_transaction_types
48 	where transaction_action_id = p_Transaction_Action_Id and
49 	transaction_source_type_id = p_Transaction_Source_Type_Id and
50 	transaction_type_name like p_Transaction_Type_Name;
51 
52 END GET_TXN_TYPES;
53 
54 -- this procedure gets the accounts for a given organization and puts them in a
55 -- reference cursor.
56 
57 
58 PROCEDURE GET_ACCOUNT_ALIAS(x_Accounts_Info OUT NOCOPY /* file.sql.39 change */ t_genref,
59 			       p_Organization_Id IN NUMBER,
60 			       p_Description     IN VARCHAR2) IS
61 BEGIN
62     OPEN x_Accounts_Info FOR
63 	select distribution_account,disposition_id,description from mtl_generic_dispositions
64 	where organization_id = p_Organization_Id and
65 	description like p_Description;
66 
67 END GET_ACCOUNT_ALIAS;
68 
69 
70 PROCEDURE GET_ACCOUNTS(x_Accounts OUT NOCOPY /* file.sql.39 change */ t_genref,
71 		       p_Organization_Id IN NUMBER,
72 		       p_Concatenated_Segments IN VARCHAR2) IS
73 BEGIN
74     OPEN x_Accounts FOR
75 	SELECT a.code_combination_id,a.concatenated_segments FROM gl_code_combinations_kfv a,
76 	org_organization_definitions b
77 	WHERE b.organization_id = p_Organization_Id AND
78 	      a.chart_of_accounts_id = b.chart_of_accounts_id AND
79 	      a.concatenated_segments like p_Concatenated_Segments
80 	      and a.enabled_flag = 'Y' and nvl(a.start_date_active,sysdate-1)<=sysdate and
81               nvl(a.end_date_active,sysdate+1)>sysdate;
82 END GET_ACCOUNTS;
83 
84 procedure GET_ITEMS(x_items OUT NOCOPY /* file.sql.39 change */ t_genref,
85 		    p_organization_id IN NUMBER,
86 		    p_concatenated_segments IN VARCHAR2) IS
87 BEGIN
88    open x_items for
89 	select concatenated_segments, inventory_item_id, description,
90      revision_qty_control_code, lot_control_code, location_control_code,
91      serial_number_control_code, restrict_subinventories_code,
92      restrict_locators_code
93 	from mtl_system_items_kfv
94 	where organization_id = p_organization_id
95 	and mtl_transactions_enabled_flag = 'Y'
96 	and concatenated_segments like p_concatenated_segments;
97 END;
98 
99 --This procedure gets all the transactable items in an organization and returns
100 --them in a ref cursor back to the mobile server
101 
102 PROCEDURE GET_TRANSACTABLE_ITEMS(x_Items OUT NOCOPY /* file.sql.39 change */ t_genref,
103 				 p_Organization_Id IN NUMBER,
104 				 p_Concatenated_Segments IN VARCHAR2,
105 				 p_Transaction_Action_Id IN NUMBER,
106 				 p_To_Organization_Id IN NUMBER DEFAULT
107 				 NULL)
108   IS
109 BEGIN
110     IF p_Transaction_Action_Id = 3 THEN
111 	OPEN x_Items FOR
112 	    select concatenated_segments,inventory_item_id,description,
113 	  revision_qty_control_code,lot_control_code,location_control_code,
114 	  serial_number_control_code,restrict_subinventories_code,
115 	  restrict_locators_code ,
116 	  Nvl(shelf_life_code, 1),
117 	  Nvl(shelf_life_days,0),
118           Nvl(effectivity_control,1)
119    	    from mtl_system_items_kfv
120             where organization_id = p_Organization_Id
121 	    and mtl_transactions_enabled_flag = 'Y'
122             and inventory_item_id IN
123 		(SELECT inventory_item_id
124 		 from mtl_system_items
125 		 where organization_id = p_To_Organization_Id
126 		 and mtl_transactions_enabled_flag = 'Y')
127 	    and concatenated_segments like p_Concatenated_Segments;
128      ELSE
129 	OPEN x_Items FOR
130 	    select concatenated_segments,inventory_item_id,description,
131 	   	   revision_qty_control_code,lot_control_code,
132 		   serial_number_control_code,restrict_subinventories_code,restrict_locators_code,
133 		   location_control_code,Nvl(shelf_life_code, 1),Nvl(shelf_life_days,0), Nvl(effectivity_control,1)
134 	    from mtl_system_items_kfv
135 	    where organization_id = p_Organization_Id
136 	    and mtl_transactions_enabled_flag = 'Y'
137 	    and concatenated_segments like p_Concatenated_Segments;
138      END IF;
139 END GET_TRANSACTABLE_ITEMS;
140 
141 PROCEDURE GET_VALID_LOCATORS(x_Locators OUT NOCOPY /* file.sql.39 change */ t_genref,
142 				     p_Organization_Id IN NUMBER,
143 				     p_Subinventory_Code IN VARCHAR2,
144 				     p_Restrict_Locators_Code IN NUMBER,
145 				     p_Inventory_Item_Id IN NUMBER,
146 				     p_Concatenated_Segments IN VARCHAR2)
147 
148 IS
149    l_locator_id NUMBER;
150 BEGIN
151    IF p_Restrict_Locators_Code = 1  THEN --Locators restricted to predefined list
152 	OPEN x_Locators FOR
153  	    select a.inventory_location_id, a.concatenated_segments,a.description
154 	    FROM mtl_item_locations_kfv a,mtl_secondary_locators b
155 	    WHERE b.organization_id = p_Organization_Id and
156 	          b.inventory_item_id = p_Inventory_Item_Id and
157 	      	  b.subinventory_code = p_Subinventory_Code and
158 	      	  a.inventory_location_id = b.secondary_locator and
159 	      	  a.concatenated_segments like (p_concatenated_segments);
160    ELSE --Locators not restricted
161 	OPEN x_Locators FOR
162 	     select inventory_location_id,concatenated_segments,description
163 	     FROM mtl_item_locations_kfv
164 	     WHERE organization_id = p_Organization_Id and
165 	      	   subinventory_code = p_Subinventory_Code and
166 	           concatenated_segments like (p_concatenated_segments);
167    END IF;
168 END GET_VALID_LOCATORS;
169 
170 PROCEDURE GET_VALID_TO_LOCS(x_Locators OUT NOCOPY /* file.sql.39 change */ t_genref,
171 				     p_Transaction_Action_Id IN NUMBER,
172 		           	     p_To_Organization_Id IN NUMBER,
173 				     p_Organization_Id IN NUMBER,
174 				     p_Subinventory_Code IN VARCHAR2,
175 				     p_Restrict_Locators_Code IN NUMBER,
176 				     p_Inventory_Item_Id IN NUMBER,
177 				     p_Concatenated_Segments IN VARCHAR2)
178 IS
179 l_org NUMBER;
180 l_Restrict_Locators_Code NUMBER;
181 BEGIN
182     IF p_Transaction_Action_Id = 3 THEN
183        l_org := p_To_Organization_Id;
184        select restrict_locators_code into l_Restrict_Locators_Code
185        from mtl_system_items
186        where inventory_item_id = p_Inventory_Item_Id and organization_id = l_org;
187     ELSE
188        l_org := p_Organization_Id;
189        l_Restrict_Locators_Code := p_Restrict_Locators_Code;
190     END IF;
191 
192     GET_VALID_LOCATORS(x_Locators,
193 		   l_org,
194 		   p_Subinventory_Code,
195 		   l_Restrict_Locators_Code,
196 		   p_Inventory_Item_Id,
197 		   p_Concatenated_Segments);
198 END GET_VALID_TO_LOCS;
199 
200 PROCEDURE GET_VALID_SUBS(x_Zones OUT NOCOPY /* file.sql.39 change */ t_genref,
201 			 p_organization_id IN NUMBER,
202 			 p_subinventory_code IN VARCHAR2) IS
203 BEGIN
204     open x_Zones for
205 	SELECT secondary_inventory_name, description, locator_type, asset_inventory
206    	FROM mtl_secondary_inventories
207 	WHERE organization_id = p_organization_id
208 	AND secondary_inventory_name like p_subinventory_code;
209 END GET_VALID_SUBS;
210 
211 PROCEDURE GET_FROM_SUBS(x_Zones OUT NOCOPY /* file.sql.39 change */ t_genref,
212 		        p_organization_id IN NUMBER) IS
213 BEGIN
214      open x_Zones for
215         SELECT secondary_inventory_name,description,asset_inventory
216         FROM mtl_secondary_inventories
217 	WHERE 	organization_id = p_Organization_Id;
218 END GET_FROM_SUBS;
219 
220 PROCEDURE GET_FROM_SUBS(x_Zones OUT NOCOPY /* file.sql.39 change */ t_genref,
221 				 p_Organization_Id IN NUMBER,
222 				 p_Inventory_Item_Id IN NUMBER,
223 				 p_Restrict_Subinventories_Code IN NUMBER,
224 				 p_Secondary_Inventory_Name IN VARCHAR2,
225 				 p_Transaction_Action_Id IN NUMBER)
226 	IS
227 	l_expense_to_asset VARCHAR2(1);
228 	BEGIN
229 	FND_PROFILE.GET('INV:EXPENSE_TO_ASSET_TRANSFER',l_expense_to_asset);
230 
231 	IF( NVL(l_expense_to_asset,'2') = '1') THEN
232 		IF (p_Transaction_Action_Id <> 2 and p_Transaction_Action_Id <>3) THEN
233 			IF p_Restrict_Subinventories_Code = 1 THEN
234 				OPEN x_Zones FOR
235 		 		SELECT secondary_inventory_name,description,asset_inventory
236 				FROM mtl_item_sub_trk_val_v
237 				WHERE 	organization_id = p_Organization_Id  AND
238 			      		inventory_item_id = p_Inventory_Item_Id AND
239 					secondary_inventory_name like p_Secondary_Inventory_Name;
240 			ELSE
241 
242 				OPEN x_Zones FOR
243 		 		SELECT secondary_inventory_name,description,asset_inventory
244 				FROM mtl_subinventories_trk_val_v
245 		 		WHERE organization_Id = p_Organization_Id AND
246 		      		 secondary_inventory_name like p_Secondary_Inventory_Name;
247 			END IF;
248 		ELSE
249 			IF p_Restrict_Subinventories_Code = 1 THEN
250 				OPEN x_Zones FOR
251 				SELECT secondary_inventory_name,description,asset_inventory
252 				FROM mtl_item_sub_trk_val_v
253 				WHERE 	organization_id = p_Organization_Id  AND
254 			      		inventory_item_id = p_Inventory_Item_Id AND
255 					secondary_inventory_name like p_Secondary_Inventory_Name;
256 			ELSE
257 				OPEN x_Zones FOR
258 		 		SELECT secondary_inventory_name,description,asset_inventory
259 				FROM mtl_subinventories_trk_val_v
260 		 		WHERE organization_Id = p_Organization_Id AND
261 		      		 secondary_inventory_name like p_Secondary_Inventory_Name;
262 			END IF;
263 		END IF;
264 	ELSE
265 		IF (p_Transaction_Action_Id <> 2 and p_Transaction_Action_Id <>3) THEN
266 		IF p_Restrict_Subinventories_Code = 1 THEN
267 				OPEN x_Zones FOR
268 		 		SELECT secondary_inventory_name,description,asset_inventory
269 				FROM mtl_item_sub_val_v
270 				WHERE 	organization_id = p_Organization_Id  AND
271 			      		inventory_item_id = p_Inventory_Item_Id AND
272 					secondary_inventory_name like p_Secondary_Inventory_Name;
273 			ELSE
274 
275 				OPEN x_Zones FOR
276 		 		SELECT secondary_inventory_name,description,asset_inventory
277 				FROM mtl_subinventories_trk_val_v
278 		 		WHERE organization_Id = p_Organization_Id AND
279 		      		 secondary_inventory_name like p_Secondary_Inventory_Name;
280 			END IF;
281 		ELSE
282 			IF p_Restrict_Subinventories_Code = 1 THEN
283 				OPEN x_Zones FOR
284 				SELECT secondary_inventory_name,description,asset_inventory
285 				FROM mtl_item_sub_trk_val_v
286 				WHERE 	organization_id = p_Organization_Id  AND
287 			      		inventory_item_id = p_Inventory_Item_Id AND
288 					secondary_inventory_name like p_Secondary_Inventory_Name;
289 			ELSE
290 				OPEN x_Zones FOR
291 		 		SELECT secondary_inventory_name,description,asset_inventory
292 				FROM mtl_subinventories_trk_val_v
293 		 		WHERE organization_Id = p_Organization_Id AND
294 		      		 secondary_inventory_name like p_Secondary_Inventory_Name;
295 			END IF;
296 		END IF;
297 	END IF;
298 END GET_FROM_SUBS;
299 
300 
301 PROCEDURE GET_TO_SUB(x_Zones OUT NOCOPY /* file.sql.39 change */ t_genref,
302 		        p_organization_id IN NUMBER,
303 			p_secondary_inventory_name IN VARCHAR2) IS
304 BEGIN
305      open x_Zones for
306         sELECT secondary_inventory_name,description,asset_inventory
307         FROM mtl_secondary_inventories
308 	WHERE 	organization_id = p_Organization_Id
309 	AND secondary_inventory_name <> p_secondary_inventory_name;
310 END GET_TO_SUB;
311 
312 PROCEDURE GET_TO_SUB(x_to_sub OUT NOCOPY /* file.sql.39 change */ t_genref,
313 		     p_Organization_Id IN NUMBER,
314 		     p_Inventory_Item_Id IN NUMBER,
315 		     p_from_Secondary_Name IN VARCHAR2,
316 		     p_Restrict_Subinventories_Code IN NUMBER,
317 		     p_Secondary_Inventory_Name IN VARCHAR2,
318 		     p_From_Sub_Asset_Inventory IN VARCHAR2,
319 		     p_Transaction_Action_Id IN NUMBER,
320 		     p_To_Organization_Id IN NUMBER,
321 		     p_Serial_Number_Control_Code IN NUMBER)
322 		     --p_Serial IN VARCHAR2)
323 IS
324     l_expense_to_asset VARCHAR2(1);
325     l_Inventory_Asset_Flag VARCHAR2(1);
326     l_org NUMBER;
327     l_Restrict_Subinventories_Code NUMBER;
328     l_From_Sub VARCHAR2(10);
329     l_From_Sub_Asset_Inventory VARCHAR2(1);
330 BEGIN
331     IF p_Transaction_Action_Id = 3 THEN
332 	l_org := p_To_Organization_Id;
333 	select restrict_subinventories_code
334 	into l_Restrict_Subinventories_Code
335 	from mtl_system_items
336 	where organization_id = l_org
337 	and inventory_item_id = p_Inventory_Item_Id;
338     ELSE
339 	l_org := p_Organization_Id;
340 	l_Restrict_Subinventories_Code := p_Restrict_Subinventories_Code;
341     END IF;
342 
343     IF p_Serial_Number_Control_Code not in (1, 6) THEN
344        l_from_sub:=p_from_secondary_name;
345        l_from_sub_asset_inventory:=p_from_sub_asset_inventory;
346 	--select current_subinventory_code
347 	--into l_From_Sub
348 	--from mtl_serial_numbers
349 	--where current_organization_id = l_org
350 	--and serial_number = p_Serial
351 	--and inventory_item_id = p_Inventory_Item_Id;
352 
353 	--select asset_inventory
354 	--into l_From_Sub_Asset_Inventory
355 	--from mtl_secondary_inventories
356 	--where organization_id = l_org
357 	--and secondary_inventory_name = l_From_Sub;
358     ELSE
359 	l_From_Sub_Asset_Inventory := p_From_Sub_Asset_Inventory;
360     END IF;
361 
362     SELECT Inventory_Asset_Flag
363     INTO l_Inventory_Asset_Flag
364     FROM mtl_system_items
365     WHERE inventory_item_id = p_Inventory_Item_Id
366     AND organization_id = l_org;
367 
368     FND_PROFILE.GET('INV:EXPENSE_TO_ASSET_TRANSFER',l_expense_to_asset);
369     IF (nvl(l_expense_to_asset,'2') = '1') THEN
370 	IF l_Restrict_Subinventories_Code = 1 THEN
371 	    OPEN x_to_sub FOR
372             	SELECT secondary_inventory_name,description
373             	FROM MTL_ITEM_SUB_VAL_V
374             	WHERE organization_id = l_org
375               	AND inventory_item_id  = p_Inventory_Item_Id
376               	AND secondary_inventory_name like p_Secondary_Inventory_Name;
377         ELSE
378 	    OPEN x_to_sub FOR
379             	SELECT secondary_inventory_name,description
380 	        FROM MTL_SUBINVENTORIES_VAL_V
381             	WHERE ORGANIZATION_ID = l_org
382               	AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
383        	END IF;
384     ELSE
385 	IF l_Restrict_Subinventories_Code = 1 THEN
386             IF l_Inventory_Asset_Flag = 'Y' THEN
387               	IF l_From_Sub_Asset_Inventory = 1 THEN
388                	  	OPEN x_to_sub FOR
389 				SELECT secondary_inventory_name,description
390                    		FROM MTL_ITEM_SUB_VAL_V
391                    		WHERE ORGANIZATION_ID = l_org
392                     		AND INVENTORY_ITEM_ID = p_Inventory_Item_Id
393                      		AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
394               	ELSE
395                 	OPEN x_to_sub FOR
396                    		SELECT secondary_inventory_name,description
397                    		FROM MTL_ITEM_SUB_EXP_VAL_V
398                    		WHERE ORGANIZATION_ID = l_org
399                      		AND INVENTORY_ITEM_ID = p_Inventory_Item_Id
400                      		AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
401               	END IF;
402            ELSE
403 		OPEN x_to_sub FOR
404                		SELECT secondary_inventory_name,description
405                		FROM MTL_ITEM_SUB_VAL_V
406                		WHERE ORGANIZATION_ID = l_org
407                  	AND INVENTORY_ITEM_ID = p_Inventory_Item_Id
408                  	AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
409             	END IF;
410          ELSE
411             IF l_Inventory_Asset_Flag = 'Y' THEN
412                IF l_From_Sub_Asset_Inventory = 1 THEN
413         	  OPEN x_to_sub FOR
414                   SELECT secondary_inventory_name,description
415                   FROM MTL_SUBINVENTORIES_VAL_V
416                   WHERE ORGANIZATION_ID = l_org
417                   AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
418                ELSE
419                   OPEN x_to_sub FOR
420                   SELECT secondary_inventory_name,description
421                   FROM MTL_SUB_EXP_VAL_V
422                   WHERE ORGANIZATION_ID = l_org
423                   AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
424                END IF;
425            ELSE
426 	       OPEN x_to_sub FOR
427                SELECT secondary_inventory_name,description
428                FROM MTL_SUBINVENTORIES_VAL_V
429                WHERE ORGANIZATION_ID = l_org
430                AND SECONDARY_INVENTORY_NAME like p_Secondary_Inventory_Name;
431            END IF;
432          END IF;
433       END IF;
434 END GET_TO_SUB;
435 
436 
437 
438 PROCEDURE GET_ORG(x_org OUT NOCOPY /* file.sql.39 change */ t_genref,
439 		  p_responsibility_id IN NUMBER,
440 		  p_resp_application_id IN NUMBER) IS
441 BEGIN
442    open x_org FOR
443 	select organization_code, organization_name, organization_id
444 	from org_access_view
445 	where responsibility_id = p_responsibility_id
446 	and p_resp_application_id = p_resp_application_id
447 	order by organization_code;
448 
449 END;
450 
451 PROCEDURE GET_TO_ORG(x_Organizations OUT NOCOPY /* file.sql.39 change */ t_genref,
452 		     p_From_Organization_Id IN NUMBER) IS
453 
454 BEGIN
455      OPEN x_Organizations FOR
456         SELECT
457       a.to_organization_id,b.organization_code,c.name, a.intransit_type
458       FROM mtl_interorg_parameters a, mtl_parameters b,hr_all_organization_units c
459 	WHERE a.from_organization_id = p_From_Organization_Id AND
460       a.to_organization_id = b.organization_id
461       AND a.to_organization_id = c.organization_id
462       order by 2;
463 
464 
465 
466 END GET_TO_ORG;
467 
468 PROCEDURE GET_VALID_UOMS(x_UOMS OUT NOCOPY /* file.sql.39 change */ t_genref,
469 			 p_Organization_Id IN NUMBER,
470 			 p_Inventory_Item_Id IN NUMBER,
471 			 p_UOM_Code IN VARCHAR2) IS
472 BEGIN
473 
474     OPEN x_UOMS FOR
475 	 SELECT uom_Code, unit_of_measure, description FROM mtl_item_uoms_view
476 	 WHERE organization_id = p_Organization_Id AND
477 	       inventory_item_id = p_Inventory_Item_Id AND
478  	       uom_Code like p_UOM_Code;
479 
480 END GET_VALID_UOMS;
481 
482 PROCEDURE GET_VALID_LOTS(x_Lots OUT NOCOPY /* file.sql.39 change */ t_genref,
483 			 p_Organization_Id IN NUMBER,
484 			 p_Inventory_Item_Id IN NUMBER,
485 			 p_Lot IN VARCHAR2) IS
486 BEGIN
487    OPEN x_Lots FOR
488 	 SELECT Lot_Number,to_char(expiration_date,'MM-DD-YYYY')
489          FROM mtl_lot_numbers
490 	 WHERE organization_id = p_Organization_Id AND
491 	       inventory_item_id = p_Inventory_Item_Id AND
492 	       lot_number like (p_lot);
493 
494 END GET_VALID_LOTS;
495 
496 PROCEDURE GET_VALID_LOTS(x_Lots OUT NOCOPY /* file.sql.39 change */ t_genref,
497 			 p_Organization_Id IN NUMBER,
498 			 p_Inventory_Item_Id IN NUMBER,
499 			 p_subcode IN VARCHAR2,
500 			 p_revision IN VARCHAR2,
501 			 p_locatorid IN NUMBER,
502 			 p_Lot IN VARCHAR2) IS
503 BEGIN
504    OPEN x_Lots FOR
505 	 SELECT b.Lot_Number,to_char(b.expiration_date,'MM-DD-YYYY')
506          FROM mtl_onhand_quantities_detail a, mtl_lot_numbers b
507 -- Bug 2687570, use MOQD instead of MOQ because consigned stock is not visible in MOQ
508 	 WHERE a.organization_id = p_Organization_Id AND
509      a.inventory_item_id = p_Inventory_Item_Id AND
510      a.subinventory_code = p_subcode AND
511      Nvl(a.revision, '##') = Nvl(p_revision,'##') AND
512      Nvl(a.locator_id, '-1') = Nvl(p_locatorid ,'-1')AND
513      a.lot_number = b.lot_number AND
514      a.lot_number like (p_lot);
515 
516 END GET_VALID_LOTS;
517 
518 
519 
520 
521 
522 
523 
524 
525 
526 PROCEDURE GET_VALID_REVS(x_Revs OUT NOCOPY /* file.sql.39 change */ t_genref,
527 			 p_Organization_Id IN NUMBER,
528 			 p_Inventory_Item_Id IN NUMBER,
529 			 p_Revision IN VARCHAR2) IS
530 BEGIN
531     OPEN x_Revs FOR
532       SELECT revision, effectivity_date, Nvl(description,'')
533       FROM mtl_item_revisions
534       WHERE organization_Id = p_Organization_Id AND
535 	       inventory_item_id = p_Inventory_Item_Id AND
536 	       revision like (p_revision);
537 
538 END GET_VALID_REVS;
539 
540 
541 PROCEDURE GET_VALID_SERIAL_REC_2(x_RSerials IN OUT NOCOPY /* file.sql.39 change */ t_genref,
542 				 p_Current_Organization_Id IN NUMBER,
543 				 p_Inventory_Item_Id IN NUMBER,
544 				 p_Serial_Number IN VARCHAR2) IS
545 BEGIN
546     OPEN x_RSerials FOR
547      	select serial_number,current_subinventory_code,current_locator_id, lot_number
548  	from mtl_serial_numbers
549 	where Current_Organization_Id = p_Current_Organization_Id
550 	AND inventory_item_id = p_Inventory_Item_Id and current_status = 1
551 	and serial_number like p_Serial_Number;
552 
553 END GET_VALID_SERIAL_REC_2;
554 
555 PROCEDURE GET_VALID_SERIAL_REC_5(x_RSerials IN OUT NOCOPY /* file.sql.39 change */ t_genref,
556 				 p_Current_Organization_Id IN NUMBER,
557 				 p_Inventory_Item_Id IN NUMBER,
558 				 p_Current_Subinventory_Code IN VARCHAR2,
559 				 p_Current_Locator_Id IN NUMBER,
560 				 p_Lot_Number IN VARCHAR2,
561 				 p_Serial_Number IN VARCHAR2) IS
562 BEGIN
563 
564     OPEN x_RSerials FOR
565 	select serial_number,current_subinventory_code, current_locator_id,lot_number
566 	from mtl_serial_numbers
567 	where Current_Organization_Id = p_Current_Organization_Id
568 	and inventory_item_id = p_Inventory_Item_Id and current_status = 4
569 	and serial_number like p_serial_number;
570 
571     IF x_RSerials IS NULL and p_Serial_Number IS NOT NULL THEN
572 	OPEN x_RSerials FOR
573 	    select p_Serial_Number,p_Current_Subinventory_Code,p_Current_Locator_Id,
574 		   p_Lot_Number
575 	    from DUAL;
576     END IF;
577 
578 END GET_VALID_SERIAL_REC_5;
579 
580 
581 --During an issue, if it is the first serial number then
582 --we can accept any serial that resides in stores
583 --however, after the first serial has been scanned we must
584 --make sure that all subsequent serials are from the same
585 --locator and same sub.
586 
587 
588 PROCEDURE GET_VALID_SERIAL_ISSUE(x_RSerials OUT NOCOPY /* file.sql.39 change */ t_genref,
589 				 p_Current_Organization_Id IN NUMBER,
590 				 p_Current_Subinventory_Code IN VARCHAR2,
591 				 p_Current_Locator_Id IN NUMBER,
592 				 p_Current_Lot_Number IN VARCHAR2,
593 				 p_Inventory_Item_Id IN NUMBER,
594 				 p_Serial_Number IN VARCHAR2)
595 IS
596 BEGIN
597 
598     IF p_Current_Subinventory_Code IS NULL THEN
599  	OPEN x_RSerials FOR
600 	    SELECT
601 	  a.serial_number,a.current_Subinventory_code,Nvl(a.current_locator_id,-1),
602 	  a.lot_number, a.revision ,b.expiration_date
603  	    from mtl_serial_numbers a, mtl_lot_numbers b
604 	    where a.Current_organization_Id = p_Current_Organization_Id
605 	    and a.inventory_item_id = p_Inventory_Item_Id
606 	  and a.current_status = 3
607 	  AND a.lot_number = b.lot_number
608 	    and a.serial_number like p_serial_number;
609 
610  ELSE
611        OPEN x_RSerials FOR
612 					select a.serial_number,
613 					a.current_subinventory_code,
614 					Nvl(a.current_locator_id,-1),
615 					a.lot_number, a.revision,
616 					b.expiration_date
617 	    from mtl_serial_numbers a , mtl_lot_numbers b
618 	    where a.Current_organization_Id = p_Current_Organization_Id
619 	    and a.inventory_item_id = p_Inventory_Item_Id
620             and a.current_status = 3
621 	    and a.serial_number like p_serial_number
622 	    and a.current_subinventory_code = p_current_subinventory_code
623 	 and Nvl(a.current_locator_id,-1) = Decode(p_current_locator_id,'-1',Nvl(a.current_locator_id,-1),p_current_locator_id)
624 	 AND a.lot_number = b.lot_number;
625 
626    END IF;
627 
628 END GET_VALID_SERIAL_ISSUE;
629 
630 PROCEDURE GET_VALID_SERIALS(x_RSerials OUT NOCOPY /* file.sql.39 change */ t_genref,
631 			    p_Serial_Number_Control_Code IN NUMBER,
632 			    p_Inventory_Item_Id IN NUMBER,
633 		   	    p_Current_Organization_Id IN NUMBER,
634 			    p_Current_Subinventory_Code IN VARCHAR2,
635 			    p_Current_Locator_Id IN NUMBER,
636 			    p_Lot_Number IN VARCHAR2,
637 			    p_Transaction_Action_Id IN NUMBER,
638 			    p_Serial_Number IN VARCHAR2) IS
639 
640 BEGIN
641 --Predefined and Receipt
642     IF p_Transaction_Action_Id = 27 and p_Serial_Number_Control_Code = 2 THEN
643        GET_VALID_SERIAL_REC_2(x_RSerials,
644 		       p_Current_Organization_Id,
645 		       p_Inventory_Item_Id,
646 		       p_Serial_Number);
647     ELSIf p_Transaction_Action_Id = 27 and p_Serial_Number_Control_Code = 5 THEN
648      --Dynamic serial entry upon receipt and Receipt
649 	GET_VALID_SERIAL_REC_5(x_RSerials,
650 		       p_Current_Organization_Id,
651 		       p_Inventory_Item_Id,
652 		       p_Current_Subinventory_Code,
653 	   	       p_Current_Locator_Id,
654 		       p_Lot_Number,
655 		       p_Serial_Number);
656    ELSE
657     --Issue or transfer transaction
658 	GET_VALID_SERIAL_ISSUE(x_RSerials,
659 			p_Current_Organization_Id,
660 			p_Current_Subinventory_Code,
661 			p_Current_Locator_Id,
662 			p_Lot_Number,
663 			p_Inventory_Item_Id,
664 			p_Serial_Number);
665 
666    END IF;
667 END GET_VALID_SERIALS;
668 END INV_TRANSACTION_LOVS;