1: PACKAGE BODY SERIAL_CHECK AS
2: /* $Header: INVMKUMB.pls 120.7 2011/03/02 06:26:21 honwei ship $ */
3:
4: g_debug NUMBER;
5:
25:
26: l_debug := g_debug;
27:
28: IF (l_debug = 1) THEN
29: inv_log_util.trace('In inv_mark_serial, no reservation', 'SERIAL_CHECK');
30: END IF;
31:
32: inv_mark_rsv_serial
33: ( from_serial_number => from_serial_number
42: , success => l_success
43: );
44:
45: IF (l_debug = 1) THEN
46: inv_log_util.trace('success is ' || l_success, 'SERIAL_CHECK');
47: END IF;
48:
49: success := l_success;
50: /*** End R12 }} ***/
51:
52: EXCEPTION
53: WHEN OTHERS then
54: if( l_debug = 1 ) then
55: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
56: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
57: end if;
58: success := -3;
59: END inv_mark_serial;
52: EXCEPTION
53: WHEN OTHERS then
54: if( l_debug = 1 ) then
55: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
56: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
57: end if;
58: success := -3;
59: END inv_mark_serial;
60:
86:
87: l_debug := g_debug;
88:
89: IF (l_debug = 1) THEN
90: inv_log_util.trace('In inv_mark_serial overloaded with reservation_id', 'SERIAL_CHECK');
91: END IF;
92:
93: DECLARE
94: marked_numbers_found NUMBER:= 0;
122: end if;
123: success := 1;
124:
125: if( l_debug = 1 ) then
126: inv_log_util.trace('Inside inv_mark_serial hdr_id is ' || l_hdr_id, 'SERIAL_CHECK');
127: end if;
128: IF (to_serial_number IS NOT NULL) and NOT (from_serial_number = to_serial_number ) then
129: if( l_debug = 1 ) then
130: inv_log_util.trace('to_serial_number is ' || to_serial_number, 'SERIAL_CHECK');
126: inv_log_util.trace('Inside inv_mark_serial hdr_id is ' || l_hdr_id, 'SERIAL_CHECK');
127: end if;
128: IF (to_serial_number IS NOT NULL) and NOT (from_serial_number = to_serial_number ) then
129: if( l_debug = 1 ) then
130: inv_log_util.trace('to_serial_number is ' || to_serial_number, 'SERIAL_CHECK');
131: end if;
132: success := 1 ;
133: OPEN serial_lock1 ;
134:
143: --BUG 2249383 Cannot have same item with serial number in different org
144: --AND current_organization_id = org_id
145:
146: if( l_debug = 1 ) then
147: inv_log_util.trace('marked_numbers_found is ' || marked_numbers_found, 'SERIAL_CHECK');
148: end if;
149: IF (marked_numbers_found > 0) then
150: success := -1 ;
151: CLOSE serial_lock1 ;
176: CLOSE serial_lock1;
177: success := 3;
178: end if;
179: if( l_debug = 1 ) then
180: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
181: end if;
182: else
183: if( l_debug = 1) then
184: inv_log_util.trace('to_serial_number is null or same', 'SERIAL_CHECK');
180: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
181: end if;
182: else
183: if( l_debug = 1) then
184: inv_log_util.trace('to_serial_number is null or same', 'SERIAL_CHECK');
185: end if;
186: success := 2 ;
187: OPEN serial_lock2 ;
188:
195: --BUG 2249383 Cannot have same item with serial number in different org
196: --AND current_organization_id = org_id
197:
198: if( l_debug = 1 ) then
199: inv_log_util.trace('marked_numbers_found is ' || marked_numbers_found, 'SERIAL_CHECK');
200: end if;
201: IF (marked_numbers_found > 0) then
202: success := -1;
203: CLOSE serial_lock2;
226: CLOSE serial_lock2;
227: success := 3;
228: end if;
229: if( l_debug = 1 ) then
230: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
231: end if;
232: end if;
233:
234: /*** {{ R12 Enhanced reservations code changes ***/
255: CLOSE serial_lock2;
256: end if;
257: success := -2;
258: if( l_debug = 1 ) then
259: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
260: inv_log_util.trace('app_exceptions.record_lock_exception', 'SERIAL_CHECK');
261: end if;
262: WHEN OTHERS then
263: IF success = 1 then
256: end if;
257: success := -2;
258: if( l_debug = 1 ) then
259: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
260: inv_log_util.trace('app_exceptions.record_lock_exception', 'SERIAL_CHECK');
261: end if;
262: WHEN OTHERS then
263: IF success = 1 then
264: CLOSE serial_lock1;
266: CLOSE serial_lock2;
267: end if;
268: success := -3;
269: if( l_debug = 1 ) then
270: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
271: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
272: end if;
273: END;
274: null;
267: end if;
268: success := -3;
269: if( l_debug = 1 ) then
270: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
271: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
272: end if;
273: END;
274: null;
275: EXCEPTION
274: null;
275: EXCEPTION
276: WHEN OTHERS then
277: if( l_debug = 1 ) then
278: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
279: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
280: end if;
281: success := -3;
282: END inv_mark_rsv_serial;
275: EXCEPTION
276: WHEN OTHERS then
277: if( l_debug = 1 ) then
278: inv_log_util.trace('success is ' || success, 'SERIAL_CHECK');
279: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
280: end if;
281: success := -3;
282: END inv_mark_rsv_serial;
283:
302:
303: l_debug := g_debug;
304:
305: IF (l_debug = 1) THEN
306: inv_log_util.trace('In inv_unmark_serial, no reservation', 'SERIAL_CHECK');
307: END IF;
308:
309: inv_unmark_rsv_serial
310: ( from_serial_number => from_serial_number
321:
322: EXCEPTION
323: WHEN OTHERS then
324: if( l_debug = 1 ) then
325: inv_log_util.trace('exception in inv_unmark_serial, sqlerrm is ' || substr(sqlerrm, 1, 200), 'SERIAL_CHECK');
326: end if;
327: END inv_unmark_serial;
328:
329:
430: -- if (serial_code = 5 OR serial_code = 6) then
431: -- unmarked_value := -1 ;
432: -- end if;
433: IF (l_debug = 1) THEN
434: inv_log_util.TRACE('Inside inv_unmark_serial', 'SERIAL_CHECK');
435: inv_log_util.TRACE('from_serial_number = ' || from_serial_number
436: || ' to_serial_number = ' || to_serial_number, 'SERIAL_CHECK');
437: inv_log_util.TRACE('serial_code = ' || serial_code || ' hdr_id = ' || hdr_id
438: || ' temp_id = ' || temp_id || ' lot_temp_id = ' || lot_temp_id
432: -- end if;
433: IF (l_debug = 1) THEN
434: inv_log_util.TRACE('Inside inv_unmark_serial', 'SERIAL_CHECK');
435: inv_log_util.TRACE('from_serial_number = ' || from_serial_number
436: || ' to_serial_number = ' || to_serial_number, 'SERIAL_CHECK');
437: inv_log_util.TRACE('serial_code = ' || serial_code || ' hdr_id = ' || hdr_id
438: || ' temp_id = ' || temp_id || ' lot_temp_id = ' || lot_temp_id
439: || ' p_inventory_item_id = ' || p_inventory_item_id
440: || ' p_update_reservation = ' || p_update_reservation , 'SERIAL_CHECK');
436: || ' to_serial_number = ' || to_serial_number, 'SERIAL_CHECK');
437: inv_log_util.TRACE('serial_code = ' || serial_code || ' hdr_id = ' || hdr_id
438: || ' temp_id = ' || temp_id || ' lot_temp_id = ' || lot_temp_id
439: || ' p_inventory_item_id = ' || p_inventory_item_id
440: || ' p_update_reservation = ' || p_update_reservation , 'SERIAL_CHECK');
441: END IF;
442:
443: IF (p_inventory_item_id IS NOT NULL AND hdr_id IS NULL AND temp_id IS NULL AND
444: lot_temp_id IS NULL) THEN
449: )
450: ) THEN
451: IF (l_debug = 1) THEN
452: inv_log_util.TRACE('Update msn with serial_number= from_serial_number and '
453: || 'inventory_item_id = ' || p_inventory_item_id, 'SERIAL_CHECK');
454: END IF;
455:
456: /*** {{ R12 Enhanced reservations code changes ***/
457: IF (p_update_reservation = fnd_api.g_true) THEN
496: inv_log_util.TRACE('Update msn with serial_number >= '
497: || ' nvl(from_serial_number, serial_number) '
498: || ' AND serial_number <= nvl(to_serial_number, '
499: || 'nvl(from_serial_number, serial_number)) AND inventory_item_id= '
500: || p_inventory_item_id, 'SERIAL_CHECK');
501: END IF;
502:
503: /*** {{ R12 Enhanced reservations code changes ***/
504: IF (p_update_reservation = fnd_api.g_true) THEN
547: IF (l_debug = 1) THEN
548: inv_log_util.TRACE('Update msn with group_mark_id in ('
549: || hdr_id || ', ' || lot_temp_id || ', ' || temp_id
550: || 'AND (line_mark_id = ' || temp_id
551: || ' OR line_mark_id is NULL OR line_mark_id = -1)', 'SERIAL_CHECK');
552: inv_log_util.TRACE(' AND (lot_line_mark_id = '|| lot_temp_id
553: || ' OR lot_line_mark_id IS NULL OR '
554: || 'lot_line_mark_id = -1) AND serial_number >= nvl(from_serial_number, serial_number) '
555: || ' serial_number <= nvl(to_serial_number, nvl(from_serial_number, serial_number)) '
552: inv_log_util.TRACE(' AND (lot_line_mark_id = '|| lot_temp_id
553: || ' OR lot_line_mark_id IS NULL OR '
554: || 'lot_line_mark_id = -1) AND serial_number >= nvl(from_serial_number, serial_number) '
555: || ' serial_number <= nvl(to_serial_number, nvl(from_serial_number, serial_number)) '
556: || ' AND length(serial_number) = length(nvl(from_serial_number, serial_number)) ', 'SERIAL_CHECK');
557: END IF;
558:
559: /*** {{ R12 Enhanced reservations code changes ***/
560: IF (p_update_reservation = fnd_api.g_true) THEN
622: || ' from mtl_transaction_lots_temp where group_header_id = '|| hdr_id||' and transaction_temp_id = '||temp_id
623: || ') OR line_mark_id is NULL or line_mark_id = -1 ) AND '
624: || ' serial_number >= nvl(from_serial_number, serial_number) '
625: || ' AND serial_number <= nvl(to_serial_number, nvl(from_serial_number, serial_number)) '
626: || ' AND length(serial_number) = length(nvl(from_serial_number, serial_number))', 'SERIAL_CHECK');
627: END IF;
628:
629: /*** {{ R12 Enhanced reservations code changes ***/
630: IF (p_update_reservation = fnd_api.g_true) THEN
693: IF (l_debug = 1) THEN
694: inv_log_util.TRACE('update msn with group_mark_id = '
695: || hdr_id || ' AND serial_number >= nvl(from_serial_number, serial_number) '
696: || ' AND serial_number <= nvl(to_serial_number, nvl(from_serial_number, serial_number)) '
697: || ' AND length(serial_number) = length(nvl(from_serial_number, serial_number))', 'SERIAL_CHECK');
698: END IF;
699:
700: /*** {{ R12 Enhanced reservations code changes ***/
701: IF (p_update_reservation = fnd_api.g_true) THEN
776:
777: l_debug NUMBER := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
778: BEGIN
779: IF (l_debug = 1) THEN
780: inv_log_util.trace('Inside inv_update_marked_serial','SERIAL_CHECK');
781: inv_log_util.trace('from_serial_number='||from_serial_number,'SERIAL_CHECK');
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
777: l_debug NUMBER := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
778: BEGIN
779: IF (l_debug = 1) THEN
780: inv_log_util.trace('Inside inv_update_marked_serial','SERIAL_CHECK');
781: inv_log_util.trace('from_serial_number='||from_serial_number,'SERIAL_CHECK');
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
778: BEGIN
779: IF (l_debug = 1) THEN
780: inv_log_util.trace('Inside inv_update_marked_serial','SERIAL_CHECK');
781: inv_log_util.trace('from_serial_number='||from_serial_number,'SERIAL_CHECK');
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
786: inv_log_util.trace('hdr_id='||hdr_id,'SERIAL_CHECK');
779: IF (l_debug = 1) THEN
780: inv_log_util.trace('Inside inv_update_marked_serial','SERIAL_CHECK');
781: inv_log_util.trace('from_serial_number='||from_serial_number,'SERIAL_CHECK');
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
786: inv_log_util.trace('hdr_id='||hdr_id,'SERIAL_CHECK');
787: inv_log_util.trace('lot_temp_id='||lot_temp_id,'SERIAL_CHECK');
780: inv_log_util.trace('Inside inv_update_marked_serial','SERIAL_CHECK');
781: inv_log_util.trace('from_serial_number='||from_serial_number,'SERIAL_CHECK');
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
786: inv_log_util.trace('hdr_id='||hdr_id,'SERIAL_CHECK');
787: inv_log_util.trace('lot_temp_id='||lot_temp_id,'SERIAL_CHECK');
788: END IF;
781: inv_log_util.trace('from_serial_number='||from_serial_number,'SERIAL_CHECK');
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
786: inv_log_util.trace('hdr_id='||hdr_id,'SERIAL_CHECK');
787: inv_log_util.trace('lot_temp_id='||lot_temp_id,'SERIAL_CHECK');
788: END IF;
789:
782: inv_log_util.trace('to_serial_number='||to_serial_number,'SERIAL_CHECK');
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
786: inv_log_util.trace('hdr_id='||hdr_id,'SERIAL_CHECK');
787: inv_log_util.trace('lot_temp_id='||lot_temp_id,'SERIAL_CHECK');
788: END IF;
789:
790: success := TRUE;
783: inv_log_util.trace('item_id='||item_id,'SERIAL_CHECK');
784: inv_log_util.trace('org_id='||org_id,'SERIAL_CHECK');
785: inv_log_util.trace('temp_id='||temp_id,'SERIAL_CHECK');
786: inv_log_util.trace('hdr_id='||hdr_id,'SERIAL_CHECK');
787: inv_log_util.trace('lot_temp_id='||lot_temp_id,'SERIAL_CHECK');
788: END IF;
789:
790: success := TRUE;
791:
790: success := TRUE;
791:
792: IF (temp_id IS NULL AND hdr_id IS NULL) THEN
793: IF (l_debug = 1) THEN
794: inv_log_util.trace('temp_id, hdr_id are both null, return false','SERIAL_CHECK');
795: END IF;
796: success := FALSE;
797: RETURN;
798: END IF;
799:
800: IF (to_serial_number IS NULL OR (from_serial_number = to_serial_number)) THEN
801:
802: IF (l_debug = 1) THEN
803: inv_log_util.trace('to_serial_number is null or same as from_serial_number','SERIAL_CHECK');
804: END IF;
805:
806: BEGIN
807: UPDATE mtl_serial_numbers
816: EXCEPTION
817: WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
818: success := FALSE;
819: IF (l_debug = 1) THEN
820: inv_log_util.trace('APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION','SERIAL_CHECK');
821: END IF;
822: END;
823:
824: success := TRUE;
824: success := TRUE;
825: ELSIF (to_serial_number IS NOT NULL AND NOT (from_serial_number = to_serial_number)) THEN
826:
827: IF (l_debug = 1) THEN
828: inv_log_util.trace('to_serial_number not null and different from from_serial_number','SERIAL_CHECK');
829: END IF;
830:
831: BEGIN
832: UPDATE mtl_serial_numbers
842: EXCEPTION
843: WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
844: success := FALSE;
845: IF (l_debug = 1) THEN
846: inv_log_util.trace('APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION','SERIAL_CHECK');
847: END IF;
848: END;
849:
850: success := TRUE;
855: EXCEPTION
856: WHEN others THEN
857: success := FALSE;
858: IF ( l_debug = 1 ) THEN
859: inv_log_util.trace('sqlerrm is ' || substr(sqlerrm, 1, 200),'SERIAL_CHECK');
860: END IF;
861:
862: END inv_update_marked_serial;
863:
860: END IF;
861:
862: END inv_update_marked_serial;
863:
864: END SERIAL_CHECK;