[Home] [Help]
PACKAGE BODY: APPS.OKL_QA_CHECK_PUB
Source
1 PACKAGE BODY okl_qa_check_pub AS
2 /* $Header: OKLPQAKB.pls 120.12 2007/05/14 17:18:36 rpillay noship $ */
3
4 G_MODULE VARCHAR2(255) := 'okl.stream.esg.okl_esg_transport_pvt';
5 G_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6 G_IS_DEBUG_STATEMENT_ON BOOLEAN;
7
8
9 PROCEDURE execute_qa_check_list(
10 p_api_version IN NUMBER,
11 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
12 x_return_status OUT NOCOPY VARCHAR2,
13 x_msg_count OUT NOCOPY NUMBER,
14 x_msg_data OUT NOCOPY VARCHAR2,
15 p_qcl_id IN NUMBER,
16 p_chr_id IN NUMBER,
17 x_msg_tbl OUT NOCOPY msg_tbl_type,
18 p_call_mode IN VARCHAR2 DEFAULT 'ACTUAL')
19 IS
20 l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
21 l_api_name CONSTANT VARCHAR2(30) := 'execute_qa_check_list';
22 l_msg_tbl OKC_QA_CHECK_PUB.msg_tbl_type;
23 i NUMBER;
24
25 -- Bug# 3477560
26 CURSOR khr_sts_csr (p_chr_id IN NUMBER) is
27 SELECT STS_CODE,
28 SCS_CODE,
29 CONTRACT_NUMBER
30 FROM OKC_K_HEADERS_B
31 WHERE ID = p_chr_id;
32 l_khr_sts OKC_K_HEADERS_B.STS_CODE%TYPE;
33 l_khr_scs_code OKC_K_HEADERS_B.SCS_CODE%Type;
34 l_khr_contract_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
35
36 CURSOR check_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
37 SELECT count(1)
38 FROM okl_rbk_selected_contract
39 WHERE khr_id = p_chr_id
40 AND NVL(status,'NEW') = 'UNDER REVISION';
41 l_mrbk NUMBER;
42
43 CURSOR chr_qcl_csr (p_chr_id IN NUMBER) is
44 SELECT 'Y'
45 FROM OKC_K_HEADERS_B
46 WHERE ID = p_chr_id
47 AND QCL_ID IS NOT NULL;
48 l_qcl_yn VARCHAR2(1) := null;
49
50 BEGIN
51 l_return_status := OKC_API.START_ACTIVITY(l_api_name,
52 p_init_msg_list,
53 '_PUB',
54 x_return_status);
55 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
56 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
57 ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
58 raise OKC_API.G_EXCEPTION_ERROR;
59 END IF;
60 -- g_qclv_rec := p_qclv_rec;
61 okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
62 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
63 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
64 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
65 raise OKC_API.G_EXCEPTION_ERROR;
66 END IF;
67
68 -- Bug# 5142890 - Check for missing qcl id
69 l_qcl_yn := null;
70 OPEN chr_qcl_csr (p_chr_id => p_chr_id);
71 FETCH chr_qcl_csr INTO l_qcl_yn;
72 CLOSE chr_qcl_csr;
73
74 IF (l_qcl_yn IS NULL) THEN
75 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
76 OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME,
77 p_msg_name => 'OKL_MISSING_QCL_ID');
78 RAISE OKC_API.G_EXCEPTION_ERROR;
79 END IF;
80
81 -- Bug# 3477560 - Do not allow modification when contract status is
82 -- PENDING_APPROVAL
83 IF (p_call_mode = 'ACTUAL') THEN
84 OPEN khr_sts_csr (p_chr_id => p_chr_id);
85 FETCH khr_sts_csr into
86 l_khr_sts,
87 l_khr_scs_code,
88 l_khr_contract_number;
89 IF khr_sts_csr%FOUND THEN
90 IF l_khr_scs_code = 'LEASE' AND l_khr_sts = 'PENDING_APPROVAL' THEN
91 OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME,
92 p_msg_name => 'OKL_LLA_PENDING_APPROVAL',
93 p_token1 => 'CONTRACT_NUMBER',
94 p_token1_value => l_khr_contract_number);
95 RAISE OKC_API.G_EXCEPTION_ERROR;
96 END IF;
97 l_mrbk := 0;
98 OPEN check_csr (p_chr_id);
99 FETCH check_csr INTO l_mrbk;
100 CLOSE check_csr;
101
102 IF (l_mrbk = 0) THEN -- not a mass rebook contract
103 IF (l_khr_sts <> 'NEW' AND l_khr_sts <> 'INCOMPLETE' ) THEN
104 OKL_API.SET_MESSAGE(p_app_name => OKL_API.G_APP_NAME,
105 p_msg_name => 'OKL_QA_ALREADY_VAL');
106 RAISE OKC_API.G_EXCEPTION_ERROR;
107 END IF;
108 END IF;
109 END IF;
110
111 -- Sales Tax, dedey
112 -- Call tax engine to calculate Sales Tax
113 --
114 -- Sales Tax calculation moved to a separate step in
115 -- contract booking flow.
116
117 END IF;
118
119 OKC_QA_CHECK_PUB.execute_qa_check_list(
120 p_api_version => p_api_version,
121 p_init_msg_list => p_init_msg_list,
122 x_return_status => x_return_status,
123 x_msg_count => x_msg_count,
124 x_msg_data => x_msg_data,
125 p_qcl_id => p_qcl_id,
126 p_chr_id => p_chr_id,
127 x_msg_tbl => l_msg_tbl);
128
129 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
130 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
131 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
132 raise OKC_API.G_EXCEPTION_ERROR;
133 END IF;
134
135 --migrate okc output to okl output
136 i := 1;
137 Loop
138 x_msg_tbl(i).severity := l_msg_tbl(i).severity;
139 x_msg_tbl(i).name := l_msg_tbl(i).name;
140 x_msg_tbl(i).description := l_msg_tbl(i).description;
141 x_msg_tbl(i).package_name := l_msg_tbl(i).package_name;
142 x_msg_tbl(i).procedure_name := l_msg_tbl(i).procedure_name;
143
144 -- Added by dedey
145 x_msg_tbl(i).data := l_msg_tbl(i).data;
146 x_msg_tbl(i).error_status := l_msg_tbl(i).error_status;
147 -- Added by dedey
148
149 If l_msg_tbl.LAST = i Then
150 Exit;
151 Else
152 i := i + 1;
153 End If;
154 End Loop;
155 -- g_qclv_rec := x_qclv_rec;
156 okc_util.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'A');
157 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
158 raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
159 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
160 raise OKC_API.G_EXCEPTION_ERROR;
161 END IF;
162 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
163 EXCEPTION
164 WHEN OKC_API.G_EXCEPTION_ERROR THEN
165 x_return_status := OKC_API.HANDLE_EXCEPTIONS
166 (l_api_name
167 ,G_PKG_NAME
168 ,'OKC_API.G_RET_STS_ERROR'
169 ,x_msg_count
170 ,x_msg_data
171 ,'_PUB');
172 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
173 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
174 (l_api_name
175 ,G_PKG_NAME
176 ,'OKC_API.G_RET_STS_UNEXP_ERROR'
177 ,x_msg_count
178 ,x_msg_data
179 ,'_PUB');
180 WHEN OTHERS THEN
181 x_return_status :=OKC_API.HANDLE_EXCEPTIONS
182 (l_api_name
183 ,G_PKG_NAME
184 ,'OTHERS'
185 ,x_msg_count
186 ,x_msg_data
187 ,'_PUB');
188 END execute_qa_check_list;
189
190
191 END okl_qa_check_pub;