DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_RCV_MOBILE_PROCESS_TXN

Source


1 PACKAGE BODY  INV_RCV_MOBILE_PROCESS_TXN AS
2 /* $Header: INVRCVPB.pls 120.6.12010000.1 2008/07/24 01:45:00 appldev ship $*/
3 
4 --  Global constant holding the package name
5 G_PKG_NAME      CONSTANT VARCHAR2(30) := 'INV_RCV_MOBILE_PROCESS_TXN';
6 
7 PROCEDURE print_debug(p_err_msg VARCHAR2,
8 		      p_level NUMBER)
9   IS
10     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
11 BEGIN
12    IF (l_debug = 1) THEN
13       inv_mobile_helper_functions.tracelog
14      (p_err_msg => p_err_msg,
15       p_module => 'INV_RCV_MOBILE_PROCESS_TXN',
16       p_level => p_level);
17    END IF;
18 
19 --   dbms_output.put_line(p_err_msg);
20 END print_debug;
21 
22 
23 FUNCTION check_group_id(p_group_id IN NUMBER)
24   RETURN BOOLEAN
25   IS
26      l_rec_count NUMBER := 0;
27     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
28 BEGIN
29    SELECT   COUNT(1)
30      INTO   l_rec_count
31      FROM   RCV_TRANSACTIONS_INTERFACE
32     WHERE   group_id = p_group_id;
33 
34     IF (l_rec_count = 0) THEN
35        IF (l_debug = 1) THEN
36           print_debug('check_group_id 10 Did not find the row with group id in RTI',4);
37        END IF;
38        return (FALSE);
39      ELSE
40        IF (l_debug = 1) THEN
41           print_debug('check_group_id 20 Found the row with group id in RTI',4);
42        END IF;
43        return (TRUE);
44     END IF;
45 
46 EXCEPTION
47    WHEN NO_DATA_FOUND THEN
48        IF (l_debug = 1) THEN
49           print_debug('check_group_id 30 Did not find the row with group id in RTI',4);
50        END IF;
51       RETURN(FALSE);
52    WHEN OTHERS THEN
53       NULL;
54 END check_group_id;
55 
56 
57 PROCEDURE rcv_print_traveller
58   IS
59      v_req_id NUMBER;
60      v_qty_precision VARCHAR2(4);
61     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
62     l_org_id NUMBER;
63 BEGIN
64 
65    /*
66    ** Check if we need to print receipt traveller
67    */
68      IF Upper(inv_rcv_common_apis.g_po_startup_value.receipt_traveller) = 'Y' THEN -- ?
69         v_qty_precision := fnd_profile.value('REPORT_QUANTITY_PRECISION');
70 	v_req_id :=
71 	  fnd_request.submit_request('PO',
72 				     'RCVDLPDT',
73 				     null,
74 				     null,
75 				     false,
76 				     'P_group_id=' || inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
77 				     'P_qty_precision='||v_qty_precision,
78 				     'P_org_id=' || inv_rcv_common_apis.g_po_startup_value.inv_org_id,--NULL, --fnd_char.local_chr(0),----bug 5195963
79 				     NULL,
80 				     NULL,
81 				     NULL,
82 				     NULL,
83 				     NULL,
84 				     NULL, NULL,
85 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
86 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
87 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
88 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
89 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
90 
91 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
92 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
93 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
94 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
95 
96 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
97 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
98 				     NULL, NULL, NULL, NULL, NULL, NULL, NULL,
99 				     NULL, NULL, NULL, NULL, NULL, NULL);
100 
101 	-- This error handling is useless
102 	-- if print_traveller follows commit
103 	-- It will be useful if it is called as stand alone
104 	-- so leave it here
105        if (v_req_id <= 0 or v_req_id is null) then
106 	  NULL;
107 	ELSE
108 	  COMMIT;
109        end if;
110      END IF;
111 END rcv_print_traveller;
112 
113 
114 PROCEDURE rcv_immediate_transaction(x_return_status OUT nocopy VARCHAR2,
115 				   x_msg_data       OUT nocopy VARCHAR2)
116   IS
117      v_req_id NUMBER;
118     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
119 BEGIN
120    x_return_status := fnd_api.g_ret_sts_success;
121 
122    v_req_id :=
123      fnd_request.submit_request('PO',
124 				'RVCTP',
125 				null,
126 				null,
127 				false,
128 				'IMMEDIATE',
129 				inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
130 				NULL, --fnd_char.local_chr(0), ?
131 				NULL,
132 				NULL,
133 				NULL,
134 				NULL,
135 				NULL, NULL,
136 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
137 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
138 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
139 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
140 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
141 
142 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
143 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
144 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
145 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
146 
147 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
148 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
149 				NULL, NULL, NULL, NULL, NULL, NULL, NULL,
150 				NULL, NULL, NULL, NULL, NULL, NULL, NULL);
151 
152    if (v_req_id <= 0 or v_req_id is null) then
153       x_return_status := fnd_api.g_ret_sts_error;
154       x_msg_data := FND_MESSAGE.get;
155     ELSE
156       COMMIT;
157    end if;
158 END rcv_immediate_transaction;
159 
160 
161 PROCEDURE rcv_online_request (x_return_status OUT nocopy VARCHAR2,
162 			      x_msg_data       OUT nocopy VARCHAR2)
163   IS
164    rc NUMBER;
165    l_timeout NUMBER ;
166    l_outcome VARCHAR2(200) := NULL;
167    l_message VARCHAR2(2000) := NULL;
168    l_return_status VARCHAR2(5) := fnd_api.g_ret_sts_success;
169    l_msg_count NUMBER;
170    x_str varchar2(6000) := NULL;
171    DELETE_ROWS   BOOLEAN := FALSE;
172    r_val1 varchar2(300) := NULL;
173    r_val2 varchar2(300) := NULL;
174    r_val3 varchar2(300) := NULL;
175    r_val4 varchar2(300) := NULL;
176    r_val5 varchar2(300) := NULL;
177    r_val6 varchar2(300) := NULL;
178    r_val7 varchar2(300) := NULL;
179    r_val8 varchar2(300) := NULL;
180    r_val9 varchar2(300) := NULL;
181    r_val10 varchar2(300) := NULL;
182    r_val11 varchar2(300) := NULL;
183    r_val12 varchar2(300) := NULL;
184    r_val13 varchar2(300) := NULL;
185    r_val14 varchar2(300) := NULL;
186    r_val15 varchar2(300) := NULL;
187    r_val16 varchar2(300) := NULL;
188    r_val17 varchar2(300) := NULL;
189    r_val18 varchar2(300) := NULL;
190    r_val19 varchar2(300) := NULL;
191    r_val20 varchar2(300) := NULL;
192    l_progress VARCHAR2(10) := '10';
193    l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
194    l_group_id NUMBER := inv_rcv_common_apis.g_rcv_global_var.interface_group_id;
195 BEGIN
196    x_return_status := fnd_api.g_ret_sts_success;
197 
198    -- Bug 5046328
199    -- Get the timeout value from profile
200 
201    l_timeout := fnd_profile.value('INV_RPC_TIMEOUT');
202 
203    IF (l_timeout is NULL) THEN
204       l_timeout := 300;
205    END IF;
206 --bug 7034252
207    IF (l_debug = 1) THEN
208       print_debug('rcv_online_request - timeout : '|| l_timeout, 1);
209    END IF;
210     Begin
211          print_debug('updating proceesing mode in rti  for group id'||inv_rcv_common_apis.g_rcv_global_var.interface_group_id,1);
212          UPDATE RCV_TRANSACTIONS_INTERFACE
213          SET PROCESSING_MODE_CODE =  'ONLINE'
214          WHERE GROUP_ID = inv_rcv_common_apis.g_rcv_global_var.interface_group_id
215          AND  PROCESSING_MODE_CODE <> 'ONLINE';
216          COMMIT;
217       EXCEPTION
218       WHEN OTHERS THEN
219         print_debug('no record found in rti which requires update  ',1);
220   END;
221   --end of bug 7034252
222 
223 
224    rc := fnd_transaction.synchronous
225      (
226       l_timeout, l_outcome, l_message, 'PO', 'RCVTPO',
227       'ONLINE',  inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
228       NULL, NULL, NULL, NULL, NULL, NULL,
229       NULL, NULL, NULL, NULL, NULL, NULL,
230       NULL, NULL, NULL, NULL, NULL, NULL);
231 
232    l_progress := '20';
233 
234    IF (l_debug = 1) THEN
235       print_debug('rcv_online_request :value of l_outcome:'||l_outcome|| to_char(sysdate,
236                   'YYYY-MM-DD HH:DD:SS'), 1);
237       print_debug('rcv_online_request :value of rc:'||rc|| to_char(sysdate,
238                   'YYYY-MM-DD HH:DD:SS'), 1);
239    END IF;
240 
241    IF (rc = 0 and (l_outcome NOT IN ('WARNING', 'ERROR'))) THEN
242       l_progress := '30';
243       BEGIN
244 	 SELECT 'ERROR'
245 	   INTO l_outcome
246 	   FROM dual
247 	   WHERE EXISTS (SELECT 1
248 			 FROM   rcv_transactions_interface
249 			 WHERE  group_id = l_group_id
250 			 AND    (transaction_status_code = 'ERROR' OR
251 				 processing_status_code = 'ERROR'));
252       EXCEPTION
253 	 WHEN OTHERS THEN
254 	    -- If no row is found, then leave l_outcome as it is returned
255 	    -- from fnd_transaction.synchronous
256 	    NULL;
257       END;
258 
259       IF (l_outcome = 'ERROR') THEN
260 	 x_return_status := fnd_api.g_ret_sts_unexp_error;
261 	 IF (l_debug = 1) THEN
262 	    print_debug('rcv_online_request 29.99 finished with error at: '|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 1);
263 	 END IF;
264        ELSE
265 	 IF (l_debug = 1) THEN
266 	    print_debug('rcv_online_request 30 finished without error at: '|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 1);
267 	 END IF;
268       END IF;
269     ELSIF (rc = 1) THEN
270       l_progress := '40';
271       IF (l_debug = 1) THEN
272          print_debug('rcv_online_request 40 finished with error rc = 1 at: '|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 1);
273       END IF;
274       IF (check_group_id(inv_rcv_common_apis.g_rcv_global_var.interface_group_id)) THEN
275 	 fnd_message.set_name('FND', 'TM-TIMEOUT');
276 	 --x_str := fnd_message.get;
277 	 --fnd_message.clear;
278 	 FND_MESSAGE.set_name('FND','CONC-Error running standalone');
279 	 fnd_message.set_token('PROGRAM', 'Receiving Transaction Manager - RCVOLTM');
280 	 fnd_message.set_token('REQUEST', inv_rcv_common_apis.g_rcv_global_var.interface_group_id);
281 	 fnd_message.set_token('REASON', x_str);
282 	 --fnd_message.clear;
283 	 fnd_msg_pub.ADD;
284 
285          /* See the commnets below from ATG for timeout */
286 	 --DELETE_ROWS := TRUE;
287 
288       END IF;
289 
290       l_progress := '50';
291       x_return_status := fnd_api.g_ret_sts_error;
292 
293       --x_msg_data := FND_MESSAGE.get;
294 
295       -- Since IF TIMEOUT Happens the Return comes back to client
296       -- But server Process (i,e TM) may be still working in the Background and
297       -- eventually commit
298       --
299       -- Update from ATG
300       /* Rolling back on the client side after a timeout will have no effect on what
301           the transaction manager is processing on the server.
302           Remember that the client side process sends the transaction to the transaction
303           manager and then waits for a response. If the response does not come within
304           the timeout period, the client returns a timeout error. However this does not
305           affect the server-side transaction, which will continue to process data until
306           it finishes.
307           If you have a heavy load and are seeing too many timeouts, you should increase
308           the timeout value you are using.
309       */
310 
311       -- inv_receiving_transaction.txn_complete
312       -- (p_group_id => inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
313       -- p_txn_status => 'FALSE',
314       -- p_txn_mode => 'ONLINE',
315       -- x_return_status => l_return_status,
316       -- x_msg_data => l_message,
317       -- x_msg_count => l_msg_count);
318 
319       l_progress := '60';
320 
321     ELSIF (rc = 2) THEN
322       --	    txn_failure_clean_up;
323       l_progress := '70';
324       IF (l_debug = 1) THEN
325          print_debug('rcv_online_request 70 finished with error rc = 2 at: '|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 1);
326       END IF;
327       IF (check_group_id(inv_rcv_common_apis.g_rcv_global_var.interface_group_id)) THEN
328 	 fnd_message.set_name('FND', 'TM-SVC LOCK HANDLE FAILED');
329 	 --x_str := fnd_message.get;
330 	 --fnd_message.clear;
331 	 FND_MESSAGE.set_name('FND','CONC-Error running standalone');
332 	 fnd_message.set_token('PROGRAM', 'Receiving Transaction Manager - RCVOLTM');
333 	 fnd_message.set_token('REQUEST', inv_rcv_common_apis.g_rcv_global_var.interface_group_id);
334 	 fnd_message.set_token('REASON', x_str);
335 	 --fnd_message.clear;
336 	 fnd_msg_pub.ADD;
337 	 DELETE_ROWS := TRUE;
338       END IF;
339 
340       x_return_status := fnd_api.g_ret_sts_error;
341       --x_msg_data := FND_MESSAGE.get;
342       l_progress := '80';
343 
344       inv_receiving_transaction.txn_complete
345 	(p_group_id => inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
346 	 p_txn_status => 'FALSE',
347 	 p_txn_mode => 'ONLINE',
348 	 x_return_status => l_return_status,
349 	 x_msg_data => l_message,
350 	 x_msg_count => l_msg_count);
351 
352     END IF;
353     /* Bug 4901912 -Modified the ELSIF condition by ending the previous IF clause
354                     so that both the cases of rc=3 or l_outcome warning or error is handled.*/
355     IF (rc = 3 or (l_outcome IN ('WARNING', 'ERROR'))) THEN
356       l_progress := '90';
357       IF (l_debug = 1) THEN
358          print_debug('rcv_online_request 90 finished with error rc = 3 for:'||inv_rcv_common_apis.g_rcv_global_var.interface_group_id||' AT : '|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 1);
359       END IF;
360 
361       --	    txn_failure_clean_up;
362       IF (check_group_id(inv_rcv_common_apis.g_rcv_global_var.interface_group_id)) THEN
363 	 IF (l_debug = 1) THEN
364    	 print_debug('rcv_online_request 90.01 found the group id',4);
365 	 END IF;
366 	 l_progress := '95';
367 	 rc := fnd_transaction.get_values
368 	   (
369 	    r_val1, r_val2, r_val3, r_val4, r_val5,
370 	    r_val6, r_val7, r_val8, r_val9, r_val10,
371 	    r_val11, r_val12, r_val13, r_val14, r_val15,
372 	    r_val16, r_val17, r_val18, r_val19, r_val20
373 	    );
374 
375 	 l_progress := '100';
376 	 x_str := r_val1;
377 	 --	       FND_MESSAGE.SET_STRING(x_str);
378 	 --FND_MESSAGE.CLEAR;
379 	 IF (r_val2 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val2;  END IF;
380 	 IF (r_val3 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val3;  END IF;
381 	 IF (r_val4 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val4;  END IF;
382 	 IF (r_val5 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val5;  END IF;
383 	 IF (r_val6 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val6;  END IF;
384 	 IF (r_val7 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val7;  END IF;
385 	 IF (r_val8 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val8;  END IF;
386 	 IF (r_val9 IS NOT NULL)  THEN x_str := x_str || fnd_global.local_chr(10) || r_val9;  END IF;
387 	 l_progress := '105';
388 	 IF (r_val10 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val10; END IF;
389 	 IF (r_val11 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val11; END IF;
390 	 IF (r_val12 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val12; END IF;
391 	 IF (r_val13 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val13; END IF;
392 	 IF (r_val14 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val14; END IF;
393 	 IF (r_val15 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val15; END IF;
394 	 IF (r_val16 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val16; END IF;
395 	 IF (r_val17 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val17; END IF;
396 	 IF (r_val18 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val18; END IF;
397 	 IF (r_val19 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val19; END IF;
398 	 IF (r_val20 IS NOT NULL) THEN x_str := x_str || fnd_global.local_chr(10) || r_val20; END IF;
399 
400 	 l_progress := '107';
401 	 IF (l_debug = 1) THEN
402    	 print_debug('rcv_online_request 90.1 finished with error :'||x_str, 1);
403 	 END IF;
404 	 l_progress := '108';
405 
406 	 DELETE_ROWS := TRUE;
407       END IF;
408 
409       x_return_status := fnd_api.g_ret_sts_error;
410       --x_msg_data := FND_MESSAGE.get;
411 
412       l_progress := '109';
413       inv_receiving_transaction.txn_complete
414 	(p_group_id => inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
415 	 p_txn_status => 'FALSE',
416 	 p_txn_mode => 'ONLINE',
417 	 x_return_status => l_return_status,
418 	 x_msg_data => l_message,
419 	 x_msg_count => l_msg_count);
420 
421       l_progress := '110';
422 
423    END IF;
424 
425    IF (DELETE_ROWS) THEN
426      BEGIN
427 
428        /* Bug# 6081470
429         * Commented out the below update statement as the same record set
430         * is getting deleted below
431         */
432 /*      UPDATE rcv_transactions_interface
433           SET processing_status_code = 'COMPLETED'
434             , transaction_status_code = 'ERROR'
435         WHERE group_id = inv_RCV_COMMON_APIS.g_rcv_global_var.interface_group_id;
436 */
437 
438         --No need to delete the record in RTI. FPJ enhancement
439         --delete from rcv_transactions_interface
440         --where group_id = inv_RCV_COMMON_APIS.g_rcv_global_var.interface_group_id;
441 
442         /* Bug 4901912 -Deleting the errored RTIs */
443         IF (l_debug = 1) THEN
444           print_debug('INV_RCV_MOBILE_PROCESS_TXN.rcv_online_request in delete rows for group_id:'
445                           || inv_RCV_COMMON_APIS.g_rcv_global_var.interface_group_id,4);
446         END IF;
447 
448         delete from rcv_transactions_interface
449         where group_id = inv_RCV_COMMON_APIS.g_rcv_global_var.interface_group_id;
450 
451         /* Bug# 6081470
452          * Added code to also delete the rcv_headers_interface records as the
453          * corresponding rcv_transactions_interface records are being deleted above.
454          * Hence this becomes an orphan RHI record and there is no use of this record.
455          */
456         delete from rcv_headers_interface
457         where group_id = inv_RCV_COMMON_APIS.g_rcv_global_var.interface_group_id;
458 
459         /* End of fix for Bug 4901912 */
460 
461       EXCEPTION
462         WHEN OTHERS THEN NULL;
463      END;
464    END IF;
465    COMMIT;
466 
467 EXCEPTION
468    WHEN OTHERS THEN
469       x_return_status := fnd_api.g_ret_sts_unexp_error ;
470       IF SQLCODE IS NOT NULL THEN
471           inv_mobile_helper_functions.sql_error('INV_RCV_MOBILE_PROCESS_TXN.rcv_online_request', l_progress, SQLCODE);
472       END IF;
473       IF (l_debug = 1) THEN
474          print_debug('INV_RCV_MOBILE_PROCESS_TXN.rcv_online_request exception:'||l_progress,4);
475       END IF;
476 END rcv_online_request;
477 
478 
479 PROCEDURE rcv_process_receive_txn(x_return_status OUT nocopy VARCHAR2,
480 				  x_msg_data      OUT nocopy VARCHAR2)
481   IS
482      l_return_status VARCHAR2(1) := FND_API.g_ret_sts_success;
483      l_msg_count NUMBER;
484      l_msg_data VARCHAR2(400);
485      l_progress VARCHAR2(10);
486     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
487 BEGIN
488    x_return_status := fnd_api.g_ret_sts_success;
489    IF (l_debug = 1) THEN
490       print_debug('rcv_process_receive_txn 10: '|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 1);
491    END IF;
492    l_progress := '10';
493 
494    -- calling lpn_pack_complete api to clear the LPN weight/volume pl/sql table
495    IF wms_install.check_install(l_return_status, l_msg_count, l_msg_data, NULL) THEN
496       IF wms_container_pub.lpn_pack_complete(0) THEN
497 	 NULL;
498       END IF;
499    END IF;
500 
501 
502    -- We will remove this later ??
503    --inv_rcv_common_apis.g_po_startup_value.transaction_mode := 'ONLINE';
504 
505    IF Upper(inv_rcv_common_apis.g_po_startup_value.transaction_mode) = 'IMMEDIATE' OR
506       Upper(inv_rcv_common_apis.g_po_startup_value.transaction_mode) =  'BATCH' THEN
507 
508      -- Call rma API First
509      -- This API returns without doing anything if the source is not customer
510 
511 -- *****************************
512 -- This call is commented in patchsetJ as this is not needed anymore
513 -- because Receiving TM would call it for immediate and batch mode also.
514 --
515 --rcv_update_rma_info(inv_rcv_common_apis.g_rcv_global_var.interface_group_id,
516 --                  x_return_status ,
517 --                       x_msg_data );
518 --     l_progress := '10.1';
519 
520 --IF l_return_status = FND_API.g_ret_sts_error THEN
521 --	 FND_MESSAGE.SET_NAME('INV', 'INV_RCV_IMMEDIATE_TXN_FAIL');
522 --	 FND_MSG_PUB.ADD;
523 --	 IF (l_debug = 1) THEN
524 --  	 print_debug('rcv_process_receive_txn 10.1: rcv_immediate_transaction RAISE FND_API.G_EXC_ERROR;'|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 4);
525 --	 END IF;
526 --	 RAISE FND_API.G_EXC_ERROR;
527 --     END IF;
528 --
529 --     IF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
530 --	 FND_MESSAGE.SET_NAME('INV', 'INV_RCV_IMMEDIATE_TXN_FAIL');
531 --	 FND_MSG_PUB.ADD;
532 --	 IF (l_debug = 1) THEN
533 --  	 print_debug('rcv_process_receive_txn 10.2: rcv_immediate_transaction RAISE FND_API.G_EXC_UNEXPECTED_ERROR;'|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 4);
534 --	 END IF;
535 --	 RAISE FND_API.g_exc_unexpected_error;
536 --     END IF;
537 -- ************************************
538 
539       rcv_immediate_transaction
540 	(x_return_status => l_return_status,
541 	 x_msg_data      => l_msg_data);
542 
543       l_progress := '20';
544 
545       IF l_return_status = FND_API.g_ret_sts_error THEN
546 	 FND_MESSAGE.SET_NAME('INV', 'INV_RCV_IMMEDIATE_TXN_FAIL');
547 	 FND_MSG_PUB.ADD;
548 	 IF (l_debug = 1) THEN
549    	 print_debug('rcv_process_receive_txn 20.1: rcv_immediate_transaction RAISE FND_API.G_EXC_ERROR;'|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 4);
550 	 END IF;
551 	 RAISE FND_API.G_EXC_ERROR;
552       END IF;
553 
554 
555       IF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
556 	 FND_MESSAGE.SET_NAME('INV', 'INV_RCV_IMMEDIATE_TXN_FAIL');
557 	 FND_MSG_PUB.ADD;
558 	 IF (l_debug = 1) THEN
559    	 print_debug('rcv_process_receive_txn 20.2: rcv_immediate_transaction RAISE FND_API.G_EXC_UNEXPECTED_ERROR;'|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 4);
560 	 END IF;
561 	 RAISE FND_API.g_exc_unexpected_error;
562       END IF;
563 
564     ELSE
565       l_progress := '30';
566       COMMIT;
567       rcv_online_request(x_return_status => l_return_status,
568 			 x_msg_data      => l_msg_data);
569 
570       IF l_return_status = FND_API.g_ret_sts_error THEN
571 	 FND_MESSAGE.SET_NAME('INV', 'INV_RCV_ONLINE_TXN_FAIL');
572 	 FND_MSG_PUB.ADD;
573 	 IF (l_debug = 1) THEN
574    	 print_debug('rcv_process_receive_txn 30.1: rcv_online_request RAISE FND_API.G_EXC_ERROR;'|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 4);
575 	 END IF;
576 	 RAISE FND_API.G_EXC_ERROR;
577       END IF;
578 
579 
580       IF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
581 	 FND_MESSAGE.SET_NAME('INV', 'INV_RCV_ONLINE_TXN_FAIL');
582 	 FND_MSG_PUB.ADD;
583 	 IF (l_debug = 1) THEN
584    	 print_debug('rcv_process_receive_txn 30.2: rcv_online_request RAISE FND_API.G_EXC_UNEXPECTED_ERROR;'|| to_char(sysdate, 'YYYY-MM-DD HH:DD:SS'), 4);
585 	 END IF;
586 	 RAISE FND_API.g_exc_unexpected_error;
587       END IF;
588 
589       COMMIT;
590    END IF;
591 
592    IF l_return_status = fnd_api.g_ret_sts_success THEN
593       rcv_print_traveller;
594    END IF;
595    inv_rcv_common_apis.g_rcv_global_var.interface_group_id := '';
596 
597 EXCEPTION
598    WHEN fnd_api.g_exc_error THEN
599       rcv_print_traveller;
600 
601       x_return_status := fnd_api.g_ret_sts_error;
602 
603       fnd_msg_pub.count_and_get
604 	(p_encoded	=> FND_API.g_false,
605 	 p_count  => l_msg_count,
606 	 p_data   => x_msg_data
607 	 );
608 
609    WHEN fnd_api.g_exc_unexpected_error THEN
610       rcv_print_traveller;
611 
612       x_return_status := fnd_api.g_ret_sts_unexp_error ;
613 
614       fnd_msg_pub.count_and_get
615 	(p_encoded	=> FND_API.g_false,
616 	 p_count  => l_msg_count,
617 	 p_data   => x_msg_data
618 	 );
619 
620    WHEN OTHERS THEN
621       rcv_print_traveller;
622 
623       x_return_status := fnd_api.g_ret_sts_unexp_error ;
624 
625       IF SQLCODE IS NOT NULL THEN
626 	 inv_mobile_helper_functions.sql_error('INV_RCV_MOBILE_PROCESS_TXN.rcv_process_receive_txn', l_progress, SQLCODE);
627       END IF;
628       fnd_msg_pub.count_and_get
629 	(p_encoded	=> FND_API.g_false,
630 	 p_count  => l_msg_count,
631 	 p_data   => x_msg_data
632 	 );
633 
634 END rcv_process_receive_txn;
635 
636 END INV_RCV_MOBILE_PROCESS_TXN;
637