1 PACKAGE BODY AHL_RA_SETUPS_PVT AS
2 /* $Header: AHLVRASB.pls 120.13 2006/02/16 01:59 sagarwal noship $*/
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AHL_RA_SETUPS_PVT';
5 G_DML_CREATE CONSTANT VARCHAR2(1) := 'C';
6 G_DML_UPDATE CONSTANT VARCHAR2(1) := 'U';
7 G_DML_DELETE CONSTANT VARCHAR2(1) := 'D';
8
9 -- Start of Comments --
10 --
11 -- Procedure name : CREATE_SETUP_DATA
12 -- Type : Private
13 -- Function : This API would create the setup data for Reliability Framework in AHL_RA_SETUPS table
14 -- Pre-reqs :
15 --
16 -- Standard IN Parameters :
17 -- p_api_version IN NUMBER Required
18 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
19 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
20 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
21 --
22 -- Standard OUT Parameters :
23 -- x_return_status OUT VARCHAR2 Required
24 -- x_msg_count OUT NUMBER Required
25 -- x_msg_data OUT VARCHAR2 Required
26 --
27 -- CREATE_SETUP_DATA Parameters :
28 -- p_x_setup_data_rec IN OUT RA_SETUP_DATA_REC_TYPE Required
29 --
30 -- Version :
31 -- Initial Version 1.0
32 --
33 -- End of Comments --
34 PROCEDURE CREATE_SETUP_DATA (
35 p_api_version IN NUMBER,
36 p_init_msg_list IN VARCHAR2,
37 p_commit IN VARCHAR2,
38 p_validation_level IN NUMBER,
39 p_module_type IN VARCHAR2,
40 x_return_status OUT NOCOPY VARCHAR2,
41 x_msg_count OUT NOCOPY NUMBER,
42 x_msg_data OUT NOCOPY VARCHAR2,
43 p_x_setup_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_SETUP_DATA_REC_TYPE) IS
44
45 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_SETUP_DATA';
46 l_api_version CONSTANT NUMBER := 1.0;
47 l_full_name CONSTANT VARCHAR2(60) := 'ahl.plsql.'||g_pkg_name || '.' || l_api_name;
48
49 l_setup_data_rec AHL_RA_SETUPS_PVT.RA_SETUP_DATA_REC_TYPE DEFAULT p_x_setup_data_rec;
50 l_dummy VARCHAR2(1);
51 l_code VARCHAR2(30); -- dummy variable used for token storage.
52
53 BEGIN
54
55 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
56 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
57 END IF;
58
59 -- Standard start of API savepoint
60 SAVEPOINT CREATE_SETUP_DATA_SP;
61
62 -- Standard call to check for call compatibility
63 IF NOT FND_API.Compatible_API_Call(l_api_version,p_api_version, l_api_name, G_PKG_NAME) THEN
64 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
65 END IF;
66
67 -- Initialize message list if p_init_msg_list is set to TRUE
68 IF FND_API.To_Boolean(p_init_msg_list) THEN
69 FND_MSG_PUB.Initialize;
70 END IF;
71
72 x_return_status := FND_API.G_RET_STS_SUCCESS;
73
74 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
75 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_SETUP_DATA -------BEGIN-----------');
76 END IF;
77
78 -- Validate input setup data in p_x_setup_data_rec
79 -- Note :: l_setup_data_rec has been defaulted to p_x_setup_data_rec in declaration
80 -- A. SETUP_CODE Cannot be NULL
81 -- B. SETUP_CODE should be either ITEM_STATUS or REMOVAL_CODE
82 -- B. If SETUP_CODE = ITEM_STATUS then STATUS_ID must be passed
83 -- C. If SETUP_CODE = REMOVAL_CODE then REMOVAL_CODE must be passed
84 -- D. OPERATIONS_FLAG should be C
85 IF ((l_setup_data_rec.SETUP_CODE IS NULL) OR
86 (l_setup_data_rec.SETUP_CODE NOT IN ('ITEM_STATUS','REMOVAL_CODE')) OR
87 (l_setup_data_rec.SETUP_CODE = 'ITEM_STATUS' AND l_setup_data_rec.STATUS_ID IS NULL) OR
88 (l_setup_data_rec.SETUP_CODE = 'REMOVAL_CODE' AND l_setup_data_rec.REMOVAL_CODE IS NULL) OR
89 ((l_setup_data_rec.OPERATION_FLAG IS NULL) OR (l_setup_data_rec.OPERATION_FLAG <> G_DML_CREATE))) THEN
90
91 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
92 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
93 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_setup_data_rec.SETUP_CODE -- '||l_setup_data_rec.SETUP_CODE);
94 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_setup_data_rec.STATUS_ID -- '||l_setup_data_rec.STATUS_ID);
95 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_setup_data_rec.REMOVAL_CODE -- '||l_setup_data_rec.REMOVAL_CODE);
96 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_setup_data_rec.OPERATION_FLAG -- '||l_setup_data_rec.OPERATION_FLAG);
97 END IF;
98
99 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
100 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_SETUP_DATA');
101 FND_MSG_PUB.ADD;
102 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
103
104 END IF;
105
106 -- Check for duplicate Setup Data in AHL_RA_SETUPS
107 BEGIN
108 SELECT 'X'
109 INTO l_dummy
110 FROM DUAL
111 WHERE EXISTS (SELECT 1
112 FROM AHL_RA_SETUPS
113 WHERE SETUP_CODE = l_setup_data_rec.SETUP_CODE
114 AND nvl(STATUS_ID,'-1') = nvl(DECODE(l_setup_data_rec.SETUP_CODE,'ITEM_STATUS',l_setup_data_rec.STATUS_ID,STATUS_ID),'-1')
115 AND nvl(REMOVAL_CODE,'-1') = nvl(DECODE(l_setup_data_rec.SETUP_CODE,'REMOVAL_CODE',l_setup_data_rec.REMOVAL_CODE,REMOVAL_CODE),'-1'));
116
117 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
118 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Duplicate Data exists -- ERROR ... ');
119 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Fetch Code for Message Token ... ');
120 END IF;
121
122 IF l_setup_data_rec.SETUP_CODE = 'ITEM_STATUS' THEN
123 BEGIN
124 SELECT STATUS_CODE
125 INTO l_code
126 FROM MTL_MATERIAL_STATUSES_VL
127 WHERE STATUS_ID = l_setup_data_rec.STATUS_ID;
128
129 FND_MESSAGE.Set_Name('AHL','AHL_RA_DUP_STATUS_CODE');
130 FND_MESSAGE.Set_Token('ITEM_STATUS',l_code);
131 FND_MSG_PUB.ADD;
132 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
133 EXCEPTION
134 WHEN NO_DATA_FOUND THEN
135 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
136 fnd_log.string(fnd_log.level_statement,l_full_name,'-- MTL STATUS Data Corruption -- ERROR ... ');
137 END IF;
138 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
139 END;
140
141 ELSIF l_setup_data_rec.SETUP_CODE = 'REMOVAL_CODE' THEN
142 BEGIN
143 SELECT MEANING
144 INTO l_code
145 FROM FND_LOOKUPS
146 WHERE LOOKUP_TYPE = 'AHL_REMOVAL_CODE'
147 AND LOOKUP_CODE = l_setup_data_rec.REMOVAL_CODE;
148
149 FND_MESSAGE.Set_Name('AHL','AHL_RA_DUP_REMOVAL_CODE');
150 FND_MESSAGE.Set_Token('REMOVAL_CODE',l_code);
151 FND_MSG_PUB.ADD;
152 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
153 EXCEPTION
154 WHEN NO_DATA_FOUND THEN
155 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
156 fnd_log.string(fnd_log.level_statement,l_full_name,'-- AHL LOOKUP Data Corruption -- ERROR ... ');
157 END IF;
158 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
159 END;
160 END IF;
161
162 EXCEPTION
163 WHEN NO_DATA_FOUND THEN
164 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
165 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Duplicate Data does not exists -- CONTINUE ... ');
166 END IF;
167 NULL;
168 END;
169
170 IF l_setup_data_rec.SETUP_CODE = 'ITEM_STATUS' THEN
171 -- Initialise removal_code to NULL .. to avoid any data corruption
172 l_setup_data_rec.REMOVAL_CODE := NULL;
173 -- Validate l_setup_data_rec.STATUS_ID passed to be a valid value
174 BEGIN
175 SELECT 'X'
176 INTO l_dummy
177 FROM DUAL
178 WHERE EXISTS (SELECT 1
179 FROM MTL_MATERIAL_STATUSES_VL
180 WHERE STATUS_ID = l_setup_data_rec.STATUS_ID);
181
182 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
183 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Valid Status Id Passed. -- CONTINUE ... ' || l_setup_data_rec.STATUS_ID);
184 END IF;
185
186 EXCEPTION
187 WHEN NO_DATA_FOUND THEN
188 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
189 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Status Id Passed -- ERROR ... ' || l_setup_data_rec.STATUS_ID);
190 END IF;
191 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
192 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_SETUP_DATA');
193 FND_MSG_PUB.ADD;
194 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
195 END;
196
197 ELSIF l_setup_data_rec.SETUP_CODE = 'REMOVAL_CODE' THEN
198
199 -- Initialise status_id to NULL .. to avoid any data corruption
200 l_setup_data_rec.STATUS_ID := NULL;
201
202 -- Validate l_setup_data_rec.REMOVAL_CODE passed to be a valid value
203 BEGIN
204 SELECT 'X'
205 INTO l_dummy
206 FROM DUAL
207 WHERE EXISTS (SELECT 1
208 FROM FND_LOOKUPS
209 WHERE LOOKUP_TYPE = 'AHL_REMOVAL_CODE'
210 AND LOOKUP_CODE = l_setup_data_rec.REMOVAL_CODE);
211
212 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
213 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Valid Removal Code Passed. -- CONTINUE ... ' || l_setup_data_rec.REMOVAL_CODE);
214 END IF;
215
216 EXCEPTION
217 WHEN NO_DATA_FOUND THEN
218 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
219 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Removal Code Passed -- ERROR ... ' || l_setup_data_rec.REMOVAL_CODE);
220 END IF;
221 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
222 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_SETUP_DATA');
223 FND_MSG_PUB.ADD;
224 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
225 END;
226
227 END IF;
228
229 -- Initialize RA_SETUP_ID to sequence next val for insert
230 SELECT AHL_RA_SETUPS_S.NEXTVAL INTO l_setup_data_rec.RA_SETUP_ID FROM DUAL;
231
232 -- Initialize object version number to 1
233 l_setup_data_rec.OBJECT_VERSION_NUMBER := 1;
234
235 -- Intialize who column info
236 l_setup_data_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
237 l_setup_data_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
238 l_setup_data_rec.CREATED_BY := fnd_global.user_id;
239 l_setup_data_rec.CREATION_DATE := sysdate;
240 l_setup_data_rec.LAST_UPDATE_DATE := sysdate;
241
242 -- Initialize security group id
243 l_setup_data_rec.SECURITY_GROUP_ID := null;
244
245 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
246 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Derived ra_setup_id -- ' || l_setup_data_rec.RA_SETUP_ID);
247 END IF;
248
249 -- INSERT Setup data in AHL_RA_SETUPS
250 INSERT INTO AHL_RA_SETUPS(RA_SETUP_ID,SETUP_CODE,STATUS_ID,REMOVAL_CODE,OBJECT_VERSION_NUMBER,SECURITY_GROUP_ID,
251 CREATION_DATE,CREATED_BY,LAST_UPDATE_DATE,LAST_UPDATED_BY,LAST_UPDATE_LOGIN,ATTRIBUTE_CATEGORY,
252 ATTRIBUTE1,ATTRIBUTE2,ATTRIBUTE3,ATTRIBUTE4,ATTRIBUTE5,ATTRIBUTE6,ATTRIBUTE7,
253 ATTRIBUTE8,ATTRIBUTE9,ATTRIBUTE10,ATTRIBUTE11,ATTRIBUTE12,ATTRIBUTE13,ATTRIBUTE14,ATTRIBUTE15)
254 VALUES(
255 l_setup_data_rec.RA_SETUP_ID -- RA_SETUP_ID
256 ,l_setup_data_rec.SETUP_CODE -- SETUP_CODE
257 ,l_setup_data_rec.STATUS_ID -- STATUS_ID
258 ,l_setup_data_rec.REMOVAL_CODE -- REMOVAL_CODE
259 ,l_setup_data_rec.OBJECT_VERSION_NUMBER-- OBJECT_VERSION_NUMBER
260 ,l_setup_data_rec.SECURITY_GROUP_ID -- SECURITY_GROUP_ID
261 ,l_setup_data_rec.CREATION_DATE -- CREATION_DATE
262 ,l_setup_data_rec.CREATED_BY -- CREATED_BY
263 ,l_setup_data_rec.LAST_UPDATE_DATE -- LAST_UPDATE_DATE
264 ,l_setup_data_rec.LAST_UPDATED_BY -- LAST_UPDATED_BY
265 ,l_setup_data_rec.LAST_UPDATE_LOGIN -- LAST_UPDATE_LOGIN
266 ,l_setup_data_rec.ATTRIBUTE_CATEGORY -- ATTRIBUTE_CATEGORY
267 ,l_setup_data_rec.ATTRIBUTE1 -- ATTRIBUTE1
268 ,l_setup_data_rec.ATTRIBUTE2 -- ATTRIBUTE2
269 ,l_setup_data_rec.ATTRIBUTE3 -- ATTRIBUTE3
270 ,l_setup_data_rec.ATTRIBUTE4 -- ATTRIBUTE4
271 ,l_setup_data_rec.ATTRIBUTE5 -- ATTRIBUTE5
272 ,l_setup_data_rec.ATTRIBUTE6 -- ATTRIBUTE6
273 ,l_setup_data_rec.ATTRIBUTE7 -- ATTRIBUTE7
274 ,l_setup_data_rec.ATTRIBUTE8 -- ATTRIBUTE8
275 ,l_setup_data_rec.ATTRIBUTE9 -- ATTRIBUTE9
276 ,l_setup_data_rec.ATTRIBUTE10 -- ATTRIBUTE10
277 ,l_setup_data_rec.ATTRIBUTE11 -- ATTRIBUTE11
278 ,l_setup_data_rec.ATTRIBUTE12 -- ATTRIBUTE12
279 ,l_setup_data_rec.ATTRIBUTE13 -- ATTRIBUTE13
280 ,l_setup_data_rec.ATTRIBUTE14 -- ATTRIBUTE14
281 ,l_setup_data_rec.ATTRIBUTE15 -- ATTRIBUTE15
282 );
283
284 -- Set the Out Param
285 p_x_setup_data_rec := l_setup_data_rec;
286
287 -- Standard check for p_commit
288 IF FND_API.To_Boolean (p_commit) THEN
289 COMMIT;
290 END IF;
291
292 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
293 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_SETUP_DATA -------END-----------');
294 END IF;
295
296 -- Standard call to get message count and if count is 1, get message
297 FND_MSG_PUB.Count_And_Get
298 ( p_count => x_msg_count,
299 p_data => x_msg_data,
300 p_encoded => fnd_api.g_false);
301
302 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
303 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
304 END IF;
305
306 EXCEPTION
307 WHEN FND_API.G_EXC_ERROR THEN
308 x_return_status := FND_API.G_RET_STS_ERROR;
309 ROLLBACK TO CREATE_SETUP_DATA_SP;
310 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
311 p_data => x_msg_data,
312 p_encoded => fnd_api.g_false);
313
314 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
315 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
316 ROLLBACK TO CREATE_SETUP_DATA_SP;
317 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
318 p_data => x_msg_data,
319 p_encoded => fnd_api.g_false);
320
321 WHEN OTHERS THEN
322 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
323 ROLLBACK TO CREATE_SETUP_DATA_SP;
324 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
325 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
326 p_procedure_name => 'CREATE_SETUP_DATA',
327 p_error_text => SUBSTR(SQLERRM,1,240));
328 END IF;
329 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
330 p_data => x_msg_data,
331 p_encoded => fnd_api.g_false);
332
333 END CREATE_SETUP_DATA;
334
335 -- Start of Comments --
336 --
337 -- Procedure name : DELETE_SETUP_DATA
338 -- Type : Private
339 -- Function : This API would dalete the setup data for Reliability Framework in AHL_RA_SETUPS table
340 -- Pre-reqs :
341 --
342 -- Standard IN Parameters :
343 -- p_api_version IN NUMBER Required
344 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
345 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
346 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
347 --
348 -- Standard OUT Parameters :
349 -- x_return_status OUT VARCHAR2 Required
350 -- x_msg_count OUT NUMBER Required
351 -- x_msg_data OUT VARCHAR2 Required
352 --
353 -- DELETE_SETUP_DATA Parameters :
354 -- p_setup_data_rec IN RA_SETUP_DATA_REC_TYPE Required
355 --
356 -- Version :
357 -- Initial Version 1.0
358 --
359 -- End of Comments --
360 PROCEDURE DELETE_SETUP_DATA (
361 p_api_version IN NUMBER,
362 p_init_msg_list IN VARCHAR2,
363 p_commit IN VARCHAR2,
364 p_validation_level IN NUMBER,
365 p_module_type IN VARCHAR2,
366 x_return_status OUT NOCOPY VARCHAR2,
367 x_msg_count OUT NOCOPY NUMBER,
368 x_msg_data OUT NOCOPY VARCHAR2,
369 p_setup_data_rec IN AHL_RA_SETUPS_PVT.RA_SETUP_DATA_REC_TYPE) IS
370
371 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_SETUP_DATA';
372 l_api_version CONSTANT NUMBER := 1.0;
373 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
374
375 l_dummy VARCHAR2(1);
376 l_obj_version_num AHL_RA_SETUPS.OBJECT_VERSION_NUMBER%TYPE;
377
378 BEGIN
379
380 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
381 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
382 END IF;
383
384 -- Standard start of API savepoint
385 SAVEPOINT DELETE_SETUP_DATA_SP;
386
387 -- Standard call to check for call compatibility
388 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
389 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
390 END IF;
391
392 -- Initialize message list if p_init_msg_list is set to TRUE
393 IF FND_API.To_Boolean(p_init_msg_list) THEN
394 FND_MSG_PUB.Initialize;
395 END IF;
396
397 x_return_status := FND_API.G_RET_STS_SUCCESS;
398
399 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
400 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_SETUP_DATA -------BEGIN-----------');
401 END IF;
402
403
404 -- Validate input setup data in p_setup_data_rec
405 -- A. p_setup_data_rec.RA_SETUP_ID Cannot be NULL
406 -- B. OPERATIONS_FLAG should be D
407 -- C. Object Version Number should not be NULL
408 IF ((p_setup_data_rec.RA_SETUP_ID IS NULL) OR
409 ((p_setup_data_rec.OPERATION_FLAG IS NULL) OR (p_setup_data_rec.OPERATION_FLAG <> G_DML_DELETE)) OR
410 (p_setup_data_rec.OBJECT_VERSION_NUMBER IS NULL))THEN
411 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
412 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- RA SETUP ID :' || p_setup_data_rec.RA_SETUP_ID);
413 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OP FLAG :' || p_setup_data_rec.OPERATION_FLAG);
414 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OVN :' || p_setup_data_rec.OBJECT_VERSION_NUMBER);
415 END IF;
416 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
417 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.D_SETUP_DATA');
418 FND_MSG_PUB.ADD;
419 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
420 END IF;
421
422 BEGIN
423 SELECT OBJECT_VERSION_NUMBER
424 INTO l_obj_version_num
425 FROM AHL_RA_SETUPS
426 WHERE RA_SETUP_ID = p_setup_data_rec.RA_SETUP_ID
427 FOR UPDATE OF object_version_number NOWAIT;
428
429 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
430 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB : ' || l_obj_version_num);
431 END IF;
432
433 EXCEPTION
434 WHEN NO_DATA_FOUND THEN
435 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
436 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || p_setup_data_rec.RA_SETUP_ID);
437 END IF;
438 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
439 FND_MSG_PUB.ADD;
440 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
441 END;
442
443 -- Validate input setup data in p_setup_data_rec
444 -- A. RECORD MUST NOT HAVE CHANGED. i.e. object_version_number should not change.
445 -- Note that currently(30/05/2005) UPDATE feature is NOT AVAILABLE to the user from the Self Service pages for RA setup Data.
446 -- However this might be taken up later.
447 IF p_setup_data_rec.OBJECT_VERSION_NUMBER <> l_obj_version_num THEN
448 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
449 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || p_setup_data_rec.OBJECT_VERSION_NUMBER);
450 END IF;
451 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
452 FND_MSG_PUB.ADD;
453 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
454 END IF;
455
456 -- Delete Record from AHL_RA_SETUPS
457 DELETE AHL_RA_SETUPS
458 WHERE RA_SETUP_ID = p_setup_data_rec.RA_SETUP_ID;
459
460 -- Standard check for p_commit
461 IF FND_API.To_Boolean (p_commit) THEN
462 COMMIT;
463 END IF;
464
465 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
466 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_SETUP_DATA -------END-----------');
467 END IF;
468
469 -- Standard call to get message count and if count is 1, get message
470 FND_MSG_PUB.Count_And_Get
471 ( p_count => x_msg_count,
472 p_data => x_msg_data,
473 p_encoded => fnd_api.g_false);
474
475 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
476 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
477 END IF;
478
479 EXCEPTION
480 WHEN FND_API.G_EXC_ERROR THEN
481 x_return_status := FND_API.G_RET_STS_ERROR;
482 ROLLBACK TO DELETE_SETUP_DATA_SP;
483 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
484 p_data => x_msg_data,
485 p_encoded => fnd_api.g_false);
486
487 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
488 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
489 ROLLBACK TO DELETE_SETUP_DATA_SP;
490 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
491 p_data => x_msg_data,
492 p_encoded => fnd_api.g_false);
493
494 WHEN OTHERS THEN
495 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
496 ROLLBACK TO DELETE_SETUP_DATA_SP;
497 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
498 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
499 p_procedure_name => 'DELETE_SETUP_DATA',
500 p_error_text => SUBSTR(SQLERRM,1,240));
501 END IF;
502 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
503 p_data => x_msg_data,
504 p_encoded => fnd_api.g_false);
505
506 END DELETE_SETUP_DATA;
507
508 -- Start of Comments --
509 --
510 -- Procedure name : CREATE_RELIABILITY_DATA
511 -- Type : Private
512 -- Function : This API would create the setup data for Reliability Framework in AHL_RA_DEFINITION_HDR
513 -- Pre-reqs :
514 --
515 -- Standard IN Parameters :
516 -- p_api_version IN NUMBER Required
517 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
518 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
519 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
520 --
521 -- Standard OUT Parameters :
522 -- x_return_status OUT VARCHAR2 Required
523 -- x_msg_count OUT NUMBER Required
524 -- x_msg_data OUT VARCHAR2 Required
525 --
526 -- CREATE_RELIABILITY_DATA Parameters :
527 -- p_x_reliability_data_rec IN OUT RA_DEFINITION_HDR_REC_TYPE Required
528 --
529 -- Version :
530 -- Initial Version 1.0
531 --
532 -- End of Comments --
533 PROCEDURE CREATE_RELIABILITY_DATA (
534 p_api_version IN NUMBER,
535 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
536 p_commit IN VARCHAR2 := FND_API.G_FALSE,
537 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
538 p_module_type IN VARCHAR2,
539 x_return_status OUT NOCOPY VARCHAR2,
540 x_msg_count OUT NOCOPY NUMBER,
541 x_msg_data OUT NOCOPY VARCHAR2,
542 p_x_reliability_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE)
543 IS
544
545 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_RELIABILITY_DATA';
546 l_api_version CONSTANT NUMBER := 1.0;
547 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
548 l_ra_def_hdr_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE DEFAULT p_x_reliability_data_rec;
549 l_dummy VARCHAR2(1);
550
551 BEGIN
552
553 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
554 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
555 END IF;
556
557 -- Standard start of API savepoint
558 SAVEPOINT CREATE_RELIABILITY_DATA_SP;
559
560 -- Standard call to check for call compatibility
561 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
562 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
563 END IF;
564
565 -- Initialize message list if p_init_msg_list is set to TRUE
566 IF FND_API.To_Boolean(p_init_msg_list) THEN
567 FND_MSG_PUB.Initialize;
568 END IF;
569
570 x_return_status := FND_API.G_RET_STS_SUCCESS;
571
572 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
573 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_RELIABILITY_DATA -------BEGIN-----------');
574 END IF;
575
576 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
577 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Parameters Passed --');
578 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_hdr_rec.OPERATION_FLAG -- '||l_ra_def_hdr_rec.OPERATION_FLAG);
579 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_hdr_rec.MC_HEADER_ID -- '||l_ra_def_hdr_rec.MC_HEADER_ID);
580 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_hdr_rec.INVENTORY_ITEM_ID -- '||l_ra_def_hdr_rec.INVENTORY_ITEM_ID);
581 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_hdr_rec.ITEM_REVISION -- '||l_ra_def_hdr_rec.ITEM_REVISION);
582 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_hdr_rec.INVENTORY_ORG_ID -- '||l_ra_def_hdr_rec.INVENTORY_ORG_ID);
583 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_hdr_rec.RELATIONSHIP_ID -- '||l_ra_def_hdr_rec.RELATIONSHIP_ID);
584 END IF;
585
586 IF ((l_ra_def_hdr_rec.OPERATION_FLAG IS NULL) OR (l_ra_def_hdr_rec.OPERATION_FLAG <> G_DML_CREATE)) THEN
587 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
588 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - OP Flag-');
589 END IF;
590 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
591 FND_MESSAGE.Set_Token('FIELD',l_ra_def_hdr_rec.OPERATION_FLAG);
592 FND_MSG_PUB.ADD;
593 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
594 END IF;
595
596 -- Validate input reliability data in l_ra_def_hdr_rec
597 /*
598 A. MC_HEADER_ID Cannot be NULL
599 B. INVENTORY_ITEM_ID cannot be NULL
600 C. INVENTORY_ORG_ID cannot be NULL
601 D. RELATIONSHIP_ID cannot be NULL
602 */
603 IF((l_ra_def_hdr_rec.MC_HEADER_ID IS NULL) OR
604 (l_ra_def_hdr_rec.INVENTORY_ITEM_ID IS NULL) OR
605 (l_ra_def_hdr_rec.INVENTORY_ORG_ID IS NULL) OR
606 (l_ra_def_hdr_rec.RELATIONSHIP_ID IS NULL)) THEN
607
608 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
609 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
610 END IF;
611
612 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
613 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DATA');
614 FND_MSG_PUB.ADD;
615 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
616 END IF;
617
618 --Validate MC_HEADER_ID
619 BEGIN
620 SELECT 'Y'
621 INTO l_dummy
622 FROM dual
623 WHERE EXISTS( SELECT 'X'
624 FROM ahl_mc_headers_b
625 WHERE mc_header_id = l_ra_def_hdr_rec.MC_HEADER_ID);
626
627 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
628 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation successful: MR_HEADER_ID --');
629 END IF;
630
631 EXCEPTION
632 WHEN NO_DATA_FOUND THEN
633 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
634 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Failed: MR_HEADER_ID --');
635 END IF;
636
637 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
638 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DATA');
639 FND_MSG_PUB.ADD;
640 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
641 END;
642
643 --Validate RELATIONSHIP_ID
644 BEGIN
645 SELECT 'Y'
646 INTO l_dummy
647 FROM dual
648 WHERE EXISTS(SELECT 'X'
649 FROM ahl_mc_relationships
650 WHERE mc_header_id = l_ra_def_hdr_rec.MC_HEADER_ID
651 AND relationship_id = l_ra_def_hdr_rec.RELATIONSHIP_ID);
652
653 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
654 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation successful: RELATIONSHIP_ID --');
655 END IF;
656
657 EXCEPTION
658 WHEN NO_DATA_FOUND THEN
659 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
660 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Failed: RELATIONSHIP_ID --');
661 END IF;
662
663 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
664 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DATA');
665 FND_MSG_PUB.ADD;
666 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
667 END;
668
669 --Validate INVENTORY_ITEM_ID, INVENTORY_ORG_ID, ITEM_REVISION from AHL_ITEM_ASSOCIATIONS_B
670 BEGIN
671 SELECT 'Y'
672 INTO l_dummy
673 FROM dual
674 WHERE EXISTS(SELECT 'X'
675 FROM ahl_mc_relationships mcr, ahl_item_associations_b ia
676 WHERE mcr.relationship_id = l_ra_def_hdr_rec.RELATIONSHIP_ID
677 AND mcr.item_group_id = ia.item_group_id
678 AND ia.inventory_item_id = l_ra_def_hdr_rec.INVENTORY_ITEM_ID
679 AND ia.inventory_org_id = l_ra_def_hdr_rec.INVENTORY_ORG_ID
680 AND nvl(ia.revision,FND_API.G_MISS_CHAR) = nvl(l_ra_def_hdr_rec.ITEM_REVISION,FND_API.G_MISS_CHAR));
681
682
683 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
684 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation successful: Item --');
685 END IF;
686
687 EXCEPTION
688 WHEN NO_DATA_FOUND THEN
689 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
690 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Failed: Item --');
691 END IF;
692
693 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
694 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DATA');
695 FND_MSG_PUB.ADD;
696 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
697 END;
698
699 --Uniquness Check for MC_HEADER_ID, RELATIONSHIP_ID, INVENTORY_ITEM_ID, INVENTORY_ORG_ID, ITEM_REVISION
700 BEGIN
701 SELECT 'Y'
702 INTO l_dummy
703 FROM dual
704 WHERE EXISTS(SELECT 'X'
705 FROM ahl_ra_definition_hdr
706 WHERE mc_header_id = l_ra_def_hdr_rec.MC_HEADER_ID
707 AND relationship_id = l_ra_def_hdr_rec.RELATIONSHIP_ID
708 AND inventory_item_id = l_ra_def_hdr_rec.INVENTORY_ITEM_ID
709 AND inventory_org_id = l_ra_def_hdr_rec.INVENTORY_ORG_ID
710 AND nvl(item_revision,FND_API.G_MISS_CHAR) = nvl(l_ra_def_hdr_rec.ITEM_REVISION,FND_API.G_MISS_CHAR));
711
712 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
713 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Failed: Uniqnuess Check --');
714 END IF;
715
716 FND_MESSAGE.Set_Name('AHL','AHL_RA_REL_DEF_EXISTS');
717 FND_MSG_PUB.ADD;
718 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
719
720 EXCEPTION
721 WHEN NO_DATA_FOUND THEN
722 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
723 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation successful: Uniqnuess Check --');
724 END IF;
725 END;
726
727 -- Initialize RA_DEFINITION_HDR_ID to sequence next val for insert
728 SELECT AHL_RA_DEFINITION_HDR_S.NEXTVAL into l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID from dual;
729
730 -- Initialize object version number to 1
731 l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER := 1;
732
733 -- Intialize who column info
734 l_ra_def_hdr_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
735 l_ra_def_hdr_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
736 l_ra_def_hdr_rec.CREATED_BY := fnd_global.user_id;
737 l_ra_def_hdr_rec.CREATION_DATE := sysdate;
738 l_ra_def_hdr_rec.LAST_UPDATE_DATE := sysdate;
739
740 -- Initialize security group id
741 l_ra_def_hdr_rec.SECURITY_GROUP_ID := null;
742
743 INSERT INTO AHL_RA_DEFINITION_HDR
744 (
745 RA_DEFINITION_HDR_ID,
746 MC_HEADER_ID,
747 INVENTORY_ITEM_ID,
748 INVENTORY_ORG_ID,
749 ITEM_REVISION,
750 RELATIONSHIP_ID,
751 OBJECT_VERSION_NUMBER,
752 SECURITY_GROUP_ID,
753 ATTRIBUTE_CATEGORY,
754 ATTRIBUTE1,
755 ATTRIBUTE2,
756 ATTRIBUTE3,
757 ATTRIBUTE4,
758 ATTRIBUTE5,
759 ATTRIBUTE6,
760 ATTRIBUTE7,
761 ATTRIBUTE8,
762 ATTRIBUTE9,
763 ATTRIBUTE10,
764 ATTRIBUTE11,
765 ATTRIBUTE12,
766 ATTRIBUTE13,
767 ATTRIBUTE14,
768 ATTRIBUTE15,
769 CREATION_DATE,
770 CREATED_BY,
771 LAST_UPDATE_DATE,
772 LAST_UPDATED_BY,
773 LAST_UPDATE_LOGIN
774 )
775 VALUES
776 (
777 l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID, -- RA_DEFINITION_HDR_ID
778 l_ra_def_hdr_rec.MC_HEADER_ID, -- MC_HEADER_ID
779 l_ra_def_hdr_rec.INVENTORY_ITEM_ID, -- INVENTORY_ITEM_ID
780 l_ra_def_hdr_rec.INVENTORY_ORG_ID, -- INVENTORY_ORG_ID
781 l_ra_def_hdr_rec.ITEM_REVISION, -- ITEM_REVISION
782 l_ra_def_hdr_rec.RELATIONSHIP_ID, -- RELATIONSHIP_ID
783 l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER, -- OBJECT_VERSION_NUMBER
784 l_ra_def_hdr_rec.SECURITY_GROUP_ID, -- SECURITY_GROUP_ID
785 l_ra_def_hdr_rec.ATTRIBUTE_CATEGORY, -- ATTRIBUTE_CATEGORY
786 l_ra_def_hdr_rec.ATTRIBUTE1, -- ATTRIBUTE1
787 l_ra_def_hdr_rec.ATTRIBUTE2, -- ATTRIBUTE2
788 l_ra_def_hdr_rec.ATTRIBUTE3, -- ATTRIBUTE3
789 l_ra_def_hdr_rec.ATTRIBUTE4, -- ATTRIBUTE4
790 l_ra_def_hdr_rec.ATTRIBUTE5, -- ATTRIBUTE5
791 l_ra_def_hdr_rec.ATTRIBUTE6, -- ATTRIBUTE6
792 l_ra_def_hdr_rec.ATTRIBUTE7, -- ATTRIBUTE7
793 l_ra_def_hdr_rec.ATTRIBUTE8, -- ATTRIBUTE8
794 l_ra_def_hdr_rec.ATTRIBUTE9, -- ATTRIBUTE9
795 l_ra_def_hdr_rec.ATTRIBUTE10, -- ATTRIBUTE10
796 l_ra_def_hdr_rec.ATTRIBUTE11, -- ATTRIBUTE11
797 l_ra_def_hdr_rec.ATTRIBUTE12, -- ATTRIBUTE12
798 l_ra_def_hdr_rec.ATTRIBUTE13, -- ATTRIBUTE13
799 l_ra_def_hdr_rec.ATTRIBUTE14, -- ATTRIBUTE14
800 l_ra_def_hdr_rec.ATTRIBUTE15, -- ATTRIBUTE15
801 l_ra_def_hdr_rec.CREATION_DATE, -- CREATION_DATE
802 l_ra_def_hdr_rec.CREATED_BY, -- CREATED_BY
803 l_ra_def_hdr_rec.LAST_UPDATE_DATE, -- LAST_UPDATE_DATE
804 l_ra_def_hdr_rec.LAST_UPDATED_BY, -- LAST_UPDATED_BY
805 l_ra_def_hdr_rec.LAST_UPDATE_LOGIN -- LAST_UPDATE_LOGIN
806 );
807
808 p_x_reliability_data_rec := l_ra_def_hdr_rec;
809 -- Standard check for p_commit
810 IF FND_API.To_Boolean (p_commit) THEN
811 COMMIT;
812 END IF;
813
814 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
815 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_RELIABILITY_DATA -------END-----------');
816 END IF;
817
818 -- Standard call to get message count and if count is 1, get message
819 FND_MSG_PUB.Count_And_Get
820 ( p_count => x_msg_count,
821 p_data => x_msg_data,
822 p_encoded => fnd_api.g_false);
823
824 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
825 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
826 END IF;
827
828 EXCEPTION
829 WHEN FND_API.G_EXC_ERROR THEN
830 x_return_status := FND_API.G_RET_STS_ERROR;
831 ROLLBACK TO CREATE_RELIABILITY_DATA_SP;
832 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
833 p_data => x_msg_data,
834 p_encoded => fnd_api.g_false);
835
836 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
837 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
838 ROLLBACK TO CREATE_RELIABILITY_DATA_SP;
839 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
840 p_data => x_msg_data,
841 p_encoded => fnd_api.g_false);
842
843 WHEN OTHERS THEN
844 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
845 ROLLBACK TO CREATE_RELIABILITY_DATA_SP;
846 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
847 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
848 p_procedure_name => 'CREATE_RELIABILITY_DATA',
849 p_error_text => SUBSTR(SQLERRM,1,240));
850 END IF;
851 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
852 p_data => x_msg_data,
853 p_encoded => fnd_api.g_false);
854
855 END CREATE_RELIABILITY_DATA;
856
857 -- Start of Comments --
858 --
859 -- Procedure name : DELETE_RELIABILITY_DATA
860 -- Type : Private
861 -- Function : This API would delete the setup data for Reliability Framework in AHL_RA_DEFINITION_HDR
862 -- Pre-reqs :
863 --
864 -- Standard IN Parameters :
865 -- p_api_version IN NUMBER Required
866 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
867 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
868 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
869 --
870 -- Standard OUT Parameters :
871 -- x_return_status OUT VARCHAR2 Required
872 -- x_msg_count OUT NUMBER Required
873 -- x_msg_data OUT VARCHAR2 Required
874 --
875 -- DELETE_RELIABILITY_DATA Parameters :
876 -- p_reliability_data_rec IN OUT RA_DEFINITION_HDR_REC_TYPE Required
877 --
878 -- Version :
879 -- Initial Version 1.0
880 --
881 -- End of Comments --
882 PROCEDURE DELETE_RELIABILITY_DATA (
883 p_api_version IN NUMBER,
884 p_init_msg_list IN VARCHAR2,
885 p_commit IN VARCHAR2,
886 p_validation_level IN NUMBER,
887 p_module_type IN VARCHAR2,
888 x_return_status OUT NOCOPY VARCHAR2,
889 x_msg_count OUT NOCOPY NUMBER,
890 x_msg_data OUT NOCOPY VARCHAR2,
891 p_reliability_data_rec IN AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE) IS
892
893 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_RELIABILITY_DATA';
894 l_api_version CONSTANT NUMBER := 1.0;
895 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
896
897 l_obj_version_num AHL_RA_DEFINITION_HDR.OBJECT_VERSION_NUMBER%TYPE;
898
899 BEGIN
900
901 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
902 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
903 END IF;
904
905 -- Standard start of API savepoint
906 SAVEPOINT DELETE_RELIABILITY_DATA_SP;
907
908 -- Standard call to check for call compatibility
909 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
910 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
911 END IF;
912
913 -- Initialize message list if p_init_msg_list is set to TRUE
914 IF FND_API.To_Boolean(p_init_msg_list) THEN
915 FND_MSG_PUB.Initialize;
916 END IF;
917
918 x_return_status := FND_API.G_RET_STS_SUCCESS;
919
920 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
921 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_RELIABILITY_DATA -------BEGIN-----------');
922 END IF;
923
924 IF ((p_reliability_data_rec.OPERATION_FLAG IS NULL) OR (p_reliability_data_rec.OPERATION_FLAG <> G_DML_DELETE)) THEN
925 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
926 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
927 END IF;
928 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
929 FND_MESSAGE.Set_Token('FIELD', p_reliability_data_rec.OPERATION_FLAG);
930 FND_MSG_PUB.ADD;
931 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
932 END IF;
933
934 -- Validate input data in p_reliability_data_rec
935 -- A. p_reliability_data_rec. RA_DEFINITION_HDR_ID Cannot be NULL
936 -- C. Object Version Number should not be NULL
937 IF ((p_reliability_data_rec.RA_DEFINITION_HDR_ID IS NULL) OR
938 (p_reliability_data_rec.OBJECT_VERSION_NUMBER IS NULL)) THEN
939 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
940 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- RA_DEFINITION_HDR_ID :' || p_reliability_data_rec.RA_DEFINITION_HDR_ID);
941 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OVN :' || p_reliability_data_rec.OBJECT_VERSION_NUMBER);
942 END IF;
943 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
944 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.D_RA_DEF_DATA');
945 FND_MSG_PUB.ADD;
946 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
947 END IF;
948
949 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
950 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Delete counter-MTBF records for RA_DEFINITION_HDR_ID -- ' || p_reliability_data_rec.RA_DEFINITION_HDR_ID);
951 END IF;
952
953 -- Check for existence of record and fetch OVN for change record validation
954 BEGIN
955 SELECT OBJECT_VERSION_NUMBER
956 INTO l_obj_version_num
957 FROM AHL_RA_DEFINITION_HDR
958 WHERE RA_DEFINITION_HDR_ID = p_reliability_data_rec.RA_DEFINITION_HDR_ID
959 FOR UPDATE OF object_version_number NOWAIT;
960
961 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
962 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB : ' || l_obj_version_num);
963 END IF;
964
965 EXCEPTION
966 WHEN NO_DATA_FOUND THEN
967 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
968 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || p_reliability_data_rec.RA_DEFINITION_HDR_ID);
969 END IF;
970 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
971 FND_MSG_PUB.ADD;
972 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
973 END;
974
975 -- Validate input data in p_reliability_data_rec
976 -- A. RECORD SHOULD NOT HAVE CHANGED. i.e. object_version_number should not change.
977 -- Child Locking Check is implemented for Setup Data - When Child Is edited/inserted/deleted OVN of Master is bumped up
978 IF l_obj_version_num <> p_reliability_data_rec.OBJECT_VERSION_NUMBER THEN
979 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
980 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || p_reliability_data_rec.OBJECT_VERSION_NUMBER);
981 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN in db : ' || l_obj_version_num);
982 END IF;
983 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
984 FND_MSG_PUB.ADD;
985 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
986 END IF;
987
988 --Delete the child records before deleting the master record.
989 DELETE AHL_RA_DEFINITION_DTLS
990 WHERE RA_DEFINITION_HDR_ID = p_reliability_data_rec.RA_DEFINITION_HDR_ID;
991
992 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
993 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Child Records have been deleted --');
994 END IF;
995
996 --Delete the master record.
997 DELETE AHL_RA_DEFINITION_HDR
998 WHERE RA_DEFINITION_HDR_ID = p_reliability_data_rec.RA_DEFINITION_HDR_ID;
999
1000 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1001 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master Record has been deleted --');
1002 END IF;
1003
1004 -- Standard check for p_commit
1005 IF FND_API.To_Boolean (p_commit) THEN
1006 COMMIT;
1007 END IF;
1008
1009 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1010 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_RELIABILITY_DATA -------END-----------');
1011 END IF;
1012
1013 -- Standard call to get message count and if count is 1, get message
1014 FND_MSG_PUB.Count_And_Get
1015 ( p_count => x_msg_count,
1016 p_data => x_msg_data,
1017 p_encoded => fnd_api.g_false);
1018
1019 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1020 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
1021 END IF;
1022
1023 EXCEPTION
1024 WHEN FND_API.G_EXC_ERROR THEN
1025 x_return_status := FND_API.G_RET_STS_ERROR;
1026 ROLLBACK TO DELETE_RELIABILITY_DATA_SP;
1027 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1028 p_data => x_msg_data,
1029 p_encoded => fnd_api.g_false);
1030
1031 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1032 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1033 ROLLBACK TO DELETE_RELIABILITY_DATA_SP;
1034 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1035 p_data => x_msg_data,
1036 p_encoded => fnd_api.g_false);
1037
1038 WHEN OTHERS THEN
1039 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1040 ROLLBACK TO DELETE_RELIABILITY_DATA_SP;
1041 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1042 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1043 p_procedure_name => 'DELETE_RELIABILITY_DATA',
1044 p_error_text => SUBSTR(SQLERRM,1,240));
1045 END IF;
1046 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1047 p_data => x_msg_data,
1048 p_encoded => fnd_api.g_false);
1049
1050 END DELETE_RELIABILITY_DATA;
1051
1052
1053 -- Start of Comments --
1054 --
1055 -- Procedure name : CREATE_MTBF_DATA
1056 -- Type : Private
1057 -- Function : This API would create the setup data for Reliability Framework in AHL_RA_DEFINITION_DTLS
1058 -- Pre-reqs :
1059 --
1060 -- Standard IN Parameters :
1061 -- p_api_version IN NUMBER Required
1062 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
1063 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
1064 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
1065 --
1066 -- Standard OUT Parameters :
1067 -- x_return_status OUT VARCHAR2 Required
1068 -- x_msg_count OUT NUMBER Required
1069 -- x_msg_data OUT VARCHAR2 Required
1070 --
1071 -- CREATE_MTBF_DATA Parameters :
1072 -- p_x_mtbf_data_rec IN OUT RA_DEFINITION_DTLS_REC_TYPE Required
1073 --
1074 -- Version :
1075 -- Initial Version 1.0
1076 --
1077 -- End of Comments --
1078 PROCEDURE CREATE_MTBF_DATA (
1079 p_api_version IN NUMBER,
1080 p_init_msg_list IN VARCHAR2,
1081 p_commit IN VARCHAR2,
1082 p_validation_level IN NUMBER,
1083 p_module_type IN VARCHAR2,
1084 x_return_status OUT NOCOPY VARCHAR2,
1085 x_msg_count OUT NOCOPY NUMBER,
1086 x_msg_data OUT NOCOPY VARCHAR2,
1087 p_x_reliability_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE,
1088 p_x_mtbf_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_DEFINITION_DTLS_REC_TYPE) IS
1089
1090 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_MTBF_DATA';
1091 l_api_version CONSTANT NUMBER := 1.0;
1092 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
1093
1094 l_ra_def_hdr_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE DEFAULT p_x_reliability_data_rec;
1095 l_ra_def_dtl_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_DTLS_REC_TYPE DEFAULT p_x_mtbf_data_rec;
1096 l_m_obj_version_num AHL_RA_DEFINITION_HDR.OBJECT_VERSION_NUMBER%TYPE;
1097 l_cou_name CSI_COUNTER_TEMPLATE_VL.NAME%TYPE;
1098 l_dummy VARCHAR2(1);
1099
1100 BEGIN
1101
1102 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1103 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
1104 END IF;
1105
1106 -- Standard start of API savepoint
1107 SAVEPOINT CREATE_MTBF_DATA_SP;
1108
1109 -- Standard call to check for call compatibility
1110 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1111 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1112 END IF;
1113
1114 -- Initialize message list if p_init_msg_list is set to TRUE
1115 IF FND_API.To_Boolean(p_init_msg_list) THEN
1116 FND_MSG_PUB.Initialize;
1117 END IF;
1118
1119 x_return_status := FND_API.G_RET_STS_SUCCESS;
1120
1121 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1122 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_MTBF_DATA -------BEGIN-----------');
1123 END IF;
1124
1125 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1126 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Parameters Passed --');
1127 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID -- '||l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1128 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.COUNTER_ID -- '||l_ra_def_dtl_rec.COUNTER_ID);
1129 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.MTBF_VALUE -- '||l_ra_def_dtl_rec.MTBF_VALUE);
1130 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.OPERATION_FLAG -- '||l_ra_def_dtl_rec.OPERATION_FLAG);
1131 END IF;
1132
1133 IF ((l_ra_def_dtl_rec.OPERATION_FLAG IS NULL) OR (l_ra_def_dtl_rec.OPERATION_FLAG <> G_DML_CREATE)) THEN
1134 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1135 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
1136 END IF;
1137 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
1138 FND_MESSAGE.Set_Token('FIELD',l_ra_def_dtl_rec.OPERATION_FLAG);
1139 FND_MSG_PUB.ADD;
1140 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1141 END IF;
1142
1143 --Mandatory validations for CounterId and RA_DEFINITION_HDR_ID
1144 IF ((l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NULL AND l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID IS NULL) OR
1145 (l_ra_def_dtl_rec.COUNTER_ID IS NULL) OR
1146 (l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER IS NULL)) THEN
1147 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1148 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID -'||l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1149 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - COUNTER_ID -'||l_ra_def_dtl_rec.COUNTER_ID);
1150 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID -'||l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID);
1151 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - OBJECT_VERSION_NUMBER -'||l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER);
1152 END IF;
1153 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1154 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DTL_DATA');
1155 FND_MSG_PUB.ADD;
1156 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1157 END IF;
1158
1159 IF ((l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NOT NULL AND l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID IS NOT NULL) AND
1160 (l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID <> l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID)) THEN
1161 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1162 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID MASTER-'||l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID);
1163 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID CHILD-'||l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1164 END IF;
1165 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1166 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DTL_DATA');
1167 FND_MSG_PUB.ADD;
1168 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1169 END IF;
1170
1171 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1172 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Default RA_DEFINITION_HDR_ID in child rec from header rec and vice-versa- if passed as null. -- ');
1173 END IF;
1174
1175 -- Default RA_DEFINITION_HDR_ID in child rec from header rec - if passed as null.
1176 IF l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NULL THEN
1177 l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID := l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID;
1178 ELSE
1179 l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID := l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID;
1180 END IF;
1181
1182 --Validate CounterId passed
1183 BEGIN
1184 -- Bug 4913954 : Perf Fixes.
1185 -- Since we are using reference to cs_counter_groups with a join condition TEMPLATE_FLAG = 'Y'
1186 -- i.e only counter templates, direct reference to cs_csi_counter_groups can be used here.
1187 SELECT templates.name
1188 INTO l_cou_name
1189 FROM cs_csi_counter_groups cg,
1190 csi_counter_template_vl templates,
1191 csi_ctr_item_associations csia,
1192 ahl_ra_definition_hdr rdh
1193 WHERE templates.counter_id = l_ra_def_dtl_rec.COUNTER_ID
1194 AND cg.template_flag = 'Y'
1195 AND templates.group_id = cg.counter_group_id
1196 AND csia.group_id = cg.counter_group_id
1197 AND csia.inventory_item_id = rdh.inventory_item_id
1198 --Added the following on 13-sep-2005 after the feedback from csi team
1199 AND nvl(csia.associated_to_group,'N') = 'Y'
1200 AND csia.counter_id is null
1201 --mpothuku end
1202 AND rdh.RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID
1203 AND trunc(sysdate) < trunc(nvl(templates.end_date_active,sysdate+1))
1204 AND trunc(sysdate) < trunc(nvl(csia.end_date_active,sysdate+1));
1205 --Did not add the start date check above as this is setup and we might want to
1206 --define associations for counters that might get activated in future.
1207
1208 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1209 fnd_log.string(fnd_log.level_statement,l_full_name,'-- COUNTER_ID Validated Successfully--');
1210 END IF;
1211
1212 EXCEPTION
1213 WHEN NO_DATA_FOUND THEN
1214 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1215 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - COUNTER_ID -' || l_ra_def_dtl_rec.COUNTER_ID);
1216 END IF;
1217 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1218 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_RA_DEF_DTL_DATA');
1219 FND_MSG_PUB.ADD;
1220 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1221 END;
1222
1223 --MTBF should be >= 0 if not null
1224 IF(l_ra_def_dtl_rec.MTBF_VALUE IS NOT NULL and l_ra_def_dtl_rec.MTBF_VALUE < 0) THEN
1225 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1226 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - MTBF_VALUE -'||l_ra_def_dtl_rec.MTBF_VALUE);
1227 END IF;
1228 FND_MESSAGE.Set_Name('AHL','AHL_RA_MTBF_INV');
1229 FND_MESSAGE.Set_Token('COUNTER',l_cou_name);
1230 FND_MESSAGE.Set_Token('MTBF', l_ra_def_dtl_rec.MTBF_VALUE);
1231 FND_MSG_PUB.ADD;
1232 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1233 END IF;
1234
1235 --Uniqueness Check for the counterId
1236 BEGIN
1237 SELECT 'Y'
1238 INTO l_dummy
1239 FROM dual
1240 WHERE EXISTS(SELECT 'X'
1241 FROM AHL_RA_DEFINITION_DTLS
1242 WHERE COUNTER_ID = l_ra_def_dtl_rec.COUNTER_ID
1243 AND RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1244
1245 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1246 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Duplicate exists - COUNTER_ID -' || l_ra_def_dtl_rec.COUNTER_ID);
1247 END IF;
1248
1249 FND_MESSAGE.Set_Name('AHL','AHL_RA_REL_DTL_EXISTS');
1250 FND_MESSAGE.Set_Token('COUNTER',l_cou_name);
1251 FND_MSG_PUB.ADD;
1252 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1253
1254 EXCEPTION
1255 WHEN NO_DATA_FOUND THEN
1256 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1257 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Duplicate does not exist-- COUNTER_ID Validated Successfully--');
1258 END IF;
1259 END;
1260
1261 -- Check for existence of record and fetch OVN of Master Rec for change record validation and bump up
1262 BEGIN
1263 SELECT OBJECT_VERSION_NUMBER
1264 INTO l_m_obj_version_num
1265 FROM AHL_RA_DEFINITION_HDR
1266 WHERE RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID
1267 FOR UPDATE OF object_version_number NOWAIT;
1268
1269 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1270 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB OF MASTER: ' || l_m_obj_version_num);
1271 END IF;
1272
1273 EXCEPTION
1274 WHEN NO_DATA_FOUND THEN
1275 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1276 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1277 END IF;
1278 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
1279 FND_MSG_PUB.ADD;
1280 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1281 END;
1282
1283 -- Validate input data in p_x_reliability_data_rec
1284 -- A. RECORD SHOULD NOT HAVE CHANGED. i.e. object_version_number should not change.
1285 -- Child Locking Check is implemented for Setup Data - When Child Is edited/inserted/deleted OVN of Master is bumped up
1286 IF l_m_obj_version_num <> l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER THEN
1287 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1288 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER);
1289 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN in db : ' || l_m_obj_version_num);
1290 END IF;
1291 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
1292 FND_MSG_PUB.ADD;
1293 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1294 END IF;
1295
1296 -- Initialize RA_DEFINITION_DTL_ID to sequence next val for insert
1297 SELECT AHL_RA_DEFINITION_DTLS_S.NEXTVAL into l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID from dual;
1298
1299 -- Initialize object version number to 1
1300 l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER := 1;
1301
1302 -- Intialize who column info
1303 l_ra_def_dtl_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
1304 l_ra_def_dtl_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
1305 l_ra_def_dtl_rec.CREATED_BY := fnd_global.user_id;
1306 l_ra_def_dtl_rec.CREATION_DATE := sysdate;
1307 l_ra_def_dtl_rec.LAST_UPDATE_DATE := sysdate;
1308
1309 -- Initialize security group id
1310 l_ra_def_dtl_rec.SECURITY_GROUP_ID := null;
1311
1312 --Insert the record into AHL_RA_DEFINITION_DTLS
1313 INSERT INTO AHL_RA_DEFINITION_DTLS
1314 (
1315 RA_DEFINITION_DTL_ID,
1316 RA_DEFINITION_HDR_ID,
1317 COUNTER_ID,
1318 MTBF_VALUE,
1319 OBJECT_VERSION_NUMBER,
1320 SECURITY_GROUP_ID,
1321 ATTRIBUTE_CATEGORY,
1322 ATTRIBUTE1,
1323 ATTRIBUTE2,
1324 ATTRIBUTE3,
1325 ATTRIBUTE4,
1326 ATTRIBUTE5,
1327 ATTRIBUTE6,
1328 ATTRIBUTE7,
1329 ATTRIBUTE8,
1330 ATTRIBUTE9,
1331 ATTRIBUTE10,
1332 ATTRIBUTE11,
1333 ATTRIBUTE12,
1334 ATTRIBUTE13,
1335 ATTRIBUTE14,
1336 ATTRIBUTE15,
1337 CREATION_DATE,
1338 CREATED_BY,
1339 LAST_UPDATE_DATE,
1340 LAST_UPDATED_BY,
1341 LAST_UPDATE_LOGIN
1342 )
1343 VALUES
1344 (
1345 l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID,
1346 l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID,
1347 l_ra_def_dtl_rec.COUNTER_ID,
1348 l_ra_def_dtl_rec.MTBF_VALUE,
1349 l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER,
1350 l_ra_def_dtl_rec.SECURITY_GROUP_ID,
1351 l_ra_def_dtl_rec.ATTRIBUTE_CATEGORY,
1352 l_ra_def_dtl_rec.ATTRIBUTE1,
1353 l_ra_def_dtl_rec.ATTRIBUTE2,
1354 l_ra_def_dtl_rec.ATTRIBUTE3,
1355 l_ra_def_dtl_rec.ATTRIBUTE4,
1356 l_ra_def_dtl_rec.ATTRIBUTE5,
1357 l_ra_def_dtl_rec.ATTRIBUTE6,
1358 l_ra_def_dtl_rec.ATTRIBUTE7,
1359 l_ra_def_dtl_rec.ATTRIBUTE8,
1360 l_ra_def_dtl_rec.ATTRIBUTE9,
1361 l_ra_def_dtl_rec.ATTRIBUTE10,
1362 l_ra_def_dtl_rec.ATTRIBUTE11,
1363 l_ra_def_dtl_rec.ATTRIBUTE12,
1364 l_ra_def_dtl_rec.ATTRIBUTE13,
1365 l_ra_def_dtl_rec.ATTRIBUTE14,
1366 l_ra_def_dtl_rec.ATTRIBUTE15,
1367 l_ra_def_dtl_rec.CREATION_DATE,
1368 l_ra_def_dtl_rec.CREATED_BY,
1369 l_ra_def_dtl_rec.LAST_UPDATE_DATE,
1370 l_ra_def_dtl_rec.LAST_UPDATED_BY,
1371 l_ra_def_dtl_rec.LAST_UPDATE_LOGIN
1372 );
1373
1374 p_x_mtbf_data_rec := l_ra_def_dtl_rec;
1375
1376 l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER := l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER + 1;
1377
1378 -- Update Object Version Number of Master Record are Inserting child record.
1379 UPDATE AHL_RA_DEFINITION_HDR
1380 SET OBJECT_VERSION_NUMBER = l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER
1381 WHERE RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID;
1382
1383 p_x_reliability_data_rec := l_ra_def_hdr_rec;
1384
1385 -- Standard check for p_commit
1386 IF FND_API.To_Boolean (p_commit) THEN
1387 COMMIT;
1388 END IF;
1389
1390 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1391 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_MTBF_DATA -------END-----------');
1392 END IF;
1393
1394 -- Standard call to get message count and if count is 1, get message
1395 FND_MSG_PUB.Count_And_Get
1396 ( p_count => x_msg_count,
1397 p_data => x_msg_data,
1398 p_encoded => fnd_api.g_false);
1399
1400 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1401 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','At the start of PLSQL procedure');
1402 END IF;
1403
1404 EXCEPTION
1405 WHEN FND_API.G_EXC_ERROR THEN
1406 x_return_status := FND_API.G_RET_STS_ERROR;
1407 ROLLBACK TO CREATE_MTBF_DATA_SP;
1408 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1409 p_data => x_msg_data,
1410 p_encoded => fnd_api.g_false);
1411
1412 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1413 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1414 ROLLBACK TO CREATE_MTBF_DATA_SP;
1415 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1416 p_data => x_msg_data,
1417 p_encoded => fnd_api.g_false);
1418
1419 WHEN OTHERS THEN
1420 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1421 ROLLBACK TO CREATE_MTBF_DATA_SP;
1422 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1423 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1424 p_procedure_name => 'CREATE_MTBF_DATA',
1425 p_error_text => SUBSTR(SQLERRM,1,240));
1426 END IF;
1427 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1428 p_data => x_msg_data,
1429 p_encoded => fnd_api.g_false);
1430
1431 END CREATE_MTBF_DATA;
1432
1433
1434 -- Start of Comments --
1435 --
1436 -- Procedure name : UPDATE_MTBF_DATA
1437 -- Type : Private
1438 -- Function : This API would update the setup data for Reliability Framework in AHL_RA_DEFINITION_DTLS
1439 -- Pre-reqs :
1440 --
1441 -- Standard IN Parameters :
1442 -- p_api_version IN NUMBER Required
1443 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
1444 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
1445 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
1446 --
1447 -- Standard OUT Parameters :
1448 -- x_return_status OUT VARCHAR2 Required
1449 -- x_msg_count OUT NUMBER Required
1450 -- x_msg_data OUT VARCHAR2 Required
1451 --
1452 -- UPDATE_MTBF_DATA Parameters :
1453 -- p_x_mtbf_data_rec IN OUT RA_DEFINITION_DTLS_REC_TYPE Required
1454 --
1455 -- Version :
1456 -- Initial Version 1.0
1457 --
1458 -- End of Comments --
1459 PROCEDURE UPDATE_MTBF_DATA (
1460 p_api_version IN NUMBER,
1461 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1462 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1463 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1464 p_module_type IN VARCHAR2,
1465 x_return_status OUT NOCOPY VARCHAR2,
1466 x_msg_count OUT NOCOPY NUMBER,
1467 x_msg_data OUT NOCOPY VARCHAR2,
1468 p_x_reliability_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE,
1469 p_x_mtbf_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_DEFINITION_DTLS_REC_TYPE) IS
1470
1471 CURSOR get_mtbf_data_cur(p_ra_definition_dtl_id IN NUMBER) IS
1472 SELECT RA_DEFINITION_DTL_ID,
1473 RA_DEFINITION_HDR_ID,
1474 COUNTER_ID,
1475 MTBF_VALUE,
1476 OBJECT_VERSION_NUMBER
1477 FROM AHL_RA_DEFINITION_DTLS
1478 WHERE RA_DEFINITION_DTL_ID = p_ra_definition_dtl_id
1479 FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1480
1481 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_MTBF_DATA';
1482 l_api_version CONSTANT NUMBER := 1.0;
1483 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME || ' : ';
1484 l_mtbf_data_old_rec get_mtbf_data_cur%ROWTYPE;
1485 l_ra_def_dtl_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_DTLS_REC_TYPE DEFAULT p_x_mtbf_data_rec;
1486 l_ra_def_hdr_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE DEFAULT p_x_reliability_data_rec;
1487 l_m_obj_version_num AHL_RA_DEFINITION_HDR.OBJECT_VERSION_NUMBER%TYPE;
1488 l_cou_name CSI_COUNTER_TEMPLATE_VL.NAME%TYPE;
1489
1490 BEGIN
1491
1492 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1493 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
1494 END IF;
1495
1496 -- Standard start of API savepoint
1497 SAVEPOINT UPDATE_MTBF_DATA_SP;
1498
1499 -- Standard call to check for call compatibility
1500 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1501 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1502 END IF;
1503
1504 -- Initialize message list if p_init_msg_list is set to TRUE
1505 IF FND_API.To_Boolean(p_init_msg_list) THEN
1506 FND_MSG_PUB.Initialize;
1507 END IF;
1508
1509 x_return_status := FND_API.G_RET_STS_SUCCESS;
1510
1511 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1512 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- UPDATE_MTBF_DATA -------BEGIN-----------');
1513 END IF;
1514
1515 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1516 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Parameters Passed --');
1517 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID -- '||l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID);
1518 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID -- '||l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1519 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.COUNTER_ID -- '||l_ra_def_dtl_rec.COUNTER_ID);
1520 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.MTBF_VALUE -- '||l_ra_def_dtl_rec.MTBF_VALUE);
1521 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_ra_def_dtl_rec.OPERATION_FLAG -- '||l_ra_def_dtl_rec.OPERATION_FLAG);
1522 END IF;
1523
1524 IF ((l_ra_def_dtl_rec.OPERATION_FLAG IS NULL) OR (l_ra_def_dtl_rec.OPERATION_FLAG <> G_DML_UPDATE)) THEN
1525 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1526 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
1527 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
1528 FND_MESSAGE.Set_Token('FIELD',l_ra_def_dtl_rec.OPERATION_FLAG);
1529 FND_MSG_PUB.ADD;
1530 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1531 END IF;
1532 END IF;
1533
1534 --RA_DEFINITION_DTL_ID and OBJECT_VERSION_NUMBER are mandatory
1535 IF( l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID IS NULL OR
1536 l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID = FND_API.G_MISS_NUM OR
1537 l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER IS NULL OR
1538 l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER = FND_API.G_MISS_NUM OR
1539 l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID = FND_API.G_MISS_NUM OR
1540 l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID = FND_API.G_MISS_NUM OR
1541 (l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NULL AND l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID IS NULL)) THEN
1542 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1543 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_RA_DEF_DTL_DATA');
1544 FND_MSG_PUB.ADD;
1545 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1546 END IF;
1547
1548 --Check that both the HDR_ID is same in both the master and child records.
1549 IF ((l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NOT NULL AND l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID IS NOT NULL) AND
1550 (l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID <> l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID)) THEN
1551 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1552 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID MASTER-'||l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID);
1553 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID CHILD-'||l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1554 END IF;
1555 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1556 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_RA_DEF_DTL_DATA');
1557 FND_MSG_PUB.ADD;
1558 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1559 END IF;
1560
1561 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1562 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Default RA_DEFINITION_HDR_ID in child rec from header rec and vice-versa- if passed as null. -- ');
1563 END IF;
1564
1565 -- Default RA_DEFINITION_HDR_ID in child rec from header rec - if passed as null.
1566 IF l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NULL THEN
1567 l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID := l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID;
1568 ELSE
1569 l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID := l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID;
1570 END IF;
1571
1572
1573 --get current mtbf record
1574 OPEN get_mtbf_data_cur(l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID);
1575 FETCH get_mtbf_data_cur INTO l_mtbf_data_old_rec;
1576 IF(get_mtbf_data_cur%NOTFOUND) THEN
1577 CLOSE get_mtbf_data_cur;
1578 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
1579 FND_MSG_PUB.ADD;
1580 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1581 END IF;
1582 CLOSE get_mtbf_data_cur;
1583
1584 IF(l_mtbf_data_old_rec.OBJECT_VERSION_NUMBER <> l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER) THEN
1585 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1586 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER);
1587 END IF;
1588 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
1589 FND_MSG_PUB.ADD;
1590 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1591 END IF;
1592
1593 -- Default missing and unchanged attributes.
1594 IF (p_module_type <> 'OAF') THEN
1595
1596 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1597 fnd_log.string(fnd_log.level_statement, l_full_name, 'default_unchanged_attributes for update operation. Module type is '||p_module_type);
1598 END IF;
1599
1600 -- Default RA_DEFINITION_HDR_ID
1601 /* RA_DEFINITION_HDR_ID cannot be defaulted to null as it is the forigen key reference hence cannot be passed as G_MISS_NUM */
1602
1603 IF (l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NULL) THEN
1604 l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID := l_mtbf_data_old_rec.RA_DEFINITION_HDR_ID;
1605 END IF;
1606
1607 -- Default COUNTER_ID
1608 IF (l_ra_def_dtl_rec.COUNTER_ID IS NULL) THEN
1609 l_ra_def_dtl_rec.COUNTER_ID := l_mtbf_data_old_rec.COUNTER_ID;
1610 ELSIF l_ra_def_dtl_rec.COUNTER_ID = FND_API.G_MISS_NUM THEN
1611 l_ra_def_dtl_rec.COUNTER_ID := NULL;
1612 END IF;
1613
1614 -- Default MTBF_VALUE
1615 IF (l_ra_def_dtl_rec.MTBF_VALUE IS NULL) THEN
1616 l_ra_def_dtl_rec.MTBF_VALUE := l_mtbf_data_old_rec.MTBF_VALUE;
1617 ELSIF l_ra_def_dtl_rec.MTBF_VALUE = FND_API.G_MISS_NUM THEN
1618 l_ra_def_dtl_rec.MTBF_VALUE := NULL;
1619 END IF;
1620
1621 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
1622 fnd_log.string(fnd_log.level_statement, l_full_name, 'defaulting completed successfully');
1623 END IF;
1624
1625 END IF; --( p_module_type <> 'OAF' )
1626
1627 --Validate CounterId passed
1628 BEGIN
1629 -- Bug 4913954 : Perf Fixes.
1630 -- Since we are using reference to cs_counter_groups with a join condition TEMPLATE_FLAG = 'Y'
1631 -- i.e only counter templates, direct reference to cs_csi_counter_groups can be used here.
1632 SELECT templates.name
1633 INTO l_cou_name
1634 FROM cs_csi_counter_groups cg,
1635 csi_counter_template_vl templates,
1636 csi_ctr_item_associations csia,
1637 ahl_ra_definition_hdr rdh
1638 WHERE templates.counter_id = l_ra_def_dtl_rec.COUNTER_ID
1639 AND cg.template_flag = 'Y'
1640 AND templates.group_id = cg.counter_group_id
1641 AND csia.group_id = cg.counter_group_id
1642 AND csia.inventory_item_id = rdh.inventory_item_id
1643 --Added the following on 13-sep-2005 after the feedback from csi team
1644 AND nvl(csia.associated_to_group,'N') = 'Y'
1645 AND csia.counter_id is null
1646 --mpothuku end
1647 AND rdh.RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID
1648 AND trunc(sysdate) < trunc(nvl(templates.end_date_active,sysdate+1))
1649 AND trunc(sysdate) < trunc(nvl(csia.end_date_active,sysdate+1));
1650 --Did not add the start date check above as this is setup and we might want to
1651 --define associations for counters that might get activated in future.
1652
1653 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1654 fnd_log.string(fnd_log.level_statement,l_full_name,'-- COUNTER_ID Validated Successfully--');
1655 END IF;
1656
1657 EXCEPTION
1658 WHEN NO_DATA_FOUND THEN
1659 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1660 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - COUNTER_ID -' || l_ra_def_dtl_rec.COUNTER_ID);
1661 END IF;
1662 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1663 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_RA_DEF_DTL_DATA');
1664 FND_MSG_PUB.ADD;
1665 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1666 END;
1667
1668 --MTBF should be >= 0 if not null
1669 IF(l_ra_def_dtl_rec.MTBF_VALUE IS NOT NULL AND l_ra_def_dtl_rec.MTBF_VALUE < 0) THEN
1670 FND_MESSAGE.Set_Name('AHL','AHL_RA_MTBF_INV');
1671 FND_MESSAGE.Set_Token('COUNTER',l_cou_name);
1672 FND_MESSAGE.Set_Token('MTBF', l_ra_def_dtl_rec.MTBF_VALUE);
1673 FND_MSG_PUB.ADD;
1674 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1675 END IF;
1676
1677 -- Check for existence of record and fetch OVN of Master Rec for change record validation and bump up
1678 BEGIN
1679 SELECT OBJECT_VERSION_NUMBER
1680 INTO l_m_obj_version_num
1681 FROM AHL_RA_DEFINITION_HDR
1682 WHERE RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID
1683 FOR UPDATE OF object_version_number NOWAIT;
1684
1685 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1686 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB OF MASTER: ' || l_m_obj_version_num);
1687 END IF;
1688
1689 EXCEPTION
1690 WHEN NO_DATA_FOUND THEN
1691 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1692 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master DATA DOES NOT EXISTS -- ERROR ... ' || l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1693 END IF;
1694 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
1695 FND_MSG_PUB.ADD;
1696 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1697 END;
1698
1699 -- Validate input data in p_x_reliability_data_rec
1700 -- A. RECORD SHOULD NOT HAVE CHANGED. i.e. object_version_number should not change.
1701 -- Child Locking Check is implemented for Setup Data - When Child Is edited/inserted/deleted OVN of Master is bumped up
1702 IF l_m_obj_version_num <> l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER THEN
1703 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1704 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master Record has changed : OVN passed : ' || l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER);
1705 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master Record has changed : OVN in db : ' || l_m_obj_version_num);
1706 END IF;
1707 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
1708 FND_MSG_PUB.ADD;
1709 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1710 END IF;
1711
1712 -- Increment object version number
1713 l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER := l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER + 1;
1714
1715 -- Intialize who column info
1716 l_ra_def_dtl_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
1717 l_ra_def_dtl_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
1718 l_ra_def_dtl_rec.LAST_UPDATE_DATE := sysdate;
1719 l_ra_def_dtl_rec.CREATED_BY := fnd_global.user_id;
1720 l_ra_def_dtl_rec.CREATION_DATE := sysdate;
1721
1722 UPDATE AHL_RA_DEFINITION_DTLS
1723 SET
1724 RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID,
1725 COUNTER_ID = l_ra_def_dtl_rec.COUNTER_ID,
1726 MTBF_VALUE = l_ra_def_dtl_rec.MTBF_VALUE,
1727 OBJECT_VERSION_NUMBER = l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER,
1728 SECURITY_GROUP_ID = l_ra_def_dtl_rec.SECURITY_GROUP_ID,
1729 ATTRIBUTE_CATEGORY = l_ra_def_dtl_rec.ATTRIBUTE_CATEGORY,
1730 ATTRIBUTE1 = l_ra_def_dtl_rec.ATTRIBUTE1,
1731 ATTRIBUTE2 = l_ra_def_dtl_rec.ATTRIBUTE2,
1732 ATTRIBUTE3 = l_ra_def_dtl_rec.ATTRIBUTE3,
1733 ATTRIBUTE4 = l_ra_def_dtl_rec.ATTRIBUTE4,
1734 ATTRIBUTE5 = l_ra_def_dtl_rec.ATTRIBUTE5,
1735 ATTRIBUTE6 = l_ra_def_dtl_rec.ATTRIBUTE6,
1736 ATTRIBUTE7 = l_ra_def_dtl_rec.ATTRIBUTE7,
1737 ATTRIBUTE8 = l_ra_def_dtl_rec.ATTRIBUTE8,
1738 ATTRIBUTE9 = l_ra_def_dtl_rec.ATTRIBUTE9,
1739 ATTRIBUTE10 = l_ra_def_dtl_rec.ATTRIBUTE10,
1740 ATTRIBUTE11 = l_ra_def_dtl_rec.ATTRIBUTE11,
1741 ATTRIBUTE12 = l_ra_def_dtl_rec.ATTRIBUTE12,
1742 ATTRIBUTE13 = l_ra_def_dtl_rec.ATTRIBUTE13,
1743 ATTRIBUTE14 = l_ra_def_dtl_rec.ATTRIBUTE14,
1744 ATTRIBUTE15 = l_ra_def_dtl_rec.ATTRIBUTE15,
1745 CREATION_DATE = l_ra_def_dtl_rec.CREATION_DATE,
1746 CREATED_BY = l_ra_def_dtl_rec.CREATED_BY,
1747 LAST_UPDATE_DATE = l_ra_def_dtl_rec.LAST_UPDATE_DATE,
1748 LAST_UPDATED_BY = l_ra_def_dtl_rec.LAST_UPDATED_BY,
1749 LAST_UPDATE_LOGIN = l_ra_def_dtl_rec.LAST_UPDATE_LOGIN
1750 WHERE
1751 RA_DEFINITION_DTL_ID = l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID;
1752
1753 -- Set the Out Param
1754 p_x_mtbf_data_rec := l_ra_def_dtl_rec;
1755
1756 l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER := l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER + 1;
1757
1758 -- Update Object Version Number of Master Record are Inserting child record.
1759 UPDATE AHL_RA_DEFINITION_HDR
1760 SET OBJECT_VERSION_NUMBER = l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER
1761 WHERE RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID;
1762
1763 p_x_reliability_data_rec := l_ra_def_hdr_rec;
1764
1765 -- Standard check for p_commit
1766 IF FND_API.To_Boolean (p_commit) THEN
1767 COMMIT;
1768 END IF;
1769
1770 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1771 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- UPDATE_MTBF_DATA -------END-----------');
1772 END IF;
1773
1774 -- Standard call to get message count and if count is 1, get message
1775 FND_MSG_PUB.Count_And_Get
1776 ( p_count => x_msg_count,
1777 p_data => x_msg_data,
1778 p_encoded => fnd_api.g_false);
1779
1780 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1781 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
1782 END IF;
1783
1784 EXCEPTION
1785 WHEN FND_API.G_EXC_ERROR THEN
1786 x_return_status := FND_API.G_RET_STS_ERROR;
1787 Rollback to UPDATE_MTBF_DATA_SP;
1788 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1789 p_data => x_msg_data,
1790 p_encoded => fnd_api.g_false);
1791
1792 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1793 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1794 Rollback to UPDATE_MTBF_DATA_SP;
1795 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1796 p_data => x_msg_data,
1797 p_encoded => fnd_api.g_false);
1798
1799 WHEN OTHERS THEN
1800 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1801 Rollback to UPDATE_MTBF_DATA_SP;
1802 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1803 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1804 p_procedure_name => 'UPDATE_MTBF_DATA',
1805 p_error_text => SUBSTR(SQLERRM,1,240));
1806 END IF;
1807 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1808 p_data => x_msg_data,
1809 p_encoded => fnd_api.g_false);
1810
1811 END UPDATE_MTBF_DATA;
1812
1813
1814 -- Start of Comments --
1815 --
1816 -- Procedure name : DELETE_MTBF_DATA
1817 -- Type : Private
1818 -- Function : This API would delete the setup data for Reliability Framework in AHL_RA_DEFINITION_DTLS
1819 -- Pre-reqs :
1820 --
1821 -- Standard IN Parameters :
1822 -- p_api_version IN NUMBER Required
1823 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
1824 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
1825 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
1826 --
1827 -- Standard OUT Parameters :
1828 -- x_return_status OUT VARCHAR2 Required
1829 -- x_msg_count OUT NUMBER Required
1830 -- x_msg_data OUT VARCHAR2 Required
1831 --
1832 -- DELETE_MTBF_DATA Parameters :
1833 -- p_mtbf_data_rec IN OUT RA_DEFINITION_DTLS_REC_TYPE Required
1834 --
1835 -- Version :
1836 -- Initial Version 1.0
1837 --
1838 -- End of Comments --
1839 PROCEDURE DELETE_MTBF_DATA (
1840 p_api_version IN NUMBER,
1841 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1842 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1843 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1844 p_module_type IN VARCHAR2,
1845 x_return_status OUT NOCOPY VARCHAR2,
1846 x_msg_count OUT NOCOPY NUMBER,
1847 x_msg_data OUT NOCOPY VARCHAR2,
1848 p_x_reliability_data_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE,
1849 p_mtbf_data_rec IN AHL_RA_SETUPS_PVT.RA_DEFINITION_DTLS_REC_TYPE) IS
1850
1851 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_MTBF_DATA';
1852 l_api_version CONSTANT NUMBER := 1.0;
1853 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
1854
1855 l_obj_version_num AHL_RA_CTR_ASSOCIATIONS.OBJECT_VERSION_NUMBER%TYPE;
1856 l_ra_def_hdr_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_HDR_REC_TYPE DEFAULT p_x_reliability_data_rec;
1857 l_ra_def_dtl_rec AHL_RA_SETUPS_PVT.RA_DEFINITION_DTLS_REC_TYPE DEFAULT p_mtbf_data_rec;
1858 l_m_obj_version_num AHL_RA_DEFINITION_HDR.OBJECT_VERSION_NUMBER%TYPE;
1859
1860 BEGIN
1861
1862 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1863 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
1864 END IF;
1865
1866 -- Standard start of API savepoint
1867 SAVEPOINT DELETE_MTBF_DATA_SP;
1868
1869 -- Standard call to check for call compatibility
1870 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1871 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1872 END IF;
1873
1874 -- Initialize message list if p_init_msg_list is set to TRUE
1875 IF FND_API.To_Boolean(p_init_msg_list) THEN
1876 FND_MSG_PUB.Initialize;
1877 END IF;
1878
1879 x_return_status := FND_API.G_RET_STS_SUCCESS;
1880
1881 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1882 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_MTBF_DATA -------BEGIN-----------');
1883 END IF;
1884
1885 --Validate the Operation Flag
1886 IF ((l_ra_def_dtl_rec.OPERATION_FLAG IS NULL) OR (l_ra_def_dtl_rec.OPERATION_FLAG <> G_DML_DELETE)) THEN
1887 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1888 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
1889 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
1890 FND_MESSAGE.Set_Token('FIELD',l_ra_def_dtl_rec.OPERATION_FLAG);
1891 FND_MSG_PUB.ADD;
1892 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1893 END IF;
1894 END IF;
1895
1896 -- Validate input data in l_ra_def_dtl_rec
1897 -- A. l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID Cannot be NULL
1898 -- C. Object Version Number should not be NULL
1899 IF ((l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID IS NULL) OR
1900 (l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER IS NULL) OR
1901 (l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID is null AND l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID is null))THEN
1902 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1903 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- RA_DEFINITION_DTL_ID :' || l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID);
1904 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OVN :' || l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER);
1905 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- Master RA_DEFINITION_HDR_ID :' || l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID);
1906 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- Detail RA_DEFINITION_HDR_ID:' || l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1907 END IF;
1908 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1909 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.D_RA_DEF_DET_DATA');
1910 FND_MSG_PUB.ADD;
1911 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1912 END IF;
1913
1914 --Check that both the HDR_ID is same in both the master and child records.
1915 IF ((l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID is not null AND l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID IS NOT NULL) AND
1916 (l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID <> l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID)) THEN
1917 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1918 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID MASTER-'||l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID);
1919 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - RA_DEFINITION_HDR_ID CHILD-'||l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1920 END IF;
1921 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
1922 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.D_RA_DEF_DTL_DATA');
1923 FND_MSG_PUB.ADD;
1924 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1925 END IF;
1926
1927 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1928 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Default RA_DEFINITION_HDR_ID in child rec from header rec and vice-versa- if passed as null. -- ');
1929 END IF;
1930
1931 -- Default RA_DEFINITION_HDR_ID in child rec from header rec - if passed as null.
1932 IF l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID IS NULL THEN
1933 l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID := l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID;
1934 ELSE
1935 l_ra_def_hdr_rec.RA_DEFINITION_HDR_ID := l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID;
1936 END IF;
1937
1938 -- Check for existence of record and fetch OVN for change record validation
1939 BEGIN
1940 SELECT OBJECT_VERSION_NUMBER
1941 INTO l_obj_version_num
1942 FROM AHL_RA_DEFINITION_DTLS
1943 WHERE RA_DEFINITION_DTL_ID = l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID
1944 FOR UPDATE OF object_version_number NOWAIT;
1945
1946 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1947 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB : ' || l_obj_version_num);
1948 END IF;
1949
1950 EXCEPTION
1951 WHEN NO_DATA_FOUND THEN
1952 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1953 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID);
1954 END IF;
1955 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
1956 FND_MSG_PUB.ADD;
1957 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1958 END;
1959
1960 -- Validate input data in l_ra_def_dtl_rec
1961 -- A. RECORD MUST NOT HAVE CHANGED. i.e. object_version_number should not change.
1962 IF l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER <> l_obj_version_num THEN
1963 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1964 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || l_ra_def_dtl_rec.OBJECT_VERSION_NUMBER);
1965 END IF;
1966 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
1967 FND_MSG_PUB.ADD;
1968 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1969 END IF;
1970
1971 -- Check for existence of record and fetch OVN of Master Rec for change record validation and bump up
1972 BEGIN
1973 SELECT OBJECT_VERSION_NUMBER
1974 INTO l_m_obj_version_num
1975 FROM AHL_RA_DEFINITION_HDR
1976 WHERE RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID
1977 FOR UPDATE OF object_version_number nowait;
1978
1979 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1980 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB OF MASTER: ' || l_m_obj_version_num);
1981 END IF;
1982
1983 EXCEPTION
1984 WHEN NO_DATA_FOUND THEN
1985 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1986 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master DATA DOES NOT EXISTS -- ERROR ... ' || l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID);
1987 END IF;
1988 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
1989 FND_MSG_PUB.ADD;
1990 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
1991 END;
1992
1993 -- Validate input data in p_x_reliability_data_rec
1994 -- A. RECORD SHOULD NOT HAVE CHANGED. i.e. object_version_number should not change.
1995 -- Child Locking Check is implemented for Setup Data - When Child Is edited/inserted/deleted OVN of Master is bumped up
1996 IF l_m_obj_version_num <> l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER THEN
1997 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1998 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master Record has changed : OVN passed : ' || l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER);
1999 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Master Record has changed : OVN in db : ' || l_m_obj_version_num);
2000 END IF;
2001 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
2002 FND_MSG_PUB.ADD;
2003 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2004 END IF;
2005
2006 -- Delete Record from AHL_RA_DEFINITION_DTLS
2007 DELETE AHL_RA_DEFINITION_DTLS
2008 WHERE RA_DEFINITION_DTL_ID = l_ra_def_dtl_rec.RA_DEFINITION_DTL_ID;
2009
2010 l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER := l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER + 1;
2011
2012 -- Update Object Version Number of Master Record are Inserting child record.
2013 UPDATE AHL_RA_DEFINITION_HDR
2014 SET OBJECT_VERSION_NUMBER = l_ra_def_hdr_rec.OBJECT_VERSION_NUMBER
2015 WHERE RA_DEFINITION_HDR_ID = l_ra_def_dtl_rec.RA_DEFINITION_HDR_ID;
2016
2017 p_x_reliability_data_rec := l_ra_def_hdr_rec;
2018
2019 -- Standard check for p_commit
2020 IF FND_API.To_Boolean (p_commit) THEN
2021 COMMIT;
2022 END IF;
2023
2024 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2025 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_MTBF_DATA -------END-----------');
2026 END IF;
2027
2028 -- Standard call to get message count and if count is 1, get message
2029 FND_MSG_PUB.Count_And_Get
2030 ( p_count => x_msg_count,
2031 p_data => x_msg_data,
2032 p_encoded => fnd_api.g_false);
2033
2034 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
2035 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
2036 END IF;
2037
2038 EXCEPTION
2039 WHEN FND_API.G_EXC_ERROR THEN
2040 x_return_status := FND_API.G_RET_STS_ERROR;
2041 Rollback to DELETE_MTBF_DATA_SP;
2042 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2043 p_data => x_msg_data,
2044 p_encoded => fnd_api.g_false);
2045
2046 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2047 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2048 Rollback to DELETE_MTBF_DATA_SP;
2049 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2050 p_data => x_msg_data,
2051 p_encoded => fnd_api.g_false);
2052
2053 WHEN OTHERS THEN
2054 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2055 Rollback to DELETE_MTBF_DATA_SP;
2056 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2057 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
2058 p_procedure_name => 'DELETE_MTBF_DATA',
2059 p_error_text => SUBSTR(SQLERRM,1,240));
2060 END IF;
2061 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2062 p_data => x_msg_data,
2063 p_encoded => fnd_api.g_false);
2064
2065 END DELETE_MTBF_DATA;
2066
2067
2068
2069 -- Start of Comments --
2070 --
2071 -- Procedure name : CREATE_COUNTER_ASSOC
2072 -- Type : Private
2073 -- Function : This API would create the setup data for Reliability Framework in AHL_RA_CTR_ASSOCIATIONS
2074 -- Pre-reqs :
2075 --
2076 -- Standard IN Parameters :
2077 -- p_api_version IN NUMBER Required
2078 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
2079 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
2080 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
2081 --
2082 -- Standard OUT Parameters :
2083 -- x_return_status OUT VARCHAR2 Required
2084 -- x_msg_count OUT NUMBER Required
2085 -- x_msg_data OUT VARCHAR2 Required
2086 --
2087 -- CREATE_COUNTER_ASSOC Parameters :
2088 -- p_x_counter_assoc_rec IN OUT RA_COUNTER_ASSOC_REC_TYPE Required
2089 --
2090 -- Version :
2091 -- Initial Version 1.0
2092 --
2093 -- End of Comments --
2094 PROCEDURE CREATE_COUNTER_ASSOC (
2095 p_api_version IN NUMBER,
2096 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2097 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2098 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2099 p_module_type IN VARCHAR2,
2100 x_return_status OUT NOCOPY VARCHAR2,
2101 x_msg_count OUT NOCOPY NUMBER,
2102 x_msg_data OUT NOCOPY VARCHAR2,
2103 p_x_counter_assoc_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_COUNTER_ASSOC_REC_TYPE) IS
2104
2105 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_COUNTER_ASSOC';
2106 l_api_version CONSTANT NUMBER := 1.0;
2107 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
2108
2109 l_counter_assoc_rec AHL_RA_SETUPS_PVT.RA_COUNTER_ASSOC_REC_TYPE DEFAULT p_x_counter_assoc_rec;
2110 l_dummy VARCHAR2(1);
2111 l_new_cou_name CSI_COUNTER_TEMPLATE_VL.NAME%TYPE := NULL;
2112 l_overhaul_cou_name CSI_COUNTER_TEMPLATE_VL.NAME%TYPE := NULL;
2113 l_new_cou_uom CSI_COUNTER_TEMPLATE_VL.UOM_CODE%TYPE := NULL;
2114 l_overhaul_cou_uom CSI_COUNTER_TEMPLATE_VL.UOM_CODE%TYPE := NULL;
2115
2116 BEGIN
2117
2118 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
2119 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
2120 END IF;
2121
2122 -- Standard start of API savepoint
2123 SAVEPOINT CREATE_COUNTER_ASSOC_SP;
2124
2125 -- Standard call to check for call compatibility
2126 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2127 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2128 END IF;
2129
2130 -- Initialize message list if p_init_msg_list is set to TRUE
2131 IF FND_API.To_Boolean(p_init_msg_list) THEN
2132 FND_MSG_PUB.Initialize;
2133 END IF;
2134
2135 x_return_status := FND_API.G_RET_STS_SUCCESS;
2136
2137 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2138 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_COUNTER_ASSOC -------BEGIN-----------');
2139 END IF;
2140
2141
2142 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2143 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Parameters Passed --');
2144 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_counter_assoc_rec.OPERATION_FLAG -- '||l_counter_assoc_rec.OPERATION_FLAG);
2145 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_counter_assoc_rec.SINCE_NEW_COUNTER_ID -- '||l_counter_assoc_rec.SINCE_NEW_COUNTER_ID);
2146 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID -- '||l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID);
2147 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_counter_assoc_rec.DESCRIPTION -- '||l_counter_assoc_rec.DESCRIPTION);
2148 END IF;
2149
2150 IF ((l_counter_assoc_rec.OPERATION_FLAG IS NULL) OR (l_counter_assoc_rec.OPERATION_FLAG <> G_DML_CREATE)) THEN
2151 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2152 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
2153 END IF;
2154 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
2155 FND_MESSAGE.Set_Token('FIELD',l_counter_assoc_rec.OPERATION_FLAG);
2156 FND_MSG_PUB.ADD;
2157 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2158 END IF;
2159
2160 --Mandatory validation for the Since New Counter
2161 IF(l_counter_assoc_rec.SINCE_NEW_COUNTER_ID is null) THEN
2162 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2163 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_COU_DATA');
2164 FND_MSG_PUB.ADD;
2165 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2166 END IF;
2167
2168
2169 --Validate value of the since new counter passed
2170 BEGIN
2171 -- Bug 4913954 : Perf Fixes.
2172 -- Since we are using reference to cs_counter_groups with a join condition TEMPLATE_FLAG = 'Y'
2173 -- i.e only counter templates, direct reference to cs_csi_counter_groups can be used here.
2174 SELECT templates.name,
2175 templates.uom_code
2176 INTO l_new_cou_name,
2177 l_new_cou_uom
2178 FROM cs_csi_counter_groups cg,
2179 csi_counter_template_vl templates
2180 WHERE templates.counter_id = l_counter_assoc_rec.SINCE_NEW_COUNTER_ID
2181 AND cg.template_flag = 'Y'
2182 AND templates.group_id = cg.counter_group_id
2183 AND trunc(sysdate) < trunc(nvl(templates.end_date_active,sysdate+1));
2184 --Did not add the start date check above as this is setup and we might want to
2185 --define associations for counters that might get activated in future.
2186
2187 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2188 fnd_log.string(fnd_log.level_statement,l_full_name,'-- SINCE_NEW_COUNTER_ID Validated Successfully--');
2189 END IF;
2190
2191 EXCEPTION
2192 WHEN NO_DATA_FOUND THEN
2193 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2194 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - SINCE_NEW_COUNTER_ID -' || l_counter_assoc_rec.SINCE_NEW_COUNTER_ID);
2195 END IF;
2196 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2197 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_COU_DATA');
2198 FND_MSG_PUB.ADD;
2199 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2200 END;
2201
2202 --Validate Since overhaul counter id passed
2203 IF(l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID IS NOT NULL) THEN
2204 BEGIN
2205 -- Bug 4913954 : Perf Fixes.
2206 -- Since we are using reference to cs_counter_groups with a join condition TEMPLATE_FLAG = 'Y'
2207 -- i.e only counter templates, direct reference to cs_csi_counter_groups can be used here.
2208 SELECT templates.name,
2209 templates.uom_code
2210 INTO l_overhaul_cou_name,
2211 l_overhaul_cou_uom
2212 FROM cs_csi_counter_groups cg,
2213 csi_counter_template_vl templates
2214 WHERE templates.counter_id = l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID
2215 AND cg.template_flag = 'Y'
2216 AND templates.group_id = cg.counter_group_id
2217 AND trunc(sysdate) < trunc(nvl(templates.end_date_active,sysdate+1));
2218 --Did not add the start date check above as this is setup and we might want to
2219 --define associations for counters that might get activated in future.
2220
2221 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2222 fnd_log.string(fnd_log.level_statement,l_full_name,'-- SINCE_OVERHAUL_COUNTER_ID Validated Successfully--');
2223 END IF;
2224
2225 EXCEPTION
2226 WHEN NO_DATA_FOUND THEN
2227 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2228 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - SINCE_OVERHAUL_COUNTER_ID -' || l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID);
2229 END IF;
2230 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2231 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_COU_DATA');
2232 FND_MSG_PUB.ADD;
2233 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2234 END;
2235 END IF;
2236
2237
2238 --A since counter cannot be declared new and overhaul at the same time
2239 IF(l_counter_assoc_rec.SINCE_NEW_COUNTER_ID IS NOT NULL AND l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID IS NOT NULL) THEN
2240 IF(l_counter_assoc_rec.SINCE_NEW_COUNTER_ID = l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID) THEN
2241 FND_MESSAGE.Set_Name('AHL','AHL_RA_NEW_OHAUL_COU_SAME');
2242 FND_MESSAGE.Set_Token('COUNTER', l_new_cou_name);
2243 FND_MSG_PUB.ADD;
2244 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2245 END IF;
2246 END IF;
2247
2248 --UOM of Since New and Since Overhaul Counters should be same
2249 --The check below makes sense only when there is a overhaul counter defined in the association.
2250 IF(l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID IS NOT NULL) THEN
2251 IF(l_new_cou_uom IS NOT NULL and l_overhaul_cou_uom IS NOT NULL) THEN
2252 IF(l_new_cou_uom <> l_overhaul_cou_uom) THEN
2253 FND_MESSAGE.Set_Name('AHL','AHL_RA_NEW_OHAUL_UOM_DIFF');
2254 FND_MESSAGE.Set_Token('NEW_COUNTER', l_new_cou_name);
2255 FND_MESSAGE.Set_Token('OHAUL_COUNTER', l_overhaul_cou_name);
2256 FND_MESSAGE.Set_Token('NEW_COU_UOM', l_new_cou_uom);
2257 FND_MESSAGE.Set_Token('OHAUL_COU_UOM', l_overhaul_cou_uom);
2258 FND_MSG_PUB.ADD;
2259 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2260 END IF;
2261 END IF;
2262 END IF;
2263
2264 --A since New Counter should not have been previously declared as overhaul counter.
2265 BEGIN
2266 SELECT 'Y'
2267 INTO l_dummy
2268 FROM dual
2269 WHERE EXISTS(SELECT 'X'
2270 FROM AHL_RA_CTR_ASSOCIATIONS
2271 WHERE since_overhaul_counter_id = l_counter_assoc_rec.SINCE_NEW_COUNTER_ID);
2272
2273 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2274 fnd_log.string(fnd_log.level_statement,l_full_name,'Validation Failure: This since new counter is already declared as overhaul - SINCE_NEW_COUNTER_ID -' || l_counter_assoc_rec.SINCE_NEW_COUNTER_ID);
2275 END IF;
2276
2277 FND_MESSAGE.Set_Name('AHL','AHL_RA_NEW_COU_DEF_OHAUL');
2278 FND_MESSAGE.Set_Token('COUNTER', l_new_cou_name);
2279 FND_MSG_PUB.ADD;
2280 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2281
2282 EXCEPTION
2283 WHEN NO_DATA_FOUND THEN
2284 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2285 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Sucess: This since new counter is not declared as an overhaul counter already --' || l_counter_assoc_rec.SINCE_NEW_COUNTER_ID);
2286 END IF;
2287 END;
2288
2289 --A since Overhaul Counter should not have been declared previously as a new counter.
2290 IF(l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID IS NOT NULL) THEN
2291 BEGIN
2292 SELECT 'Y'
2293 INTO l_dummy
2294 FROM dual
2295 WHERE EXISTS(SELECT 'X'
2296 FROM AHL_RA_CTR_ASSOCIATIONS
2297 WHERE since_new_counter_id = l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID);
2298
2299 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2300 fnd_log.string(fnd_log.level_statement,l_full_name,'--Validation Failure: This since new counter is already declared as overhaul - SINCE_OVERHAUL_COUNTER_ID -' || l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID);
2301 END IF;
2302
2303 FND_MESSAGE.Set_Name('AHL','AHL_RA_OHAUL_COU_DEF_NEW');
2304 FND_MESSAGE.Set_Token('COUNTER', l_overhaul_cou_name);
2305 FND_MSG_PUB.ADD;
2306 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2307
2308 EXCEPTION
2309 WHEN NO_DATA_FOUND THEN
2310 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2311 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Sucess: This since ohaul counter is not declared as a new counter previously --' || l_counter_assoc_rec.SINCE_NEW_COUNTER_ID);
2312 END IF;
2313 END;
2314 END IF;
2315
2316
2317 --Duplicate record validation
2318 BEGIN
2319 SELECT 'Y'
2320 INTO l_dummy
2321 FROM dual
2322 WHERE EXISTS(SELECT 'X'
2323 FROM AHL_RA_CTR_ASSOCIATIONS counters
2324 WHERE SINCE_NEW_COUNTER_ID = l_counter_assoc_rec.SINCE_NEW_COUNTER_ID
2325 AND nvl(SINCE_OVERHAUL_COUNTER_ID,-1) = nvl(l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID,-1));
2326
2327 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2328 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Failuure: Duplicate Counter Association exists-- SINCE_NEW_COUNTER_NAME - '|| l_new_cou_name ||'- SINCE_OVERHAUL_COUNTER_NAME -' || l_overhaul_cou_name);
2329 END IF;
2330
2331 FND_MESSAGE.Set_Name('AHL','AHL_RA_DUP_COU_ASSOC');
2332 FND_MESSAGE.Set_Token('NEW_COUNTER',l_new_cou_name );
2333 FND_MESSAGE.Set_Token('OHAUL_COUNTER', l_overhaul_cou_name);
2334 FND_MSG_PUB.ADD;
2335 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2336
2337 EXCEPTION
2338 WHEN NO_DATA_FOUND THEN
2339 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2340 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Validation Successful: No Duplicate Counter Associations--');
2341 END IF;
2342 END;
2343
2344 -- Initialize RA_COUNTER_ASSOCIATION_ID to sequence next val for insert
2345 SELECT AHL_RA_CTR_ASSOCIATIONS_S.NEXTVAL into l_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID from dual;
2346
2347 -- Initialize object version number to 1
2348 l_counter_assoc_rec.OBJECT_VERSION_NUMBER := 1;
2349
2350 -- Intialize who column info
2351 l_counter_assoc_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
2352 l_counter_assoc_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
2353 l_counter_assoc_rec.CREATED_BY := fnd_global.user_id;
2354 l_counter_assoc_rec.CREATION_DATE := sysdate;
2355 l_counter_assoc_rec.LAST_UPDATE_DATE := sysdate;
2356
2357 -- Initialize security group id
2358 l_counter_assoc_rec.SECURITY_GROUP_ID := null;
2359
2360 --Insert the record into AHL_RA_CTR_ASSOCIATIONS
2361 INSERT INTO AHL_RA_CTR_ASSOCIATIONS
2362 (
2363 RA_COUNTER_ASSOCIATION_ID,
2364 SINCE_NEW_COUNTER_ID,
2365 SINCE_OVERHAUL_COUNTER_ID,
2366 DESCRIPTION,
2367 OBJECT_VERSION_NUMBER,
2368 SECURITY_GROUP_ID,
2369 CREATION_DATE,
2370 CREATED_BY,
2371 LAST_UPDATE_DATE,
2372 LAST_UPDATED_BY,
2373 LAST_UPDATE_LOGIN,
2374 ATTRIBUTE_CATEGORY,
2375 ATTRIBUTE1,
2376 ATTRIBUTE2,
2377 ATTRIBUTE3,
2378 ATTRIBUTE4,
2379 ATTRIBUTE5,
2380 ATTRIBUTE6,
2381 ATTRIBUTE7,
2382 ATTRIBUTE8,
2383 ATTRIBUTE9,
2384 ATTRIBUTE10,
2385 ATTRIBUTE11,
2386 ATTRIBUTE12,
2387 ATTRIBUTE13,
2388 ATTRIBUTE14,
2389 ATTRIBUTE15
2390 )
2391 VALUES
2392 (
2393 l_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID,
2394 l_counter_assoc_rec.SINCE_NEW_COUNTER_ID,
2395 l_counter_assoc_rec.SINCE_OVERHAUL_COUNTER_ID,
2396 l_counter_assoc_rec.DESCRIPTION,
2397 l_counter_assoc_rec.OBJECT_VERSION_NUMBER,
2398 l_counter_assoc_rec.SECURITY_GROUP_ID,
2399 l_counter_assoc_rec.CREATION_DATE,
2400 l_counter_assoc_rec.CREATED_BY,
2401 l_counter_assoc_rec.LAST_UPDATE_DATE,
2402 l_counter_assoc_rec.LAST_UPDATED_BY,
2403 l_counter_assoc_rec.LAST_UPDATE_LOGIN,
2404 l_counter_assoc_rec.ATTRIBUTE_CATEGORY,
2405 l_counter_assoc_rec.ATTRIBUTE1,
2406 l_counter_assoc_rec.ATTRIBUTE2,
2407 l_counter_assoc_rec.ATTRIBUTE3,
2408 l_counter_assoc_rec.ATTRIBUTE4,
2409 l_counter_assoc_rec.ATTRIBUTE5,
2410 l_counter_assoc_rec.ATTRIBUTE6,
2411 l_counter_assoc_rec.ATTRIBUTE7,
2412 l_counter_assoc_rec.ATTRIBUTE8,
2413 l_counter_assoc_rec.ATTRIBUTE9,
2414 l_counter_assoc_rec.ATTRIBUTE10,
2415 l_counter_assoc_rec.ATTRIBUTE11,
2416 l_counter_assoc_rec.ATTRIBUTE12,
2417 l_counter_assoc_rec.ATTRIBUTE13,
2418 l_counter_assoc_rec.ATTRIBUTE14,
2419 l_counter_assoc_rec.ATTRIBUTE15
2420 );
2421
2422 -- Set the Out Param
2423 p_x_counter_assoc_rec := l_counter_assoc_rec;
2424
2425 -- Standard check for p_commit
2426 IF FND_API.To_Boolean (p_commit) THEN
2427 COMMIT;
2428 END IF;
2429
2430
2431 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2432 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_COUNTER_ASSOC --END--');
2433 END IF;
2434
2435
2436 -- Standard call to get message count and if count is 1, get message
2437 FND_MSG_PUB.Count_And_Get
2438 ( p_count => x_msg_count,
2439 p_data => x_msg_data,
2440 p_encoded => fnd_api.g_false);
2441
2442 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
2443 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
2444 END IF;
2445
2446 EXCEPTION
2447 WHEN FND_API.G_EXC_ERROR THEN
2448 x_return_status := FND_API.G_RET_STS_ERROR;
2449 Rollback to CREATE_COUNTER_ASSOC_SP;
2450 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2451 p_data => x_msg_data,
2452 p_encoded => fnd_api.g_false);
2453
2454 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2455 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2456 Rollback to CREATE_COUNTER_ASSOC_SP;
2457 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2458 p_data => x_msg_data,
2459 p_encoded => fnd_api.g_false);
2460
2461 WHEN OTHERS THEN
2462 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2463 Rollback to CREATE_COUNTER_ASSOC_SP;
2464 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2465 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
2466 p_procedure_name => 'CREATE_COUNTER_ASSOC',
2467 p_error_text => SUBSTR(SQLERRM,1,240));
2468 END IF;
2469 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2470 p_data => x_msg_data,
2471 p_encoded => fnd_api.g_false);
2472
2473 END CREATE_COUNTER_ASSOC;
2474
2475 -- Start of Comments --
2476 --
2477 -- Procedure name : DELETE_COUNTER_ASSOC
2478 -- Type : Private
2479 -- Function : This API would delete the setup data for Reliability Framework in AHL_RA_CTR_ASSOCIATIONS
2480 -- Pre-reqs :
2481 --
2482 -- Standard IN Parameters :
2483 -- p_api_version IN NUMBER Required
2484 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
2485 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
2486 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
2487 --
2488 -- Standard OUT Parameters :
2489 -- x_return_status OUT VARCHAR2 Required
2490 -- x_msg_count OUT NUMBER Required
2491 -- x_msg_data OUT VARCHAR2 Required
2492 --
2493 -- DELETE_COUNTER_ASSOC Parameters :
2494 -- p_counter_assoc_rec IN OUT RA_COUNTER_ASSOC_REC_TYPE Required
2495 --
2496 -- Version :
2497 -- Initial Version 1.0
2498 --
2499 -- End of Comments --
2500 PROCEDURE DELETE_COUNTER_ASSOC (
2501 p_api_version IN NUMBER,
2502 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2503 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2504 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2505 p_module_type IN VARCHAR2,
2506 x_return_status OUT NOCOPY VARCHAR2,
2507 x_msg_count OUT NOCOPY NUMBER,
2508 x_msg_data OUT NOCOPY VARCHAR2,
2509 p_counter_assoc_rec IN AHL_RA_SETUPS_PVT.RA_COUNTER_ASSOC_REC_TYPE) IS
2510
2511 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_COUNTER_ASSOC';
2512 l_api_version CONSTANT NUMBER := 1.0;
2513 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
2514
2515 l_obj_version_num AHL_RA_CTR_ASSOCIATIONS.OBJECT_VERSION_NUMBER%TYPE;
2516
2517 BEGIN
2518
2519 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
2520 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
2521 END IF;
2522
2523 -- Standard start of API savepoint
2524 SAVEPOINT DELETE_COUNTER_ASSOC_SP;
2525
2526 -- Standard call to check for call compatibility
2527 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2528 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2529 END IF;
2530
2531 -- Initialize message list if p_init_msg_list is set to TRUE
2532 IF FND_API.To_Boolean(p_init_msg_list) THEN
2533 FND_MSG_PUB.Initialize;
2534 END IF;
2535
2536 x_return_status := FND_API.G_RET_STS_SUCCESS;
2537
2538 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2539 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_COUNTER_ASSOC -------BEGIN-----------');
2540 END IF;
2541
2542 IF ((p_counter_assoc_rec.OPERATION_FLAG IS NULL) OR (p_counter_assoc_rec.OPERATION_FLAG <> G_DML_DELETE)) THEN
2543 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2544 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
2545 END IF;
2546 FND_MESSAGE.Set_Name('AHL','AHL_COM_INVALID_DML_REC');
2547 FND_MESSAGE.Set_Token('FIELD',p_counter_assoc_rec.OPERATION_FLAG);
2548 FND_MSG_PUB.ADD;
2549 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2550 END IF;
2551
2552 -- Validate input data in p_counter_assoc_rec
2553 -- A. p_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID Cannot be NULL
2554 -- C. Object Version Number should not be NULL
2555 IF ((p_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID IS NULL) OR
2556 (p_counter_assoc_rec.OBJECT_VERSION_NUMBER IS NULL))THEN
2557 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2558 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- RA_COUNTER_ASSOCIATION_ID :' || p_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID);
2559 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OVN :' || p_counter_assoc_rec.OBJECT_VERSION_NUMBER);
2560 END IF;
2561 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2562 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.D_COU_DATA');
2563 FND_MSG_PUB.ADD;
2564 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2565 END IF;
2566
2567 -- Check for existence of record and fetch OVN for change record validation
2568 BEGIN
2569 SELECT OBJECT_VERSION_NUMBER
2570 INTO l_obj_version_num
2571 FROM AHL_RA_CTR_ASSOCIATIONS
2572 WHERE RA_COUNTER_ASSOCIATION_ID = p_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID
2573 FOR UPDATE OF object_version_number NOWAIT;
2574
2575 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2576 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB : ' || l_obj_version_num);
2577 END IF;
2578
2579 EXCEPTION
2580 WHEN NO_DATA_FOUND THEN
2581 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2582 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || p_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID);
2583 END IF;
2584 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
2585 FND_MSG_PUB.ADD;
2586 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2587 END;
2588
2589 -- Validate input data in p_counter_assoc_rec
2590 -- A. RECORD MUST NOT HAVE CHANGED. i.e. object_version_number should not change.
2591 IF p_counter_assoc_rec.OBJECT_VERSION_NUMBER <> l_obj_version_num THEN
2592 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2593 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || p_counter_assoc_rec.OBJECT_VERSION_NUMBER);
2594 END IF;
2595 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
2596 FND_MSG_PUB.ADD;
2597 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2598 END IF;
2599
2600 -- Delete Record from AHL_RA_CTR_ASSOCIATIONS
2601 DELETE AHL_RA_CTR_ASSOCIATIONS
2602 WHERE RA_COUNTER_ASSOCIATION_ID = p_counter_assoc_rec.RA_COUNTER_ASSOCIATION_ID;
2603
2604 -- Standard check for p_commit
2605 IF FND_API.To_Boolean (p_commit) THEN
2606 COMMIT;
2607 END IF;
2608
2609 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2610 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_COUNTER_ASSOC -------END-----------');
2611 END IF;
2612
2613 -- Standard call to get message count and if count is 1, get message
2614 FND_MSG_PUB.Count_And_Get
2615 ( p_count => x_msg_count,
2616 p_data => x_msg_data,
2617 p_encoded => fnd_api.g_false);
2618
2619 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
2620 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','At the start of PLSQL procedure');
2621 END IF;
2622
2623 EXCEPTION
2624 WHEN FND_API.G_EXC_ERROR THEN
2625 x_return_status := FND_API.G_RET_STS_ERROR;
2626 Rollback to DELETE_COUNTER_ASSOC_SP;
2627 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2628 p_data => x_msg_data,
2629 p_encoded => fnd_api.g_false);
2630
2631 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2632 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2633 Rollback to DELETE_COUNTER_ASSOC_SP;
2634 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2635 p_data => x_msg_data,
2636 p_encoded => fnd_api.g_false);
2637
2638 WHEN OTHERS THEN
2639 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2640 Rollback to DELETE_COUNTER_ASSOC_SP;
2641 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2642 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
2643 p_procedure_name => 'DELETE_COUNTER_ASSOC',
2644 p_error_text => SUBSTR(SQLERRM,1,240));
2645 END IF;
2646 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
2647 p_data => x_msg_data,
2648 p_encoded => fnd_api.g_false);
2649
2650 END DELETE_COUNTER_ASSOC;
2651
2652 -- Start of Comments --
2653 --
2654 -- Procedure name : CREATE_FCT_ASSOC_DATA
2655 -- Type : Private
2656 -- Function : This API would create the setup data for Reliability Framework in AHL_RA_FCT_ASSOCIATIONS
2657 -- Pre-reqs :
2658 --
2659 -- Standard IN Parameters :
2660 -- p_api_version IN NUMBER Required
2661 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
2662 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
2663 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
2664 --
2665 -- Standard OUT Parameters :
2666 -- x_return_status OUT VARCHAR2 Required
2667 -- x_msg_count OUT NUMBER Required
2668 -- x_msg_data OUT VARCHAR2 Required
2669 --
2670 -- CREATE_FCT_ASSOC_DATA Parameters :
2671 -- p_x_fct_assoc_rec IN OUT RA_FCT_ASSOC_REC_TYPE Required
2672 --
2673 -- Version :
2674 -- Initial Version 1.0
2675 --
2676 -- End of Comments --
2677 PROCEDURE CREATE_FCT_ASSOC_DATA (
2678 p_api_version IN NUMBER,
2679 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2680 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2681 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2682 p_module_type IN VARCHAR2,
2683 x_return_status OUT NOCOPY VARCHAR2,
2684 x_msg_count OUT NOCOPY NUMBER,
2685 x_msg_data OUT NOCOPY VARCHAR2,
2686 p_x_fct_assoc_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_FCT_ASSOC_REC_TYPE) IS
2687
2688 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FCT_ASSOC_DATA';
2689 l_api_version CONSTANT NUMBER := 1.0;
2690 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
2691
2692 l_fct_assoc_rec AHL_RA_SETUPS_PVT.RA_FCT_ASSOC_REC_TYPE DEFAULT p_x_fct_assoc_rec;
2693 l_dummy VARCHAR2(1);
2694
2695 BEGIN
2696
2697 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
2698 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
2699 END IF;
2700
2701 -- Standard start of API savepoint
2702 SAVEPOINT CREATE_FCT_ASSOC_DATA_SP;
2703
2704 -- Standard call to check for call compatibility
2705 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2706 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2707 END IF;
2708
2709 -- Initialize message list if p_init_msg_list is set to TRUE
2710 IF FND_API.To_Boolean(p_init_msg_list) THEN
2711 FND_MSG_PUB.Initialize;
2712 END IF;
2713
2714 x_return_status := FND_API.G_RET_STS_SUCCESS;
2715
2716 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2717 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_FCT_ASSOC_DATA -------BEGIN-----------');
2718 END IF;
2719
2720 -- Validate input fct association data in p_x_fct_assoc_rec
2721 -- Note :: l_fct_assoc_rec has been defaulted to p_x_fct_assoc_rec in declaration
2722 -- A. ASSOCIATION_TYPE_CODE Cannot be NULL
2723 -- B. ASSOCIATION_TYPE_CODE should be in ('ASSOC_HISTORICAL','ASSOC_MTBF')
2724 -- C. ORGANIZATION_ID cannot be NULL
2725 -- D. FORECAST_DESIGNATOR cannot be NULL
2726 -- E. If ASSOCIATION_TYPE_CODE = ASSOC_HISTORICAL then PROBABILITY_FROM and PROBABILITY_TO are mandatory.
2727 -- F. OPERATIONS_FLAG should be C
2728
2729 IF ((l_fct_assoc_rec.ASSOCIATION_TYPE_CODE IS NULL) OR
2730 (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE NOT IN ('ASSOC_HISTORICAL','ASSOC_MTBF')) OR
2731 (l_fct_assoc_rec.ORGANIZATION_ID IS NULL) OR
2732 (l_fct_assoc_rec.FORECAST_DESIGNATOR IS NULL) OR
2733 ((l_fct_assoc_rec.OPERATION_FLAG IS NULL) OR (l_fct_assoc_rec.OPERATION_FLAG <> G_DML_CREATE))) THEN
2734
2735 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2736 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
2737 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.FORECAST_DESIGNATOR ---- '||l_fct_assoc_rec.FORECAST_DESIGNATOR);
2738 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.ORGANIZATION_ID -------- '||l_fct_assoc_rec.ORGANIZATION_ID);
2739 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.ASSOCIATION_TYPE_CODE -- '||l_fct_assoc_rec.ASSOCIATION_TYPE_CODE);
2740 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.OPERATION_FLAG --------- '||l_fct_assoc_rec.OPERATION_FLAG);
2741 END IF;
2742
2743 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2744 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_FCT_DATA');
2745 FND_MSG_PUB.ADD;
2746 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2747
2748 END IF;
2749
2750 IF (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE = 'ASSOC_HISTORICAL' AND (l_fct_assoc_rec.PROBABILITY_FROM IS NULL OR
2751 l_fct_assoc_rec.PROBABILITY_TO IS NULL)) THEN
2752 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2753 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
2754 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
2755 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
2756 END IF;
2757
2758 FND_MESSAGE.Set_Name('AHL','AHL_RA_HIST_PROB_NULL');
2759 FND_MSG_PUB.ADD;
2760 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2761
2762 END IF;
2763
2764
2765 -- Validate value of ORGANIZATION_ID passed
2766 -- Bug 4913954 : Perf Fix
2767 -- Removed non-required reference to ORG_ORGANIZATION_DEFINTIONS below
2768 -- See earlier Query in 120.11
2769 BEGIN
2770 SELECT 'Y'
2771 INTO l_dummy
2772 FROM DUAL
2773 WHERE EXISTS(SELECT 'X'
2774 FROM MTL_PARAMETERS MP
2775 WHERE MP.ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
2776 AND MP.EAM_ENABLED_FLAG='Y');
2777
2778 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2779 fnd_log.string(fnd_log.level_statement,l_full_name,'-- ORGANIZATION_ID Validated Successfully--');
2780 END IF;
2781
2782
2783 EXCEPTION
2784 WHEN NO_DATA_FOUND THEN
2785 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2786 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - ORGANIZATION_ID -' || l_fct_assoc_rec.ORGANIZATION_ID);
2787 END IF;
2788 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2789 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_FCT_DATA');
2790 FND_MSG_PUB.ADD;
2791 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
2792 END;
2793
2794 -- Validate value of FORECAST_DESIGNATOR passed
2795 BEGIN
2796 SELECT 'Y'
2797 INTO l_dummy
2798 FROM DUAL
2799 WHERE EXISTS(SELECT 'X'
2800 FROM mrp_forecast_designators_v MRP
2801 WHERE MRP.FORECAST_DESIGNATOR = l_fct_assoc_rec.FORECAST_DESIGNATOR
2802 AND MRP.ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
2803 AND MRP.FORECAST_SET IS NOT NULL);
2804
2805 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2806 fnd_log.string(fnd_log.level_statement,l_full_name,'-- FORECAST_DESIGNATOR Validated Successfully--');
2807 END IF;
2808
2809
2810 EXCEPTION
2811 WHEN NO_DATA_FOUND THEN
2812 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2813 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - FORECAST_DESIGNATOR -' || l_fct_assoc_rec.FORECAST_DESIGNATOR);
2814 END IF;
2815 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
2816 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.C_FCT_DATA');
2817 FND_MSG_PUB.ADD;
2818 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2819 END;
2820
2821
2822 -- When ASSOCIATION_TYPE_CODE = 'ASSOC_HISTORICAL'
2823 -- Validate PROBABILITY_FROM and PROBABILITY_TO passed
2824 -- 1. Neither PROBABILITY_FROM nor PROBABILITY_TO can be passed less than zero or greater than 100
2825 -- 2. PROBABILITY_TO should be >= PROBABILITY_FROM
2826 -- 3. records with Overlapping values of probablities should not exist for the Org Id and forecast designator in AHL_RA_FCT_ASSOCIATIONS
2827 IF (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE = 'ASSOC_HISTORICAL') THEN
2828
2829 -- 1. Neither PROBABILITY_FROM nor PROBABILITY_TO can be passed less than zero or greater than 100
2830 IF (l_fct_assoc_rec.PROBABILITY_FROM < 0 OR
2831 l_fct_assoc_rec.PROBABILITY_FROM > 100 OR
2832 l_fct_assoc_rec.PROBABILITY_TO < 0 OR
2833 l_fct_assoc_rec.PROBABILITY_TO > 100) THEN
2834
2835 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2836 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - less than zero or greater than 100 -');
2837 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
2838 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
2839 END IF;
2840
2841 FND_MESSAGE.Set_Name('AHL','AHL_RA_PROB_VALID_RANGE');
2842 FND_MSG_PUB.ADD;
2843 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2844 END IF;
2845
2846 -- 2. PROBABILITY_TO should be >= PROBABILITY_FROM
2847 IF (NOT(l_fct_assoc_rec.PROBABILITY_FROM <= l_fct_assoc_rec.PROBABILITY_TO)) THEN
2848
2849 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2850 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - PROBABILITY_TO should be >= PROBABILITY_FROM -');
2851 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
2852 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
2853 END IF;
2854
2855 FND_MESSAGE.Set_Name('AHL','AHL_RA_PROB_RELATIONSHIP');
2856 FND_MSG_PUB.ADD;
2857 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2858 END IF;
2859
2860 -- 3. records with Overlapping values of probablities should not exist for the Org Id in AHL_RA_FCT_ASSOCIATIONS
2861 BEGIN
2862 SELECT 'Y'
2863 INTO l_dummy
2864 FROM DUAL
2865 WHERE EXISTS (SELECT 'X'
2866 FROM AHL_RA_FCT_ASSOCIATIONS
2867 WHERE ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
2868 -- Bug 4998568 :: Probability Values Should not overlap irrespective of the Fct Designator
2869 -- AND FORECAST_DESIGNATOR = l_fct_assoc_rec.FORECAST_DESIGNATOR
2870 AND ASSOCIATION_TYPE_CODE = l_fct_assoc_rec.ASSOCIATION_TYPE_CODE
2871 AND ((PROBABILITY_FROM = l_fct_assoc_rec.PROBABILITY_FROM) OR
2872 (PROBABILITY_FROM > l_fct_assoc_rec.PROBABILITY_FROM AND PROBABILITY_FROM < l_fct_assoc_rec.PROBABILITY_TO) OR
2873 (PROBABILITY_FROM <= l_fct_assoc_rec.PROBABILITY_FROM AND PROBABILITY_TO >= l_fct_assoc_rec.PROBABILITY_TO) OR
2874 (PROBABILITY_TO > l_fct_assoc_rec.PROBABILITY_FROM AND PROBABILITY_TO < l_fct_assoc_rec.PROBABILITY_TO) OR
2875 (PROBABILITY_FROM = 100 AND l_fct_assoc_rec.PROBABILITY_TO = 100) OR -- if <> to 100 is defined .. then 100 to 100 is not allowed
2876 (PROBABILITY_TO = 100 AND l_fct_assoc_rec.PROBABILITY_FROM = 100))); -- if 100 to 100 is defined .. then <> to 100 is not allowed
2877
2878
2879 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2880 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - Probability Overlap -');
2881 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
2882 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
2883 END IF;
2884
2885 FND_MESSAGE.Set_Name('AHL','AHL_RA_PROB_OVERLAP');
2886 FND_MSG_PUB.ADD;
2887 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2888
2889 EXCEPTION
2890 WHEN NO_DATA_FOUND THEN
2891 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
2892 fnd_log.string(fnd_log.level_statement,l_full_name,'- HISTORICAL - No OverLap -- SUCCESS -- ');
2893 END IF;
2894 END;
2895
2896 ELSIF (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE = 'ASSOC_MTBF') THEN
2897 -- Elsif When ASSOCIATION_TYPE_CODE = 'ASSOC_MTBF'
2898 -- Validate for Duplicate records in AHL_RA_FCT_ASSOCIATIONS since only one MTBF Association
2899 -- Record can be created for each Organization - irrespective of the Forecast Selected.
2900 BEGIN
2901 SELECT 'Y'
2902 INTO l_dummy
2903 FROM DUAL
2904 WHERE EXISTS (SELECT 'X'
2905 FROM AHL_RA_FCT_ASSOCIATIONS
2906 WHERE ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
2907 AND ASSOCIATION_TYPE_CODE = l_fct_assoc_rec.ASSOCIATION_TYPE_CODE);
2908
2909 IF (fnd_log.leVEL_STATEMENT >= fnd_log.g_current_runtime_level)THEN
2910 fnd_log.stRING(FND_LOG.Level_statement,l_full_name,'-- Invalid Param Passed - DUPLICATE FOUNT - MTBF -');
2911 fnd_log.stRING(FND_LOG.Level_statement,l_full_name,'-- l_fct_assoc_rec.ORGANIZATION_ID ------- '||l_fct_assoc_rec.ORGANIZATION_ID);
2912 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.FORECAST_DESIGNATOR --------- '||l_fct_assoc_rec.FORECAST_DESIGNATOR);
2913 END IF;
2914
2915 FND_MESSAGE.Set_Name('AHL','AHL_RA_FCT_ASSOC_MTBF_DUP');
2916 FND_MSG_PUB.ADD;
2917 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2918
2919 EXCEPTION
2920 WHEN No_Data_Found THEN
2921 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2922 fnd_log.string(fnd_log.level_statement,l_full_name,'- MTBF - No Duplicate -- SUCCESS -- ');
2923 END IF;
2924 END;
2925
2926 -- Explicitly Null out PROBABILITY_FROM and PROBABILITY_TO
2927 l_fct_assoc_rec.PROBABILITY_FROM := NULL;
2928 l_fct_assoc_rec.PROBABILITY_TO := NULL;
2929
2930 END IF;
2931
2932 -- Initialize RA_FCT_ASSOCIATION_ID to sequence next val for insert
2933 SELECT AHL_RA_FCT_ASSOCIATIONS_S.NEXTVAL INTO l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID FROM DUAL;
2934
2935 -- Initialize object version number to 1
2936 l_fct_assoc_rec.OBJECT_VERSION_NUMBER := 1;
2937
2938 -- Intialize who column info
2939 l_fct_assoc_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
2940 l_fct_assoc_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
2941 l_fct_assoc_rec.CREATED_BY := fnd_global.user_id;
2942 l_fct_assoc_rec.CREATION_DATE := sysdate;
2943 l_fct_assoc_rec.LAST_UPDATE_DATE := sysdate;
2944
2945 -- Initialize security group id
2946 l_fct_assoc_rec.SECURITY_GROUP_ID := NULL;
2947
2948 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2949 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Derived RA_FCT_ASSOCIATION_ID -- ' || l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID);
2950 END IF;
2951
2952 -- INSERT Forecast Associations Data in AHL_RA_FCT_ASSOCIATIONS
2953 INSERT INTO AHL_RA_FCT_ASSOCIATIONS(RA_FCT_ASSOCIATION_ID,FORECAST_DESIGNATOR,ASSOCIATION_TYPE_CODE,ORGANIZATION_ID,PROBABILITY_FROM, PROBABILITY_TO,
2954 OBJECT_VERSION_NUMBER,SECURITY_GROUP_ID,CREATION_DATE,CREATED_BY,LAST_UPDATE_DATE,LAST_UPDATED_BY,
2955 LAST_UPDATE_LOGIN,ATTRIBUTE_CATEGORY,ATTRIBUTE1,ATTRIBUTE2,ATTRIBUTE3,ATTRIBUTE4,ATTRIBUTE5,ATTRIBUTE6,ATTRIBUTE7,
2956 ATTRIBUTE8,ATTRIBUTE9,ATTRIBUTE10,ATTRIBUTE11,ATTRIBUTE12,ATTRIBUTE13,ATTRIBUTE14,ATTRIBUTE15)
2957 VALUES(
2958 l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID -- RA_FCT_ASSOCIATION_ID
2959 ,l_fct_assoc_rec.FORECAST_DESIGNATOR -- FORECAST_DESIGNATOR
2960 ,l_fct_assoc_rec.ASSOCIATION_TYPE_CODE -- ASSOCIATION_TYPE_CODE
2961 ,l_fct_assoc_rec.ORGANIZATION_ID -- ORGANIZATION_ID
2962 ,l_fct_assoc_rec.PROBABILITY_FROM -- PROBABILITY_FROM
2963 ,l_fct_assoc_rec.PROBABILITY_TO -- PROBABILITY_TO
2964 ,l_fct_assoc_rec.OBJECT_VERSION_NUMBER -- OBJECT_VERSION_NUMBER
2965 ,l_fct_assoc_rec.SECURITY_GROUP_ID -- SECURITY_GROUP_ID
2966 ,l_fct_assoc_rec.CREATION_DATE -- CREATION_DATE
2967 ,l_fct_assoc_rec.CREATED_BY -- CREATED_BY
2968 ,l_fct_assoc_rec.LAST_UPDATE_DATE -- LAST_UPDATE_DATE
2969 ,l_fct_assoc_rec.LAST_UPDATED_BY -- LAST_UPDATED_BY
2970 ,l_fct_assoc_rec.LAST_UPDATE_LOGIN -- LAST_UPDATE_LOGIN
2971 ,l_fct_assoc_rec.ATTRIBUTE_CATEGORY -- ATTRIBUTE_CATEGORY
2972 ,l_fct_assoc_rec.ATTRIBUTE1 -- ATTRIBUTE1
2973 ,l_fct_assoc_rec.ATTRIBUTE2 -- ATTRIBUTE2
2974 ,l_fct_assoc_rec.ATTRIBUTE3 -- ATTRIBUTE3
2975 ,l_fct_assoc_rec.ATTRIBUTE4 -- ATTRIBUTE4
2976 ,l_fct_assoc_rec.ATTRIBUTE5 -- ATTRIBUTE5
2977 ,l_fct_assoc_rec.ATTRIBUTE6 -- ATTRIBUTE6
2978 ,l_fct_assoc_rec.ATTRIBUTE7 -- ATTRIBUTE7
2979 ,l_fct_assoc_rec.ATTRIBUTE8 -- ATTRIBUTE8
2980 ,l_fct_assoc_rec.ATTRIBUTE9 -- ATTRIBUTE9
2981 ,l_fct_assoc_rec.ATTRIBUTE10 -- ATTRIBUTE10
2982 ,l_fct_assoc_rec.ATTRIBUTE11 -- ATTRIBUTE11
2983 ,l_fct_assoc_rec.ATTRIBUTE12 -- ATTRIBUTE12
2984 ,l_fct_assoc_rec.ATTRIBUTE13 -- ATTRIBUTE13
2985 ,l_fct_assoc_rec.ATTRIBUTE14 -- ATTRIBUTE14
2986 ,l_fct_assoc_rec.ATTRIBUTE15 -- ATTRIBUTE15
2987 );
2988
2989 -- Set the Out Param
2990 p_x_fct_assoc_rec := l_fct_assoc_rec;
2991
2992 -- Standard check for p_commit
2993 IF FND_API.To_Boolean (p_commit) THEN
2994 COMMIT;
2995 END IF;
2996
2997 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
2998 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- CREATE_FCT_ASSOC_DATA -------END-----------');
2999 END IF;
3000
3001 -- Standard call to get message count and if count is 1, get message
3002 FND_MSG_PUB.Count_And_Get
3003 ( p_count => x_msg_count,
3004 p_data => x_msg_data,
3005 p_encoded => fnd_api.g_false);
3006
3007 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
3008 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
3009 END IF;
3010
3011 EXCEPTION
3012 WHEN FND_API.G_EXC_ERROR THEN
3013 x_return_status := FND_API.G_RET_STS_ERROR;
3014 ROLLBACK TO CREATE_FCT_ASSOC_DATA_SP;
3015 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3016 p_data => x_msg_data,
3017 p_encoded => fnd_api.g_false);
3018
3019 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3020 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3021 ROLLBACK TO CREATE_FCT_ASSOC_DATA_SP;
3022 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3023 p_data => x_msg_data,
3024 p_encoded => fnd_api.g_false);
3025
3026 WHEN OTHERS THEN
3027 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3028 ROLLBACK TO CREATE_FCT_ASSOC_DATA_SP;
3029 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3030 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3031 p_procedure_name => 'CREATE_FCT_ASSOC_DATA',
3032 p_error_text => SUBSTR(SQLERRM,1,240));
3033 END IF;
3034 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3035 p_data => x_msg_data,
3036 p_encoded => fnd_api.g_false);
3037
3038 END CREATE_FCT_ASSOC_DATA;
3039
3040
3041
3042 -- Start of Comments --
3043 --
3044 -- Procedure name : UPDATE_FCT_ASSOC_DATA
3045 -- Type : Private
3046 -- Function : This API would update the setup data for Reliability Framework in AHL_RA_FCT_ASSOCIATIONS
3047 -- Update Logic to be used - NULL : Do not update
3048 -- G_MISS_XXXX : Nullify
3049 -- Valid Values : Update
3050 -- Pre-reqs :
3051 --
3052 -- Standard IN Parameters :
3053 -- p_api_version IN NUMBER Required
3054 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
3055 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
3056 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
3057 --
3058 -- Standard OUT Parameters :
3059 -- x_return_status OUT VARCHAR2 Required
3060 -- x_msg_count OUT NUMBER Required
3061 -- x_msg_data OUT VARCHAR2 Required
3062 --
3063 -- UPDATE_FCT_ASSOC_DATA Parameters :
3064 -- p_x_fct_assoc_rec IN OUT RA_FCT_ASSOC_REC_TYPE Required
3065 --
3066 -- Version :
3067 -- Initial Version 1.0
3068 --
3069 -- End of Comments --
3070 PROCEDURE UPDATE_FCT_ASSOC_DATA (
3071 p_api_version IN NUMBER,
3072 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3073 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3074 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3075 p_module_type IN VARCHAR2,
3076 x_return_status OUT NOCOPY VARCHAR2,
3077 x_msg_count OUT NOCOPY NUMBER,
3078 x_msg_data OUT NOCOPY VARCHAR2,
3079 p_x_fct_assoc_rec IN OUT NOCOPY AHL_RA_SETUPS_PVT.RA_FCT_ASSOC_REC_TYPE) IS
3080
3081 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FCT_ASSOC_DATA';
3082 l_api_version CONSTANT NUMBER := 1.0;
3083 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
3084
3085 l_fct_assoc_rec AHL_RA_SETUPS_PVT.RA_FCT_ASSOC_REC_TYPE DEFAULT p_x_fct_assoc_rec;
3086 l_obj_version_num AHL_RA_FCT_ASSOCIATIONS.OBJECT_VERSION_NUMBER%TYPE;
3087 l_dummy varchar2(1);
3088
3089 BEGIN
3090
3091 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
3092 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
3093 END IF;
3094
3095 -- Standard start of API savepoint
3096 SAVEPOINT UPDATE_FCT_ASSOC_DATA_SP;
3097
3098 -- Standard call to check for call compatibility
3099 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3100 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3101 END IF;
3102
3103 -- Initialize message list if p_init_msg_list is set to TRUE
3104 IF FND_API.To_Boolean(p_init_msg_list) THEN
3105 FND_MSG_PUB.Initialize;
3106 END IF;
3107
3108 x_return_status := FND_API.G_RET_STS_SUCCESS;
3109
3110 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3111 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- UPDATE_FCT_ASSOC_DATA -------BEGIN-----------');
3112 END IF;
3113
3114 -- Instead of FND_API.G_MISS_NUM, "-1001" is being passed from UI to indicate nullifying of Probability from
3115 -- and Probability To Columns. Translation being done below.
3116 IF (l_fct_assoc_rec.PROBABILITY_FROM = -1001) THEN
3117 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3118 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Translating -1001 to G_MISS_NUM - FROM');
3119 END IF;
3120 l_fct_assoc_rec.PROBABILITY_FROM := FND_API.G_MISS_NUM;
3121 END IF;
3122
3123 IF (l_fct_assoc_rec.PROBABILITY_TO = -1001) THEN
3124 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3125 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Translating -1001 to G_MISS_NUM - TO');
3126 END IF;
3127 l_fct_assoc_rec.PROBABILITY_TO := FND_API.G_MISS_NUM;
3128 END IF;
3129
3130 -- Validate input data in l_fct_assoc_rec
3131 -- A. l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID Cannot be NULL
3132 -- B. OPERATIONS_FLAG should be U
3133 -- C. Object Version Number should not be NULL
3134 IF ((l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID IS NULL) OR
3135 ((l_fct_assoc_rec.OPERATION_FLAG IS NULL) OR (l_fct_assoc_rec.OPERATION_FLAG <> G_DML_UPDATE)) OR
3136 (l_fct_assoc_rec.OBJECT_VERSION_NUMBER IS NULL OR l_fct_assoc_rec.OBJECT_VERSION_NUMBER = FND_API.G_MISS_NUM))THEN
3137 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3138 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- RA_FCT_ASSOCIATION_ID :' || l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID);
3139 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OP FLAG :' || l_fct_assoc_rec.OPERATION_FLAG);
3140 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OVN :' || l_fct_assoc_rec.OBJECT_VERSION_NUMBER);
3141 END IF;
3142 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
3143 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_FCST_DATA');
3144 FND_MSG_PUB.ADD;
3145 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3146 END IF;
3147
3148 -- Check for existence of record and fetch details for change record validation and data defaulting
3149 BEGIN
3150 SELECT OBJECT_VERSION_NUMBER
3151 ,DECODE(l_fct_assoc_rec.FORECAST_DESIGNATOR,FND_API.G_MISS_CHAR,NULL
3152 ,NULL,FORECAST_DESIGNATOR
3153 ,l_fct_assoc_rec.FORECAST_DESIGNATOR)
3154 ,DECODE(l_fct_assoc_rec.ASSOCIATION_TYPE_CODE,FND_API.G_MISS_CHAR,NULL
3155 ,NULL,ASSOCIATION_TYPE_CODE
3156 ,l_fct_assoc_rec.ASSOCIATION_TYPE_CODE)
3157 ,DECODE(l_fct_assoc_rec.ORGANIZATION_ID,FND_API.G_MISS_NUM,NULL
3158 ,NULL,ORGANIZATION_ID
3159 ,l_fct_assoc_rec.ORGANIZATION_ID)
3160 ,DECODE(l_fct_assoc_rec.PROBABILITY_FROM,FND_API.G_MISS_NUM,NULL
3161 ,NULL,PROBABILITY_FROM
3162 ,l_fct_assoc_rec.PROBABILITY_FROM)
3163 ,DECODE(l_fct_assoc_rec.PROBABILITY_TO,FND_API.G_MISS_NUM,NULL
3164 ,NULL,PROBABILITY_TO
3165 ,l_fct_assoc_rec.PROBABILITY_TO)
3166 INTO l_obj_version_num
3167 ,l_fct_assoc_rec.FORECAST_DESIGNATOR
3168 ,l_fct_assoc_rec.ASSOCIATION_TYPE_CODE
3169 ,l_fct_assoc_rec.ORGANIZATION_ID
3170 ,l_fct_assoc_rec.PROBABILITY_FROM
3171 ,l_fct_assoc_rec.PROBABILITY_TO
3172 FROM AHL_RA_FCT_ASSOCIATIONS
3173 WHERE RA_FCT_ASSOCIATION_ID = l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID
3174 FOR UPDATE OF object_version_number NOWAIT;
3175
3176 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3177 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB : ' || l_obj_version_num);
3178 END IF;
3179
3180 EXCEPTION
3181 WHEN NO_DATA_FOUND THEN
3182 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3183 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID);
3184 END IF;
3185 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
3186 FND_MSG_PUB.ADD;
3187 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3188 END;
3189
3190
3191 -- Validate input data in p_x_fct_assoc_rec
3192 -- A. RECORD MUST NOT HAVE CHANGED. i.e. object_version_number should not change.
3193 IF l_fct_assoc_rec.OBJECT_VERSION_NUMBER <> l_obj_version_num THEN
3194 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3195 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || l_fct_assoc_rec.OBJECT_VERSION_NUMBER);
3196 END IF;
3197 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
3198 FND_MSG_PUB.ADD;
3199 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3200 END IF;
3201
3202 -- Due to the decode statements used above the l_fct_assoc_rec record will not contain the final state to data that will exist in the db.
3203 -- Validate input fct association data in l_fct_assoc_rec
3204 -- A. ASSOCIATION_TYPE_CODE Cannot be NULL
3205 -- B. If ASSOCIATION_TYPE_CODE should be in ('ASSOC_HISTORICAL','ASSOC_MTBF')
3206 -- C. ORGANIZATION_ID cannot be NULL
3207 -- D. FORECAST_DESIGNATOR cannot be NULL
3208 -- E. If ASSOCIATION_TYPE_CODE = ASSOC_HISTORICAL then PROBABILITY_FROM and PROBABILITY_TO are mandatory.
3209 -- F. OPERATIONS_FLAG should be U
3210
3211 IF (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE = 'ASSOC_HISTORICAL' AND (l_fct_assoc_rec.PROBABILITY_FROM IS NULL OR
3212 l_fct_assoc_rec.PROBABILITY_TO IS NULL)) THEN
3213 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3214 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
3215 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
3216 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
3217 END IF;
3218
3219 FND_MESSAGE.Set_Name('AHL','AHL_RA_HIST_PROB_NULL');
3220 FND_MSG_PUB.ADD;
3221 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3222
3223 END IF;
3224
3225 IF ((l_fct_assoc_rec.ASSOCIATION_TYPE_CODE IS NULL) OR
3226 (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE NOT IN ('ASSOC_HISTORICAL','ASSOC_MTBF')) OR
3227 (l_fct_assoc_rec.ORGANIZATION_ID IS NULL) OR
3228 (l_fct_assoc_rec.FORECAST_DESIGNATOR IS NULL) OR
3229 ((l_fct_assoc_rec.OPERATION_FLAG IS NULL) OR (l_fct_assoc_rec.OPERATION_FLAG <> G_DML_UPDATE))) THEN
3230
3231 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3232 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed --');
3233 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
3234 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
3235 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.FORECAST_DESIGNATOR ---- '||l_fct_assoc_rec.FORECAST_DESIGNATOR);
3236 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.ORGANIZATION_ID -------- '||l_fct_assoc_rec.ORGANIZATION_ID);
3237 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.ASSOCIATION_TYPE_CODE -- '||l_fct_assoc_rec.ASSOCIATION_TYPE_CODE);
3238 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.OPERATION_FLAG --------- '||l_fct_assoc_rec.OPERATION_FLAG);
3239 END IF;
3240
3241 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
3242 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_FCT_DATA');
3243 FND_MSG_PUB.ADD;
3244 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3245
3246 END IF;
3247
3248 -- Validate value of ORGANIZATION_ID passed
3249 BEGIN
3250 -- Bug 4913954 : Perf Fix
3251 -- Removed non-required reference to ORG_ORGANIZATION_DEFINTIONS below
3252 -- See earlier Query in 120.11
3253 SELECT 'Y'
3254 INTO l_dummy
3255 FROM DUAL
3256 WHERE EXISTS(SELECT 'X'
3257 FROM MTL_PARAMETERS MP
3258 WHERE MP.ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
3259 AND MP.EAM_ENABLED_FLAG='Y');
3260
3261 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3262 fnd_log.string(fnd_log.level_statement,l_full_name,'-- ORGANIZATION_ID Validated Successfully--');
3263 END IF;
3264
3265
3266 EXCEPTION
3267 WHEN NO_DATA_FOUND THEN
3268 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3269 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - ORGANIZATION_ID -' || l_fct_assoc_rec.ORGANIZATION_ID);
3270 END IF;
3271 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
3272 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_FCT_DATA');
3273 FND_MSG_PUB.ADD;
3274 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3275 END;
3276
3277 -- Validate value of FORECAST_DESIGNATOR passed
3278 BEGIN
3279 SELECT 'Y'
3280 INTO l_dummy
3281 FROM DUAL
3282 WHERE EXISTS(SELECT 'X'
3283 FROM mrp_forecast_designators_v MRP
3284 WHERE MRP.FORECAST_DESIGNATOR = l_fct_assoc_rec.FORECAST_DESIGNATOR
3285 AND MRP.ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
3286 AND MRP.FORECAST_SET IS NOT NULL);
3287
3288 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3289 fnd_log.string(fnd_log.level_statement,l_full_name,'-- FORECAST_DESIGNATOR Validated Successfully--');
3290 END IF;
3291
3292
3293 EXCEPTION
3294 WHEN NO_DATA_FOUND THEN
3295 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3296 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - FORECAST_DESIGNATOR -' || l_fct_assoc_rec.FORECAST_DESIGNATOR);
3297 END IF;
3298 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
3299 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.U_FCT_DATA');
3300 FND_MSG_PUB.ADD;
3301 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3302 END;
3303
3304
3305 -- When ASSOCIATION_TYPE_CODE = 'ASSOC_HISTORICAL'
3306 -- Validate PROBABILITY_FROM and PROBABILITY_TO passed
3307 -- 1. Neither PROBABILITY_FROM nor PROBABILITY_TO can be passed less than zero or greater than 100
3308 -- 2. PROBABILITY_TO should be >= PROBABILITY_FROM
3309 -- 3. records with Overlapping values of probablities should not exist for the Org Id in AHL_RA_FCT_ASSOCIATIONS
3310 IF (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE = 'ASSOC_HISTORICAL') THEN
3311
3312 -- 1. Neither PROBABILITY_FROM nor PROBABILITY_TO can be passed less than zero or greater than 100
3313 IF (l_fct_assoc_rec.PROBABILITY_FROM < 0 OR
3314 l_fct_assoc_rec.PROBABILITY_FROM > 100 OR
3315 l_fct_assoc_rec.PROBABILITY_TO < 0 OR
3316 l_fct_assoc_rec.PROBABILITY_TO > 100) THEN
3317
3318 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3319 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - less than zero or greater than 100 -');
3320 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
3321 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
3322 END IF;
3323
3324 FND_MESSAGE.Set_Name('AHL','AHL_RA_PROB_VALID_RANGE');
3325 FND_MSG_PUB.ADD;
3326 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3327 END IF;
3328
3329 -- 2. PROBABILITY_TO should be >= PROBABILITY_FROM
3330 IF (NOT(l_fct_assoc_rec.PROBABILITY_FROM <= l_fct_assoc_rec.PROBABILITY_TO)) THEN
3331
3332 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3333 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - PROBABILITY_TO should be >= PROBABILITY_FROM -');
3334 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
3335 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
3336 END IF;
3337
3338 FND_MESSAGE.Set_Name('AHL','AHL_RA_PROB_RELATIONSHIP');
3339 FND_MSG_PUB.ADD;
3340 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3341 END IF;
3342
3343 -- 3. records with Overlapping values of probablities should not exist for the Org Id and forecast designator in AHL_RA_FCT_ASSOCIATIONS
3344 BEGIN
3345 SELECT 'Y'
3346 INTO l_dummy
3347 FROM DUAL
3348 WHERE EXISTS (SELECT 'X'
3349 FROM AHL_RA_FCT_ASSOCIATIONS
3350 WHERE ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
3351 -- Bug 4998568 :: Probability Values Should not overlap irrespective of the Fct Designator
3352 -- AND FORECAST_DESIGNATOR = l_fct_assoc_rec.FORECAST_DESIGNATOR
3353 AND ASSOCIATION_TYPE_CODE = l_fct_assoc_rec.ASSOCIATION_TYPE_CODE
3354 AND ((PROBABILITY_FROM = l_fct_assoc_rec.PROBABILITY_FROM) OR
3355 (PROBABILITY_FROM > l_fct_assoc_rec.PROBABILITY_FROM AND PROBABILITY_FROM < l_fct_assoc_rec.PROBABILITY_TO) OR
3356 (PROBABILITY_FROM <= l_fct_assoc_rec.PROBABILITY_FROM AND PROBABILITY_TO >= l_fct_assoc_rec.PROBABILITY_TO) OR
3357 (PROBABILITY_TO > l_fct_assoc_rec.PROBABILITY_FROM AND PROBABILITY_TO < l_fct_assoc_rec.PROBABILITY_TO) OR
3358 (PROBABILITY_FROM = 100 AND l_fct_assoc_rec.PROBABILITY_TO = 100) OR-- if <> to 100 is defined .. then 100 to 100 is not allowed
3359 (PROBABILITY_TO = 100 AND l_fct_assoc_rec.PROBABILITY_FROM = 100)) -- if 100 to 100 is defined .. then <> to 100 is not allowed
3360 AND RA_FCT_ASSOCIATION_ID <> l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID); -- Update of the ame record to bump OVN is allowed
3361
3362
3363 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3364 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed - Probability Overlap -');
3365 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_FROM ------- '||l_fct_assoc_rec.PROBABILITY_FROM);
3366 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.PROBABILITY_TO --------- '||l_fct_assoc_rec.PROBABILITY_TO);
3367 END IF;
3368
3369 FND_MESSAGE.Set_Name('AHL','AHL_RA_PROB_OVERLAP');
3370 FND_MSG_PUB.ADD;
3371 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3372
3373 EXCEPTION
3374 WHEN NO_DATA_FOUND THEN
3375 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3376 fnd_log.string(fnd_log.level_statement,l_full_name,'- HISTORICAL - No OverLap -- SUCCESS -- ');
3377 END IF;
3378 END;
3379
3380 ELSIF (l_fct_assoc_rec.ASSOCIATION_TYPE_CODE = 'ASSOC_MTBF') THEN
3381 -- Elsif When ASSOCIATION_TYPE_CODE = 'ASSOC_MTBF'
3382 -- Validate for Duplicate records in AHL_RA_FCT_ASSOCIATIONS since only one MTBF Association
3383 -- Record can be created for each Organization - irrespective of the Forecast Selected.
3384 BEGIN
3385 SELECT 'Y'
3386 INTO l_dummy
3387 FROM DUAL
3388 WHERE EXISTS (SELECT 'X'
3389 FROM AHL_RA_FCT_ASSOCIATIONS
3390 WHERE ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID
3391 AND ASSOCIATION_TYPE_CODE = l_fct_assoc_rec.ASSOCIATION_TYPE_CODE
3392 AND RA_FCT_ASSOCIATION_ID <> l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID); -- Update of the ame record to bump OVN is allowed
3393
3394
3395 IF (fnd_log.leVEL_STATEMENT >= fnd_log.g_current_runtime_level)THEN
3396 fnd_log.stRING(FND_LOG.Level_statement,l_full_name,'-- Invalid Param Passed - DUPLICATE FOUNT - MTBF -');
3397 fnd_log.stRING(FND_LOG.Level_statement,l_full_name,'-- l_fct_assoc_rec.ORGANIZATION_ID ------- '||l_fct_assoc_rec.ORGANIZATION_ID);
3398 fnd_log.string(fnd_log.level_statement,l_full_name,'-- l_fct_assoc_rec.FORECAST_DESIGNATOR --------- '||l_fct_assoc_rec.FORECAST_DESIGNATOR);
3399 END IF;
3400
3401 FND_MESSAGE.Set_Name('AHL','AHL_RA_FCT_ASSOC_MTBF_DUP');
3402 FND_MSG_PUB.ADD;
3403 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3404
3405 EXCEPTION
3406 When No_Data_Found then
3407 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3408 fnd_log.string(fnd_log.level_statement,l_full_name,'- MTBF - No Duplicate -- SUCCESS -- ');
3409 END IF;
3410 END;
3411
3412 -- Explicitly Null out PROBABILITY_FROM and PROBABILITY_TO
3413 l_fct_assoc_rec.PROBABILITY_FROM := NULL;
3414 l_fct_assoc_rec.PROBABILITY_TO := NULL;
3415
3416 END IF;
3417
3418 -- Increment object version number
3419 l_fct_assoc_rec.OBJECT_VERSION_NUMBER := l_fct_assoc_rec.OBJECT_VERSION_NUMBER + 1;
3420
3421 -- Intialize who column info
3422 l_fct_assoc_rec.LAST_UPDATED_BY := fnd_global.USER_ID;
3423 l_fct_assoc_rec.LAST_UPDATE_LOGIN := fnd_global.LOGIN_ID;
3424 l_fct_assoc_rec.LAST_UPDATE_DATE := sysdate;
3425 l_fct_assoc_rec.CREATED_BY := fnd_global.user_id;
3426 l_fct_assoc_rec.CREATION_DATE := sysdate;
3427
3428 -- INSERT Forecast Associations Data in AHL_RA_FCT_ASSOCIATIONS
3429 UPDATE AHL_RA_FCT_ASSOCIATIONS
3430 SET FORECAST_DESIGNATOR = l_fct_assoc_rec.FORECAST_DESIGNATOR -- FORECAST_DESIGNATOR
3431 ,ASSOCIATION_TYPE_CODE = l_fct_assoc_rec.ASSOCIATION_TYPE_CODE -- ASSOCIATION_TYPE_CODE
3432 ,ORGANIZATION_ID = l_fct_assoc_rec.ORGANIZATION_ID -- ORGANIZATION_ID
3433 ,PROBABILITY_FROM = l_fct_assoc_rec.PROBABILITY_FROM -- PROBABILITY_FROM
3434 ,PROBABILITY_TO = l_fct_assoc_rec.PROBABILITY_TO -- PROBABILITY_TO
3435 ,OBJECT_VERSION_NUMBER = l_fct_assoc_rec.OBJECT_VERSION_NUMBER -- OBJECT_VERSION_NUMBER
3436 ,SECURITY_GROUP_ID = l_fct_assoc_rec.SECURITY_GROUP_ID -- SECURITY_GROUP_ID
3437 ,LAST_UPDATE_DATE = l_fct_assoc_rec.LAST_UPDATE_DATE -- LAST_UPDATE_DATE
3438 ,LAST_UPDATED_BY = l_fct_assoc_rec.LAST_UPDATED_BY -- LAST_UPDATED_BY
3439 ,LAST_UPDATE_LOGIN = l_fct_assoc_rec.LAST_UPDATE_LOGIN -- LAST_UPDATE_LOGIN
3440 ,ATTRIBUTE_CATEGORY = l_fct_assoc_rec.ATTRIBUTE_CATEGORY -- ATTRIBUTE_CATEGORY
3441 ,ATTRIBUTE1 = l_fct_assoc_rec.ATTRIBUTE1 -- ATTRIBUTE1
3442 ,ATTRIBUTE2 = l_fct_assoc_rec.ATTRIBUTE2 -- ATTRIBUTE2
3443 ,ATTRIBUTE3 = l_fct_assoc_rec.ATTRIBUTE3 -- ATTRIBUTE3
3444 ,ATTRIBUTE4 = l_fct_assoc_rec.ATTRIBUTE4 -- ATTRIBUTE4
3445 ,ATTRIBUTE5 = l_fct_assoc_rec.ATTRIBUTE5 -- ATTRIBUTE5
3446 ,ATTRIBUTE6 = l_fct_assoc_rec.ATTRIBUTE6 -- ATTRIBUTE6
3447 ,ATTRIBUTE7 = l_fct_assoc_rec.ATTRIBUTE7 -- ATTRIBUTE7
3448 ,ATTRIBUTE8 = l_fct_assoc_rec.ATTRIBUTE8 -- ATTRIBUTE8
3449 ,ATTRIBUTE9 = l_fct_assoc_rec.ATTRIBUTE9 -- ATTRIBUTE9
3450 ,ATTRIBUTE10 = l_fct_assoc_rec.ATTRIBUTE10 -- ATTRIBUTE10
3451 ,ATTRIBUTE11 = l_fct_assoc_rec.ATTRIBUTE11 -- ATTRIBUTE11
3452 ,ATTRIBUTE12 = l_fct_assoc_rec.ATTRIBUTE12 -- ATTRIBUTE12
3453 ,ATTRIBUTE13 = l_fct_assoc_rec.ATTRIBUTE13 -- ATTRIBUTE13
3454 ,ATTRIBUTE14 = l_fct_assoc_rec.ATTRIBUTE14 -- ATTRIBUTE14
3455 ,ATTRIBUTE15 = l_fct_assoc_rec.ATTRIBUTE15 -- ATTRIBUTE15
3456 WHERE RA_FCT_ASSOCIATION_ID = l_fct_assoc_rec.RA_FCT_ASSOCIATION_ID;
3457
3458 -- Set the Out Param
3459 p_x_fct_assoc_rec := l_fct_assoc_rec;
3460
3461 -- Standard check for p_commit
3462 IF FND_API.To_Boolean (p_commit) THEN
3463 COMMIT;
3464 END IF;
3465
3466 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3467 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- UPDATE_FCT_ASSOC_DATA -------END-----------');
3468 END IF;
3469
3470 -- Standard call to get message count and if count is 1, get message
3471 FND_MSG_PUB.Count_And_Get
3472 ( p_count => x_msg_count,
3473 p_data => x_msg_data,
3474 p_encoded => fnd_api.g_false);
3475
3476 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
3477 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
3478 END IF;
3479
3480 EXCEPTION
3481 WHEN FND_API.G_EXC_ERROR THEN
3482 x_return_status := FND_API.G_RET_STS_ERROR;
3483 Rollback to UPDATE_FCT_ASSOC_DATA_SP;
3484 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3485 p_data => x_msg_data,
3486 p_encoded => fnd_api.g_false);
3487
3488 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3490 Rollback to UPDATE_FCT_ASSOC_DATA_SP;
3491 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3492 p_data => x_msg_data,
3493 p_encoded => fnd_api.g_false);
3494
3495 WHEN OTHERS THEN
3496 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3497 Rollback to UPDATE_FCT_ASSOC_DATA_SP;
3498 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3499 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3500 p_procedure_name => 'UPDATE_FCT_ASSOC_DATA',
3501 p_error_text => SUBSTR(SQLERRM,1,240));
3502 END IF;
3503 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3504 p_data => x_msg_data,
3505 p_encoded => fnd_api.g_false);
3506
3507 END UPDATE_FCT_ASSOC_DATA;
3508
3509
3510
3511 -- Start of Comments --
3512 --
3513 -- Procedure name : DELETE_FCT_ASSOC_DATA
3514 -- Type : Private
3515 -- Function : This API would delete the setup data for Reliability Framework in AHL_RA_FCT_ASSOCIATIONS
3516 -- Pre-reqs :
3517 --
3518 -- Standard IN Parameters :
3519 -- p_api_version IN NUMBER Required
3520 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
3521 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
3522 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
3523 --
3524 -- Standard OUT Parameters :
3525 -- x_return_status OUT VARCHAR2 Required
3526 -- x_msg_count OUT NUMBER Required
3527 -- x_msg_data OUT VARCHAR2 Required
3528 --
3529 -- DELETE_FCT_ASSOC_DATA Parameters :
3530 -- p_fct_assoc_rec IN OUT RA_FCT_ASSOC_REC_TYPE Required
3531 --
3532 -- Version :
3533 -- Initial Version 1.0
3534 --
3535 -- End of Comments --
3536 PROCEDURE DELETE_FCT_ASSOC_DATA (
3537 p_api_version IN NUMBER,
3538 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3539 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3540 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3541 p_module_type IN VARCHAR2,
3542 x_return_status OUT NOCOPY VARCHAR2,
3543 x_msg_count OUT NOCOPY NUMBER,
3544 x_msg_data OUT NOCOPY VARCHAR2,
3545 p_fct_assoc_rec IN AHL_RA_SETUPS_PVT.RA_FCT_ASSOC_REC_TYPE) IS
3546
3547 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_FCT_ASSOC_DATA';
3548 l_api_version CONSTANT NUMBER := 1.0;
3549 L_FULL_NAME CONSTANT VARCHAR2(60) := 'ahl.plsql.'||G_PKG_NAME || '.' || L_API_NAME;
3550
3551 l_obj_version_num AHL_RA_FCT_ASSOCIATIONS.OBJECT_VERSION_NUMBER%TYPE;
3552
3553 BEGIN
3554
3555 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
3556 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.begin','At the start of PLSQL procedure');
3557 END IF;
3558
3559 -- Standard start of API savepoint
3560 SAVEPOINT DELETE_FCT_ASSOC_DATA_SP;
3561
3562 -- Standard call to check for call compatibility
3563 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3564 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3565 END IF;
3566
3567 -- Initialize message list if p_init_msg_list is set to TRUE
3568 IF FND_API.To_Boolean(p_init_msg_list) THEN
3569 FND_MSG_PUB.Initialize;
3570 END IF;
3571
3572 x_return_status := FND_API.G_RET_STS_SUCCESS;
3573
3574 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3575 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_FCT_ASSOC_DATA -------BEGIN-----------');
3576 END IF;
3577
3578 -- Validate input data in p_fct_assoc_rec
3579 -- A. p_fct_assoc_rec.RA_FCT_ASSOCIATION_ID Cannot be NULL
3580 -- B. OPERATIONS_FLAG should be D
3581 -- C. Object Version Number should not be NULL
3582 IF ((p_fct_assoc_rec.RA_FCT_ASSOCIATION_ID IS NULL) OR
3583 ((p_fct_assoc_rec.OPERATION_FLAG IS NULL) OR (p_fct_assoc_rec.OPERATION_FLAG <> G_DML_DELETE)) OR
3584 (p_fct_assoc_rec.OBJECT_VERSION_NUMBER IS NULL))THEN
3585 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3586 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- RA_FCT_ASSOCIATION_ID :' || p_fct_assoc_rec.RA_FCT_ASSOCIATION_ID);
3587 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OP FLAG :' || p_fct_assoc_rec.OPERATION_FLAG);
3588 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Invalid Param Passed -- OVN :' || p_fct_assoc_rec.OBJECT_VERSION_NUMBER);
3589 END IF;
3590 FND_MESSAGE.Set_Name('AHL','AHL_RA_INV_PARAM_PASSED');
3591 FND_MESSAGE.Set_Token('NAME','SETUP_PVT.D_FCST_DATA');
3592 FND_MSG_PUB.ADD;
3593 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3594 END IF;
3595
3596 -- Check for existence of record and fetch OVN for change record validation
3597 BEGIN
3598 SELECT OBJECT_VERSION_NUMBER
3599 INTO l_obj_version_num
3600 FROM AHL_RA_FCT_ASSOCIATIONS
3601 WHERE RA_FCT_ASSOCIATION_ID = p_fct_assoc_rec.RA_FCT_ASSOCIATION_ID
3602 FOR UPDATE OF object_version_number NOWAIT;
3603
3604 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3605 fnd_log.string(fnd_log.level_statement,l_full_name,'-- OBJECT VERSION NUMBER IN DB : ' || l_obj_version_num);
3606 END IF;
3607
3608 EXCEPTION
3609 WHEN NO_DATA_FOUND THEN
3610 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3611 fnd_log.string(fnd_log.level_statement,l_full_name,'-- DATA DOES NOT EXISTS -- ERROR ... ' || p_fct_assoc_rec.RA_FCT_ASSOCIATION_ID);
3612 END IF;
3613 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_DELETED');
3614 FND_MSG_PUB.ADD;
3615 Raise FND_API.G_EXC_UNEXPECTED_ERROR;
3616 END;
3617
3618 -- Validate input data in p_fct_assoc_rec
3619 -- A. RECORD MUST NOT HAVE CHANGED. i.e. object_version_number should not change.
3620 IF p_fct_assoc_rec.OBJECT_VERSION_NUMBER <> l_obj_version_num THEN
3621 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3622 fnd_log.string(fnd_log.level_statement,l_full_name,'-- Record has changed : OVN passed : ' || p_fct_assoc_rec.OBJECT_VERSION_NUMBER);
3623 END IF;
3624 FND_MESSAGE.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
3625 FND_MSG_PUB.ADD;
3626 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3627 END IF;
3628
3629 -- Delete Record from AHL_RA_FCT_ASSOCIATIONS
3630 DELETE AHL_RA_FCT_ASSOCIATIONS
3631 WHERE RA_FCT_ASSOCIATION_ID = p_fct_assoc_rec.RA_FCT_ASSOCIATION_ID;
3632
3633 -- Standard check for p_commit
3634 IF FND_API.To_Boolean (p_commit) THEN
3635 COMMIT;
3636 END IF;
3637
3638 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3639 fnd_log.string(fnd_log.level_statement,l_full_name,'DS -- PVT -- DELETE_FCT_ASSOC_DATA -------END-----------');
3640 END IF;
3641
3642 -- Standard call to get message count and if count is 1, get message
3643 FND_MSG_PUB.Count_And_Get
3644 ( p_count => x_msg_count,
3645 p_data => x_msg_data,
3646 p_encoded => fnd_api.g_false);
3647
3648 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
3649 fnd_log.string(fnd_log.level_procedure,L_FULL_NAME||'.end','Return Status = ' || x_return_status);
3650 END IF;
3651
3652 EXCEPTION
3653 WHEN FND_API.G_EXC_ERROR THEN
3654 x_return_status := FND_API.G_RET_STS_ERROR;
3655 ROLLBACK TO DELETE_FCT_ASSOC_DATA_SP;
3656 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3657 p_data => x_msg_data,
3658 p_encoded => fnd_api.g_false);
3659
3660 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3661 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3662 ROLLBACK TO DELETE_FCT_ASSOC_DATA_SP;
3663 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3664 p_data => x_msg_data,
3665 p_encoded => fnd_api.g_false);
3666
3667 WHEN OTHERS THEN
3668 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3669 ROLLBACK TO DELETE_FCT_ASSOC_DATA_SP;
3670 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3671 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3672 p_procedure_name => 'DELETE_FCT_ASSOC_DATA',
3673 p_error_text => SUBSTR(SQLERRM,1,240));
3674 END IF;
3675 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3676 p_data => x_msg_data,
3677 p_encoded => fnd_api.g_false);
3678
3679 END DELETE_FCT_ASSOC_DATA;
3680
3681 END AHL_RA_SETUPS_PVT;