DBA Data[Home] [Help]

PACKAGE BODY: APPS.OCM_CREDIT_REQ_WITHDRAW_PUB

Source


1 PACKAGE BODY OCM_CREDIT_REQ_WITHDRAW_PUB AS
2 /*$Header: OCMPWIDB.pls 120.1 2005/08/23 23:45:14 bsarkar noship $  */
3 
4 pg_debug VARCHAR2(1) := nvl(fnd_profile.value('AFLOG_ENABLED'),'N');
5 
6 PROCEDURE debug (
7         p_message_name          IN      VARCHAR2 ) IS
8 BEGIN
9     ar_cmgt_util.debug (p_message_name, 'ar.cmgt.plsql.OCM_CREDIT_REQUEST_WITHDRAW_PUB' );
10 END;
11 
12 PROCEDURE WITHDRAW_REQUEST (
13 		p_api_version                    IN 	NUMBER,
14     	p_init_msg_list                  IN 	VARCHAR2 ,
15     	p_commit                         IN 	VARCHAR2,
16        	p_validation_level               IN 	VARCHAR2,
17        	x_return_status                  OUT 	NOCOPY VARCHAR2,
18        	x_msg_count                      OUT	NOCOPY NUMBER,
19        	x_msg_data                       OUT 	NOCOPY VARCHAR2,
20 		p_credit_request_id				 IN	 	NUMBER,
21 		p_withdrawl_reason_code			 IN	 	VARCHAR2 ) IS
22 
23 		l_ctr								VARCHAr2(1);
24 		l_status							VARCHAR2(30);
25 BEGIN
26 	IF pg_debug = 'Y'
27 	THEN
28 		debug ( 'Withdraw Request (+)');
29 		debug ( 'p_credit_request_id ' ||p_credit_request_id );
30 		debug ( 'p_withdraw_reason_code ' ||p_withdrawl_reason_code );
31 	END IF;
32 
33 	x_return_status  := FND_API.G_RET_STS_SUCCESS;
34 
35     SAVEPOINT WITHDRAW_REQUEST;
36 
37     IF FND_API.to_Boolean( p_init_msg_list )
38     THEN
39     	FND_MSG_PUB.initialize;
40     END IF;
41 
42     -- validate whether the credit request is valid or not
43 	BEGIN
44 		SELECT 'X'
45 		INTO   l_status
46 		FROM   ar_cmgt_credit_requests
47 		WHERE  credit_request_id = p_credit_request_id
48 		AND    status NOT IN ('WITHDRAW', 'PROCESSED');
49 
50 	EXCEPTION
51 		WHEN NO_DATA_FOUND THEN
52 			x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
53 			x_msg_count   := 1;
54 			x_msg_data := 'OCM_INVALID_WITHDRAW_REQUEST';
55 			return;
56 		WHEN OTHERS THEN
57 			x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
58 			x_msg_count   := 1;
59 			x_msg_data := sqlerrm;
60 			return;
61 	END;
62 	BEGIN
63 		SELECT 'X'
64 		INTO   l_ctr
65 		FROM   ar_lookups
66 		WHERE  lookup_type = 'AR_CMGT_APP_WITHDRAW_REASONS'
67 		AND    lookup_code = p_withdrawl_reason_code;
68 
69 	EXCEPTION
70 		WHEN NO_DATA_FOUND THEN
71 			x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
72 			x_msg_count   := 1;
73 			x_msg_data := 'OCM_INVALID_WITHDRAW_REASON';
74 			return;
75 		WHEN OTHERS THEN
76 			x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
77 			x_msg_count   := 1;
78 			x_msg_data := sqlerrm;
79 			return;
80 	END;
81 
82 	-- Now update the status of credit request and case folder
83 	UPDATE ar_cmgt_credit_requests
84 	  SET  status = 'WITHDRAW'
85 	WHERE credit_request_id = p_credit_request_id;
86 
87 	UPDATE ar_cmgt_case_folders
88 	  SET  status = 'WITHDRAW'
89 	WHERE credit_request_id = p_credit_request_id;
90 
91 	IF l_status <> ( 'SAVE' )
92 	THEN
93 		WF_ENGINE.AbortProcess (
94 			itemtype => 'ARCMGTAP',
95 			itemkey => p_credit_request_id );
96 	END IF;
97 
98 	IF pg_debug = 'Y'
99 	THEN
100 		debug ( 'Withdraw Request (-)');
101 	END IF;
102 
103 	EXCEPTION
104 		WHEN OTHERS THEN
105 			rollback to WITHDRAW_REQUEST;
106 			x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
107 			x_msg_data := sqlerrm;
108 
109 END WITHDRAW_REQUEST;
110 
111 END OCM_CREDIT_REQ_WITHDRAW_PUB;