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