[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;