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