[Home] [Help]
PACKAGE BODY: APPS.AHL_PC_ASSOCIATION_PUB
Source
1 PACKAGE BODY AHL_PC_ASSOCIATION_PUB AS
2 /* $Header: AHLPPCAB.pls 120.1 2006/02/20 02:49:04 sathapli noship $ */
3
4 G_DML_CREATE CONSTANT VARCHAR2(1) := 'C';
5 G_DML_UPDATE CONSTANT VARCHAR2(1) := 'U';
6 G_DML_DELETE CONSTANT VARCHAR2(1) := 'D';
7 G_DML_COPY CONSTANT VARCHAR2(1) := 'X';
8 G_DML_ASSIGN CONSTANT VARCHAR2(1) := 'A';
9 G_DML_LINK CONSTANT VARCHAR2(1) := 'L';
10
11 G_UNIT CONSTANT VARCHAR2(1) := 'U';
12 G_PART CONSTANT VARCHAR2(1) := 'I';
13
14 --G_DEBUG VARCHAR2(1):=FND_PROFILE.VALUE('AHL_API_FILE_DEBUG_ON');
15 G_DEBUG VARCHAR2(1) := AHL_DEBUG_PUB.is_log_enabled;
16
17 -----------------------------
18 -- CONVERT UNIT NAME TO ID --
19 -----------------------------
20 PROCEDURE CONVERT_UNIT_NAME_TO_ID ( p_x_assos_rec IN OUT NOCOPY AHL_PC_ASSOCIATION_PUB.PC_ASSOS_REC )
21 IS
22
23 l_unit_id NUMBER;
24
25 CURSOR get_id_for_name (p_pc_unit_name IN VARCHAR2)
26 IS
27 -- SATHAPLI :: Change for fix of Bug# 4913757 --
28 /*
29 select unit_config_header_id
30 FROM ahl_unit_header_details_v
31 where name = p_pc_unit_name;
32 */
33 SELECT unit_config_header_id
34 FROM ahl_unit_config_headers
35 WHERE name = p_pc_unit_name;
36
37 BEGIN
38 IF (p_x_assos_rec.unit_item_id IS NULL)
39 THEN
40 OPEN get_id_for_name (p_x_assos_rec.unit_item_name);
41 FETCH get_id_for_name INTO l_unit_id;
42 IF (get_id_for_name%NOTFOUND)
43 THEN
44 FND_MESSAGE.Set_Name('AHL','AHL_PC_UNIT_NOT_FOUND');
45 FND_MSG_PUB.ADD;
46 RAISE FND_API.G_EXC_ERROR;
47 ELSE
48 p_x_assos_rec.unit_item_id := l_unit_id;
49 END IF;
50 CLOSE get_id_for_name;
51 END IF;
52
53 END CONVERT_UNIT_NAME_TO_ID;
54
55 -----------------------------
56 -- CONVERT UNIT NAME TO ID --
57 -----------------------------
58 PROCEDURE CONVERT_PART_NAME_TO_ID ( p_x_assos_rec IN OUT NOCOPY AHL_PC_ASSOCIATION_PUB.PC_ASSOS_REC )
59 IS
60
61 l_part_id NUMBER;
62
63 CURSOR get_id_for_name (p_pc_part_name IN VARCHAR2)
64 IS
65 select inventory_item_id
66 FROM mtl_system_items_kfv
67 where concatenated_segments = p_pc_part_name;
68
69 BEGIN
70 IF (p_x_assos_rec.unit_item_id IS NULL)
71 THEN
72 OPEN get_id_for_name (p_x_assos_rec.unit_item_name);
73 FETCH get_id_for_name INTO l_part_id;
74 IF (get_id_for_name%NOTFOUND)
75 THEN
76 FND_MESSAGE.Set_Name('AHL','AHL_PC_ITEM_NOT_FOUND');
77 FND_MSG_PUB.ADD;
78 RAISE FND_API.G_EXC_ERROR;
79 ELSE
80 p_x_assos_rec.unit_item_id := l_part_id;
81 END IF;
82 CLOSE get_id_for_name;
83 END IF;
84
85 END CONVERT_PART_NAME_TO_ID;
86
87 ------------------------
88 -- Declare Procedures --
89 ------------------------
90 PROCEDURE PROCESS_ASSOCIATIONS (
91 p_api_version IN NUMBER,
92 p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE,
93 p_commit IN VARCHAR2 := FND_API.G_FALSE,
94 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
95 p_module_type IN VARCHAR2 := NULL,
96 p_x_assos_tbl IN OUT NOCOPY AHL_PC_ASSOCIATION_PUB.PC_ASSOS_TBL,
97 x_return_status OUT NOCOPY VARCHAR2,
98 x_msg_count OUT NOCOPY NUMBER,
99 x_msg_data OUT NOCOPY VARCHAR2
100 ) IS
101
102 l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_ASSOCIATIONS';
103 l_api_version CONSTANT NUMBER := 1.0;
104 l_return_status VARCHAR2(1);
105
106 BEGIN
107 -- Standard start of API savepoint
108 SAVEPOINT PROCESS_ASSOCIATION_PUB;
109
110 -- Standard call to check for call compatibility
111 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
112 THEN
113 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
114 END IF;
115
116 -- Initialize message list if p_init_msg_list is set to TRUE
117 IF FND_API.To_Boolean(p_init_msg_list)
118 THEN
119 FND_MSG_PUB.Initialize;
120 END IF;
121
122 -- Initialize API return status to success
123 x_return_status := FND_API.G_RET_STS_SUCCESS;
124
125 IF G_DEBUG='Y' THEN
126 AHL_DEBUG_PUB.ENABLE_DEBUG;
127 END IF;
128
129 IF (p_x_assos_tbl.COUNT > 0)
130 THEN
131 FOR i IN p_x_assos_tbl.FIRST..p_x_assos_tbl.LAST
132 LOOP
133 -- Call PVT APIs
134 IF (p_x_assos_tbl(i).operation_flag = G_DML_CREATE OR p_x_assos_tbl(i).operation_flag = G_DML_ASSIGN)
135 THEN
136 IF (p_x_assos_tbl(i).pc_association_id IS NULL)
137 THEN
138 p_x_assos_tbl(i).object_version_number := 1;
139 END IF;
140
141 p_x_assos_tbl(i).unit_item_name := TRIM(p_x_assos_tbl(i).unit_item_name);
142
143 IF (p_x_assos_tbl(i).association_type_flag = G_UNIT)
144 THEN
145 IF p_module_type IS NULL OR p_module_type = 'JSP'
146 THEN
147 p_x_assos_tbl(i).unit_item_id := NULL;
148 CONVERT_UNIT_NAME_TO_ID(p_x_assos_tbl(i));
149 END IF;
150
151 IF G_DEBUG='Y' THEN
152 AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling ATTACH_UNIT for p_x_assos_tbl('||i||').unit_id'||p_x_assos_tbl(i).unit_item_id);
153 END IF;
154
155 AHL_PC_ASSOCIATION_PVT.ATTACH_UNIT
156 (
157 p_api_version => l_api_version,
158 p_init_msg_list => FND_API.G_FALSE,
159 p_commit => FND_API.G_FALSE,
160 p_validation_level => p_validation_level,
161 p_x_assos_rec => p_x_assos_tbl(i),
162 x_return_status => x_return_status,
163 x_msg_count => x_msg_count,
164 x_msg_data => x_msg_data
165 );
166 ELSIF (p_x_assos_tbl(i).association_type_flag = G_PART)
167 THEN
168 IF p_module_type IS NULL OR p_module_type = 'JSP'
169 THEN
170 p_x_assos_tbl(i).unit_item_id := NULL;
171 CONVERT_PART_NAME_TO_ID(p_x_assos_tbl(i));
172 END IF;
173
174 IF G_DEBUG='Y' THEN
175 AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling ATTACH_PART for p_x_assos_tbl('||i||').item_id'||p_x_assos_tbl(i).unit_item_id);
176 END IF;
177
178 AHL_PC_ASSOCIATION_PVT.ATTACH_ITEM
179 (
180 p_api_version => l_api_version,
181 p_init_msg_list => FND_API.G_FALSE,
182 p_commit => FND_API.G_FALSE,
183 p_validation_level => p_validation_level,
184 p_x_assos_rec => p_x_assos_tbl(i),
185 x_return_status => x_return_status,
186 x_msg_count => x_msg_count,
187 x_msg_data => x_msg_data
188 );
189 END IF;
190 ELSIF (p_x_assos_tbl(i).operation_flag = G_DML_DELETE)
191 THEN
192 IF (p_x_assos_tbl(i).association_type_flag = G_UNIT)
193 THEN
194 IF p_module_type IS NULL OR p_module_type = 'JSP'
195 THEN
196 p_x_assos_tbl(i).unit_item_id := NULL;
197 CONVERT_UNIT_NAME_TO_ID(p_x_assos_tbl(i));
198 END IF;
199
200 IF G_DEBUG='Y' THEN
201 AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling DETACH_UNIT for p_x_assos_tbl('||i||').unit_id'||p_x_assos_tbl(i).unit_item_id);
202 END IF;
203
204 AHL_PC_ASSOCIATION_PVT.DETACH_UNIT
205 (
206 p_api_version => l_api_version,
207 p_init_msg_list => FND_API.G_FALSE,
208 p_commit => FND_API.G_FALSE,
209 p_validation_level => p_validation_level,
210 p_x_assos_rec => p_x_assos_tbl(i),
211 x_return_status => x_return_status,
212 x_msg_count => x_msg_count,
213 x_msg_data => x_msg_data
214 );
215 ELSIF (p_x_assos_tbl(i).association_type_flag = G_PART)
216 THEN
217 IF p_module_type IS NULL OR p_module_type = 'JSP'
218 THEN
219 p_x_assos_tbl(i).unit_item_id := NULL;
220 CONVERT_PART_NAME_TO_ID(p_x_assos_tbl(i));
221 END IF;
222
223 IF G_DEBUG='Y' THEN
224 AHL_DEBUG_PUB.debug('PCA -- PUB -- Calling DETACH_PART for p_x_assos_tbl('||i||').item_id'||p_x_assos_tbl(i).unit_item_id);
225 END IF;
226
227 AHL_PC_ASSOCIATION_PVT.DETACH_ITEM
228 (
229 p_api_version => l_api_version,
230 p_init_msg_list => FND_API.G_FALSE,
231 p_commit => FND_API.G_FALSE,
232 p_validation_level => p_validation_level,
233 p_x_assos_rec => p_x_assos_tbl(i),
234 x_return_status => x_return_status,
235 x_msg_count => x_msg_count,
236 x_msg_data => x_msg_data
237 );
238 END IF;
239 END IF;
240 END LOOP;
241 END IF;
242
243 -- Check Error Message stack.
244 x_msg_count := FND_MSG_PUB.count_msg;
245 IF x_msg_count > 0 THEN
246 RAISE FND_API.G_EXC_ERROR;
247 END IF;
248
249 -- Standard check for p_commit
250 IF FND_API.To_Boolean (p_commit)
251 THEN
252 COMMIT WORK;
253 END IF;
254
255 -- Standard call to get message count and if count is 1, get message info
256 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
257 p_data => x_msg_data,
258 p_encoded => fnd_api.g_false );
259
260 EXCEPTION
261 WHEN FND_API.G_EXC_ERROR THEN
262 x_return_status := FND_API.G_RET_STS_ERROR;
263 Rollback to PROCESS_ASSOCIATION_PUB;
264 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
265 p_data => x_msg_data,
266 p_encoded => fnd_api.g_false );
267
268 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
269 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
270 Rollback to PROCESS_ASSOCIATION_PUB;
271 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
272 p_data => x_msg_data,
273 p_encoded => fnd_api.g_false );
274
275 WHEN OTHERS THEN
276 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
277 Rollback to PROCESS_ASSOCIATION_PUB;
278 IF FND_MSG_PUB.check_msg_level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
279 THEN
280 fnd_msg_pub.add_exc_msg( p_pkg_name => G_PKG_NAME,
281 p_procedure_name => 'PROCESS_ASSOCIATIONS',
282 p_error_text => SUBSTR(SQLERRM,1,240) );
283 END IF;
284 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
285 p_data => x_msg_data,
286 p_encoded => fnd_api.g_false );
287
288 END PROCESS_ASSOCIATIONS;
289
290 PROCEDURE PROCESS_DOCUMENT (
291 p_api_version IN NUMBER,
292 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
293 p_commit IN VARCHAR2 := FND_API.G_FALSE,
294 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
295 p_module_type IN VARCHAR2 := NULL,
296 p_x_assos_tbl IN OUT NOCOPY AHL_DI_ASSO_DOC_GEN_PUB.association_tbl,
297 x_return_status OUT NOCOPY VARCHAR2,
298 x_msg_count OUT NOCOPY NUMBER,
299 x_msg_data OUT NOCOPY VARCHAR2
300 )
301 IS
302
303 l_api_name CONSTANT VARCHAR2(30) := 'PROCESS_DOCUMENT';
304 l_api_version CONSTANT NUMBER := 1.0;
305 l_return_status VARCHAR2(1);
306
307 BEGIN
308 -- Standard start of API savepoint
309 SAVEPOINT PROCESS_DOCUMENT_PUB;
310
311 -- Standard call to check for call compatibility
312 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME)
313 THEN
314 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
315 END IF;
316
317 -- Initialize message list if p_init_msg_list is set to TRUE
318 IF FND_API.To_Boolean(p_init_msg_list)
319 THEN
320 FND_MSG_PUB.Initialize;
321 END IF;
322
323 -- Initialize API return status to success
324 x_return_status := FND_API.G_RET_STS_SUCCESS;
325
326 IF G_DEBUG='Y' THEN
327 AHL_DEBUG_PUB.ENABLE_DEBUG;
328 END IF;
329
330 AHL_PC_ASSOCIATION_PVT.PROCESS_DOCUMENT
331 (
332 p_api_version => l_api_version,
333 p_init_msg_list => FND_API.G_FALSE,
334 p_commit => FND_API.G_FALSE,
335 p_validation_level => p_validation_level,
336 p_module_type => p_module_type,
337 p_x_assos_tbl => p_x_assos_tbl,
338 x_return_status => x_return_status,
339 x_msg_count => x_msg_count,
340 x_msg_data => x_msg_data
341 );
342
343 -- Check Error Message stack.
344 x_msg_count := FND_MSG_PUB.count_msg;
345 IF x_msg_count > 0 THEN
346 RAISE FND_API.G_EXC_ERROR;
347 END IF;
348
349 -- Standard check for p_commit
350 IF FND_API.To_Boolean (p_commit)
351 THEN
352 COMMIT WORK;
353 END IF;
354
355 -- Standard call to get message count and if count is 1, get message info
356 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
357 p_data => x_msg_data,
358 p_encoded => fnd_api.g_false );
359
360 EXCEPTION
361 WHEN FND_API.G_EXC_ERROR THEN
362 x_return_status := FND_API.G_RET_STS_ERROR;
363 Rollback to PROCESS_DOCUMENT_PUB;
364 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
365 p_data => x_msg_data,
366 p_encoded => fnd_api.g_false );
367
368 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
369 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
370 Rollback to PROCESS_DOCUMENT_PUB;
371 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
372 p_data => x_msg_data,
373 p_encoded => fnd_api.g_false );
374
375 WHEN OTHERS THEN
376 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
377 Rollback to PROCESS_DOCUMENT_PUB;
378 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
379 THEN
380 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
381 p_procedure_name => 'PROCESS_DOCUMENT',
382 p_error_text => SUBSTR(SQLERRM, 1, 240));
383 END IF;
384 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
385 p_data => x_msg_data,
386 p_encoded => fnd_api.g_false );
387
388 END PROCESS_DOCUMENT;
389
390 END AHL_PC_ASSOCIATION_PUB;