DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_REQ_DOCUMENT_CHECKS_GRP

Source


1 PACKAGE BODY PO_REQ_DOCUMENT_CHECKS_GRP AS
2 /* $Header: POXGRCKB.pls 115.2 2003/09/24 03:58:06 bmunagal noship $*/
3 
4 G_PKG_NAME CONSTANT varchar2(30) := 'PO_REQ_DOCUMENT_CHECKS_GRP';
5 
6 c_log_head    CONSTANT VARCHAR2(50) := 'po.plsql.'|| G_PKG_NAME || '.';
7 
8 -- Read the profile option that enables/disables the debug log
9 g_fnd_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
10 
11 
12 -- The following new procedures for status check added in DropShip FPJ project
13 
14 -------------------------------------------------------------------------------
15 --Start of Comments
16 --Name: validate_status_check_inputs
17 --Pre-reqs:
18 --  None.
19 --Modifies:
20 --  None.
21 --Locks:
22 --  None.
23 --Function:
24 --  The following Validations done, called by req_status_check Group procedure.
25 --    1. The ID input tables p_req_header_id, p_req_line_id should be of same size.
26 --    2. Each entity specifies a required field Requisition Header ID
27 --       Note that the Line is optional but a Header is required.
28 --Notes:
29 --  Detailed comments maintained in PVT Package Body PO_REQ_DOCUMENT_CHECKS_PVT.req_status_check
30 --End of Comments
31 -------------------------------------------------------------------------------
32 PROCEDURE validate_status_check_inputs (
33     p_api_version         IN NUMBER,
34     p_req_header_id       IN PO_TBL_NUMBER,
35     p_req_line_id         IN OUT NOCOPY PO_TBL_NUMBER,
36     p_req_distribution_id IN OUT NOCOPY PO_TBL_NUMBER,
37     p_mode                IN VARCHAR2,
38     p_lock_flag           IN VARCHAR2 := 'N',
39     x_req_status_rec      OUT NOCOPY PO_STATUS_REC_TYPE,
40     x_return_status       OUT NOCOPY VARCHAR2,
41     x_msg_count           OUT NOCOPY NUMBER,
42     x_msg_data            OUT NOCOPY VARCHAR2
43 ) IS
44 
45 l_api_name    CONSTANT VARCHAR(30) := 'VALIDATE_STATUS_CHECK_INPUTS';
46 l_progress    VARCHAR2(3) := '000';
47 l_count       NUMBER := p_req_header_id.COUNT;
48 l_dummy_table_number    po_tbl_number := po_tbl_number();
49 
50 BEGIN
51 
52 --Initialize any null Tables to a dummy table of null values with length of p_header_id.COUNT
53 l_progress := '007';
54 l_dummy_table_number.extend(l_count);
55 IF p_req_line_id IS NULL THEN
56     p_req_line_id := l_dummy_table_number;
57 END IF;
58 IF p_req_distribution_id IS NULL THEN
59     p_req_distribution_id := l_dummy_table_number;
60 END IF;
61 
62 --Validate that Input ID Tables are all of the same size
63 l_progress := '010';
64 IF l_count <> p_req_line_id.count THEN
65 
66     FND_MESSAGE.set_name('PO', 'PO_STATCHK_GENERAL_ERROR');
67     FND_MESSAGE.set_token('ERROR_TEXT', 'The input table ID parameters are not of same size !');
68     FND_MSG_PUB.Add;
69     RAISE FND_API.G_EXC_ERROR;
70 END IF;
71 
72 --Validate that a Requisition Header is specified for all indexes
73 l_progress := '020';
74 FOR i IN 1..l_count LOOP
75 
76     --For each index, Input IDs should refer to a valid entity
77     IF p_req_header_id(i) is null THEN
78         FND_MESSAGE.set_name('PO', 'PO_STATCHK_GENERAL_ERROR');
79         FND_MESSAGE.set_token('ERROR_TEXT', 'There is no Header specified at index ' || i);
80         FND_MSG_PUB.Add;
81         RAISE FND_API.G_EXC_ERROR;
82     END IF;
83 
84 END LOOP;
85 
86 l_progress := '030';
87 
88 x_return_status := FND_API.G_RET_STS_SUCCESS;
89 
90 EXCEPTION
91     WHEN FND_API.G_EXC_ERROR THEN
92         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
93         x_return_status := FND_API.G_RET_STS_ERROR;
94     WHEN OTHERS THEN
95         FND_MSG_PUB.add_exc_msg(G_PKG_NAME, l_api_name || '.' || l_progress);
96         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
97         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
98 
99 END validate_status_check_inputs;
100 
101 -------------------------------------------------------------------------------
102 --Start of Comments
103 --Name: req_status_check
104 --Pre-reqs:
105 --  None.
106 --Modifies:
107 --  None.
108 --Locks:
109 --  None.
110 --Function:
111 --  Group procedure to find the status of a Requisition
112 --  This validates inputs and calls the private procedure req_status_check
113 --Notes:
114 --  For details on validations, refer to Group Procedure validate_status_check_inputs
115 --  Detailed comments maintained in PVT Package Body PO_REQ_DOCUMENT_CHECKS_PVT.req_status_check
116 --End of Comments
117 -------------------------------------------------------------------------------
118 PROCEDURE req_status_check (
119     p_api_version         IN NUMBER,
120     p_req_header_id       IN PO_TBL_NUMBER,
121     p_req_line_id         IN PO_TBL_NUMBER,
122     p_req_distribution_id IN PO_TBL_NUMBER,
123     p_mode                IN VARCHAR2,
124     p_lock_flag           IN VARCHAR2 := 'N',
125     x_req_status_rec      OUT NOCOPY PO_STATUS_REC_TYPE,
126     x_return_status       OUT NOCOPY VARCHAR2,
127     x_msg_count           OUT NOCOPY NUMBER,
128     x_msg_data            OUT NOCOPY VARCHAR2
129 ) IS
130 
131 l_api_name    CONSTANT VARCHAR(30) := 'req_status_check';
132 l_api_version CONSTANT NUMBER := 1.0;
133 l_progress    VARCHAR2(3) := '000';
134 l_req_line_id          PO_TBL_NUMBER := p_req_line_id;
135 l_req_distribution_id  PO_TBL_NUMBER := p_req_distribution_id;
136 
137 BEGIN
138 
139 --Standard call to check for call compatibility
140 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
141     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
142 END IF;
143 
144 --Validate Input Parameters
145 l_progress := '010';
146 validate_status_check_inputs (
147     p_api_version => p_api_version,
148     p_req_header_id => p_req_header_id,
149     p_req_line_id => l_req_line_id,
150     p_req_distribution_id => l_req_distribution_id,
151     p_mode => p_mode,
152     p_lock_flag => p_lock_flag,
153     x_req_status_rec => x_req_status_rec,
154     x_return_status  => x_return_status,
155     x_msg_count  => x_msg_count,
156     x_msg_data  => x_msg_data);
157 
158 --Call the private procedure to actually do req status check
159 l_progress := '020';
160 PO_REQ_DOCUMENT_CHECKS_PVT.req_status_check(
161     p_api_version => p_api_version,
162     p_req_header_id => p_req_header_id,
163     p_req_line_id => l_req_line_id,
164     p_req_distribution_id => l_req_distribution_id,
165     p_mode => p_mode,
166     p_lock_flag => p_lock_flag,
167     x_req_status_rec => x_req_status_rec,
168     x_return_status  => x_return_status,
169     x_msg_count  => x_msg_count,
170     x_msg_data  => x_msg_data);
171 
172 l_progress := '030';
173 
174 EXCEPTION
175     WHEN FND_API.G_EXC_ERROR THEN
176         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
177         x_return_status := FND_API.G_RET_STS_ERROR;
178     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
179         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
180         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
181     WHEN OTHERS THEN
182         FND_MSG_PUB.add_exc_msg(G_PKG_NAME, l_api_name || '.' || l_progress);
183         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
184         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
185 
186 END req_status_check;
187 
188 -------------------------------------------------------------------------------
189 --Start of Comments
190 --Name: req_status_check
191 --Pre-reqs:
192 --  None.
193 --Modifies:
194 --  None.
195 --Locks:
196 --  None.
197 --Function:
198 --  Finds the status of a Purchase Order or a Release
199 --  This is a convenience procedure for a single entity and takes in scalar input IDs
200 --  This in turn calls the group procedure req_status_check that takes Table input IDs
201 --Notes:
202 --  Detailed comments maintained in PVT Package Body PO_REQ_DOCUMENT_CHECKS_PVT.req_status_check
203 --End of Comments
204 -------------------------------------------------------------------------------
205 PROCEDURE req_status_check (
206     p_api_version         IN NUMBER,
207     p_req_header_id       IN NUMBER,
208     p_req_line_id         IN NUMBER := NULL,
209     p_req_distribution_id IN NUMBER := NULL,
210     p_mode                IN VARCHAR2,
211     p_lock_flag           IN VARCHAR2 := 'N',
212     x_req_status_rec      OUT NOCOPY PO_STATUS_REC_TYPE,
213     x_return_status       OUT NOCOPY VARCHAR2,
214     x_msg_count           OUT NOCOPY NUMBER,
215     x_msg_data            OUT NOCOPY VARCHAR2
216 ) IS
217 
218 l_api_name    CONSTANT VARCHAR(30) := 'req_status_check';
219 l_api_version CONSTANT NUMBER := 1.0;
220 l_progress    VARCHAR2(3) := '000';
221 
222 BEGIN
223 
224 --Standard call to check for call compatibility
225 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
226     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
227 END IF;
228 
229 --Call the overloaded procedure that takes in Table IDs after
230 --  creating size=1 Tables of IDs 1 with value of the scalar input IDs
231 l_progress := '010';
232 PO_REQ_DOCUMENT_CHECKS_GRP.req_status_check(
233     p_api_version => p_api_version,
234     p_req_header_id => PO_TBL_NUMBER(p_req_header_id),
235     p_req_line_id => PO_TBL_NUMBER(p_req_line_id),
236     p_req_distribution_id => PO_TBL_NUMBER(p_req_distribution_id),
237     p_mode => p_mode,
238     p_lock_flag => p_lock_flag,
239     x_req_status_rec => x_req_status_rec,
240     x_return_status  => x_return_status,
241     x_msg_count  => x_msg_count,
242     x_msg_data  => x_msg_data);
243 
244 l_progress := '020';
245 
246 EXCEPTION
247     WHEN FND_API.G_EXC_ERROR THEN
248         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
249         x_return_status := FND_API.G_RET_STS_ERROR;
250     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
251         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
252         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
253     WHEN OTHERS THEN
254         FND_MSG_PUB.add_exc_msg(G_PKG_NAME, l_api_name || '.' || l_progress);
255         FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
256         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
257 
258 END req_status_check;
259 
260 
261 END PO_REQ_DOCUMENT_CHECKS_GRP;