[Home] [Help]
PACKAGE BODY: APPS.PV_ENTY_ATTR_VALUE_PVT
Source
1 PACKAGE BODY PV_Enty_Attr_Value_PVT AS
2 /* $Header: pvxveavb.pls 120.3 2005/11/07 11:51:29 amaram ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 -- PV_Enty_Attr_Value_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- End of Comments
14 -- ===============================================================
15
16
17 G_PKG_NAME CONSTANT VARCHAR2(30) := 'PV_Enty_Attr_Value_PVT';
18 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvxveavb.pls';
19
20 G_USER_ID NUMBER := NVL(FND_GLOBAL.USER_ID,-1);
21 G_LOGIN_ID NUMBER := NVL(FND_GLOBAL.CONC_LOGIN_ID,-1);
22
23 -- Hint: Primary key needs to be returned.
24 PROCEDURE Create_Attr_Value(
25 p_api_version_number IN NUMBER
26 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
27 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
28 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
29
30 ,x_return_status OUT NOCOPY VARCHAR2
31 ,x_msg_count OUT NOCOPY NUMBER
32 ,x_msg_data OUT NOCOPY VARCHAR2
33
34 ,p_enty_attr_val_rec IN enty_attr_val_rec_type := g_miss_enty_attr_val_rec
35 ,x_enty_attr_val_id OUT NOCOPY NUMBER
36 )
37
38
39 IS
40 l_api_name CONSTANT VARCHAR2(30) := 'Create_Attr_Value';
41 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
42 l_api_version_number CONSTANT NUMBER := 1.0;
43 l_return_status_full VARCHAR2(1);
44 l_object_version_number NUMBER := 1;
45 l_org_id NUMBER := FND_API.G_MISS_NUM;
46 l_enty_attr_val_id NUMBER;
47 l_dummy NUMBER;
48 l_enty_attr_val_rec enty_attr_val_rec_type := p_enty_attr_val_rec;
49
50 CURSOR c_id IS
51 SELECT PV_ENTY_ATTR_VALUES_s.NEXTVAL
52 FROM dual;
53
54 CURSOR c_id_exists (l_id IN NUMBER) IS
55 SELECT 1
56 FROM PV_ENTY_ATTR_VALUES
57 WHERE ENTY_ATTR_VAL_ID = l_id;
58
59 CURSOR c_get_enty_attr_value(cv_attribute_id NUMBER,cv_entity_id NUMBER, cv_entity VARCHAR2) IS
60 SELECT *
61 FROM PV_ENTY_ATTR_VALUES
62 WHERE attribute_id = cv_attribute_id and
63 entity_id = cv_entity_id and
64 entity = cv_entity and
65 latest_flag = 'Y';
66
67 CURSOR c_get_attr_details(cv_attribute_id NUMBER) IS
68 SELECT attribute_type,display_style,DECIMAL_POINTS,name
69 FROM PV_ATTRIBUTES_VL
70 WHERE attribute_id = cv_attribute_id
71 ;
72 l_already_exists VARCHAR2(1) := 'N';
73 l_attribute_type VARCHAR2(30);
74 l_display_style VARCHAR2(30);
75 l_meaning VARCHAR2(80);
76
77
78 BEGIN
79 -- Standard Start of API savepoint
80 SAVEPOINT Create_Attr_Value_PVT;
81
82 -- Standard call to check for call compatibility.
83 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
84 p_api_version_number,
85 l_api_name,
86 G_PKG_NAME)
87 THEN
88 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
89 END IF;
90
91 -- Initialize message list if p_init_msg_list is set to TRUE.
92 IF FND_API.to_Boolean( p_init_msg_list )
93 THEN
94 FND_MSG_PUB.initialize;
95 END IF;
96
97 -- Debug Message
98 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
99 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - start');
100 END IF;
101
102
103 -- Initialize API return status to SUCCESS
104 x_return_status := FND_API.G_RET_STS_SUCCESS;
105
106 -- Local variable initialization
107
108 IF p_enty_attr_val_rec.ENTY_ATTR_VAL_ID IS NULL OR
109 p_enty_attr_val_rec.ENTY_ATTR_VAL_ID = FND_API.g_miss_num THEN
110 LOOP
111 l_dummy := NULL;
112 OPEN c_id;
113 FETCH c_id INTO l_ENTY_ATTR_VAL_ID;
114 CLOSE c_id;
115
116 OPEN c_id_exists(l_ENTY_ATTR_VAL_ID);
117 FETCH c_id_exists INTO l_dummy;
118 CLOSE c_id_exists;
119 EXIT WHEN l_dummy IS NULL;
120 END LOOP;
121 ELSE
122 l_ENTY_ATTR_VAL_ID := p_enty_attr_val_rec.ENTY_ATTR_VAL_ID;
123 END IF;
124
125 -- =========================================================================
126 -- Validate Environment
127 -- =========================================================================
128
129 IF FND_GLOBAL.User_Id IS NULL
130 THEN
131 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
132 FND_MESSAGE.set_name('PV', 'PV_API_USER_PROFILE_MISSING');
133 FND_MSG_PUB.add;
134 END IF;
135 RAISE FND_API.G_EXC_ERROR;
136 END IF;
137
138 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
139 THEN
140
141 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : Before Validate_attr_value' );
142
143 -- Populate the default required items
144 l_enty_attr_val_rec.enty_attr_val_id := l_enty_attr_val_id;
145 l_enty_attr_val_rec.last_update_date := SYSDATE;
146 l_enty_attr_val_rec.last_updated_by := G_USER_ID;
147 l_enty_attr_val_rec.creation_date := SYSDATE;
148 l_enty_attr_val_rec.created_by := G_USER_ID;
149 l_enty_attr_val_rec.last_update_login := G_LOGIN_ID;
150 l_enty_attr_val_rec.object_version_number := l_object_version_number;
151
152 --Now validating entity attribute value
153 --We would not validate for entity ENRQ.
154 if ( p_enty_attr_val_rec.entity <> 'ENRQ')
155 then
156 -- Debug message
157 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
158 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Validate_attr_value');
159 END IF;
160
161 -- Invoke validation procedures
162 Validate_attr_value(
163 p_api_version_number => 1.0
164 ,p_init_msg_list => FND_API.G_FALSE
165 ,p_validation_level => p_validation_level
166 ,p_validation_mode => JTF_PLSQL_API.g_create
167 ,p_enty_attr_val_rec => l_enty_attr_val_rec
168 ,x_return_status => x_return_status
169 ,x_msg_count => x_msg_count
170 ,x_msg_data => x_msg_data
171 );
172
173 end if;
174 --DBMS_OUTPUT.PUT_LINE('x_return_status = '||x_return_status );
175
176 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : After Validate_attr_value' );
177
178 END IF;
179
180 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
181 RAISE FND_API.G_EXC_ERROR;
182 END IF;
183
184 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : After Validate' );
185
186 for x in c_get_attr_details(cv_attribute_id => p_enty_attr_val_rec.attribute_id )
187 loop
188 l_attribute_type := x.attribute_type;
189 l_display_style := x.display_style;
190
191 end loop;
192
193 for x in c_get_enty_attr_value(cv_attribute_id => p_enty_attr_val_rec.attribute_id,
194 cv_entity_id => p_enty_attr_val_rec.entity_id,
195 cv_entity => p_enty_attr_val_rec.entity
196 )
197 loop
198
199 l_already_exists := 'Y';
200
201 end loop;
202
203 PVX_Utility_PVT.debug_message(l_full_name ||': l_already_exists ' || l_already_exists);
204
205 if(l_already_exists = 'Y'
206 and not (l_attribute_type = 'DROPDOWN'
207 and l_DISPLAY_STYLE in ('EXTERNAL_LOV','MULTI','CHECK','PERCENTAGE')
208 )
209 ) then
210 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
211 Fnd_Message.set_name('PV', 'PV_ENTY_ATTR_VAL_MULTI_ERROR');
212
213
214 FOR x IN (select meaning from pv_lookups
215 where lookup_type = 'PV_ATTRIBUTE_TYPE'
216 and lookup_code = l_attribute_type
217 ) LOOP
218 l_meaning := x.meaning;
219 END LOOP;
220 Fnd_Message.set_token('ATTR_TYPE',l_meaning);
221
222 FOR x IN (select meaning from pv_lookups
223 where lookup_type = 'PV_ATTR_DISPLAY_STYLE'
224 and lookup_code = l_display_style
225 ) LOOP
226 l_meaning := x.meaning;
227 END LOOP;
228 Fnd_Message.set_token('ATTR_STYLE',l_meaning);
229
230
231 Fnd_Msg_Pub.ADD;
232 END IF;
233 RAISE Fnd_Api.G_EXC_ERROR;
234
235
236 end if;
237
238
239 -- Debug Message
240 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Calling create table handler');
241
242 -- Invoke table handler(PV_ENTY_ATTR_VALUES_PKG.Insert_Row)
243 PV_ENTY_ATTR_VALUES_PKG.Insert_Row(
244 px_enty_attr_val_id => l_enty_attr_val_rec.enty_attr_val_id
245 ,p_last_update_date => l_enty_attr_val_rec.last_update_date
246 ,p_last_updated_by => l_enty_attr_val_rec.last_updated_by
247 ,p_creation_date => l_enty_attr_val_rec.creation_date
248 ,p_created_by => l_enty_attr_val_rec.created_by
249 ,p_last_update_login => l_enty_attr_val_rec.last_update_login
250 ,px_object_version_number => l_object_version_number
251 ,p_entity => l_enty_attr_val_rec.entity
252 ,p_attribute_id => l_enty_attr_val_rec.attribute_id
253 ,p_party_id => l_enty_attr_val_rec.party_id
254 ,p_attr_value => l_enty_attr_val_rec.attr_value
255 ,p_score => l_enty_attr_val_rec.score
256 ,p_enabled_flag => l_enty_attr_val_rec.enabled_flag
257 ,p_entity_id => l_enty_attr_val_rec.entity_id
258 -- p_security_group_id => p_enty_attr_val_rec.security_group_id
259 ,p_version => l_enty_attr_val_rec.version
260 ,p_latest_flag => l_enty_attr_val_rec.latest_flag
261 ,p_attr_value_extn => l_enty_attr_val_rec.attr_value_extn
262 ,p_validation_id => l_enty_attr_val_rec.validation_id
263 );
264
265
266 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : After' );
267
268 x_enty_attr_val_id := l_enty_attr_val_id;
269
270 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
271 RAISE FND_API.G_EXC_ERROR;
272 END IF;
273 --
274 -- End of API body
275 --
276
277 -- Standard check for p_commit
278 IF FND_API.to_Boolean( p_commit )
279 THEN
280 COMMIT WORK;
281 END IF;
282
283
284 -- Debug Message
285 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
286 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - end');
287 END IF;
288
289 -- Standard call to get message count and if count is 1, get message info.
290 FND_MSG_PUB.Count_And_Get (
291 p_count => x_msg_count
292 ,p_data => x_msg_data
293 );
294
295 EXCEPTION
296 /*
297 WHEN PVX_Utility_PVT.resource_locked THEN
298 x_return_status := FND_API.g_ret_sts_error;
299 PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
300 */
301 WHEN FND_API.G_EXC_ERROR THEN
302 ROLLBACK TO Create_Attr_Value_PVT;
303 x_return_status := FND_API.G_RET_STS_ERROR;
304 -- Standard call to get message count and if count=1, get the message
305 FND_MSG_PUB.Count_And_Get (
306 p_encoded => FND_API.G_FALSE
307 ,p_count => x_msg_count
308 ,p_data => x_msg_data
309 );
310
311 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
312 ROLLBACK TO Create_Attr_Value_PVT;
313 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
314 -- Standard call to get message count and if count=1, get the message
315 FND_MSG_PUB.Count_And_Get (
316 p_encoded => FND_API.G_FALSE
317 ,p_count => x_msg_count
318 ,p_data => x_msg_data
319 );
320
321 WHEN OTHERS THEN
322 ROLLBACK TO Create_Attr_Value_PVT;
323 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
324 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
325 THEN
326 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
327 END IF;
328 -- Standard call to get message count and if count=1, get the message
329 FND_MSG_PUB.Count_And_Get (
330 p_encoded => FND_API.G_FALSE
331 ,p_count => x_msg_count
332 ,p_data => x_msg_data
333 );
334 End Create_Attr_Value;
335
336
337 PROCEDURE Update_Attr_Value(
338 p_api_version_number IN NUMBER
339 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
340 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
341 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
342
343 ,x_return_status OUT NOCOPY VARCHAR2
344 ,x_msg_count OUT NOCOPY NUMBER
345 ,x_msg_data OUT NOCOPY VARCHAR2
346
347 ,p_enty_attr_val_rec IN enty_attr_val_rec_type
348 ,x_object_version_number OUT NOCOPY NUMBER
349 )
350 IS
351
352 CURSOR c_get_enty_attr_value(cv_enty_attr_val_id NUMBER) IS
353 SELECT *
354 FROM PV_ENTY_ATTR_VALUES
355 WHERE enty_attr_val_id = cv_enty_attr_val_id;
356
357 l_api_name CONSTANT VARCHAR2(30) := 'Update_Attr_Value';
358 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
359 l_api_version_number CONSTANT NUMBER := 1.0;
360 -- Local Variables
361 l_object_version_number NUMBER;
362 l_enty_attr_val_id NUMBER;
363 l_ref_enty_attr_val_rec c_get_Enty_Attr_Value%ROWTYPE ;
364 l_tar_enty_attr_val_rec PV_Enty_Attr_Value_PVT.enty_attr_val_rec_type := p_enty_attr_val_rec;
365 l_rowid ROWID;
366
367 BEGIN
368 -- Standard Start of API savepoint
369 SAVEPOINT Update_Attr_Value_PVT;
370
371 -- Standard call to check for call compatibility.
372 IF NOT FND_API.Compatible_API_Call (
373 l_api_version_number
374 ,p_api_version_number
375 ,l_api_name
376 ,G_PKG_NAME
377 )
378 THEN
379 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
380 END IF;
381
382 -- Initialize message list if p_init_msg_list is set to TRUE.
383 IF FND_API.to_Boolean( p_init_msg_list )
384 THEN
385 FND_MSG_PUB.initialize;
386 END IF;
387
388 -- Debug Message
389 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
390 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - start');
391 END IF;
392
393 -- Initialize API return status to SUCCESS
394 x_return_status := FND_API.G_RET_STS_SUCCESS;
395
396 -- Debug Message
397 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
398 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Open Cursor to Select');
399 END IF;
400
401 OPEN c_get_Enty_Attr_Value( l_tar_enty_attr_val_rec.enty_attr_val_id);
402
403 FETCH c_get_Enty_Attr_Value INTO l_ref_enty_attr_val_rec ;
404
405 If ( c_get_Enty_Attr_Value%NOTFOUND) THEN
406 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
407 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_ENTITY');
408 FND_MESSAGE.set_token('MODE','Update');
409 FND_MESSAGE.set_token('ENTITY','Enty_Attr_Value');
410 FND_MESSAGE.set_token('ID',TO_CHAR(l_tar_enty_attr_val_rec.enty_attr_val_id));
411 FND_MSG_PUB.add;
412 END IF;
413 RAISE FND_API.G_EXC_ERROR;
414 END IF;
415
416 -- Debug Message
417 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
418 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Close Cursor');
419 END IF;
420 CLOSE c_get_Enty_Attr_Value;
421
422
423 If (l_tar_enty_attr_val_rec.object_version_number is NULL or
424 l_tar_enty_attr_val_rec.object_version_number = FND_API.G_MISS_NUM ) Then
425 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
426 FND_MESSAGE.set_name('PV', 'PV_API_VERSION_MISSING');
427 FND_MESSAGE.set_token('COLUMN','Last_Update_Date');
428 FND_MSG_PUB.add;
429 END IF;
430 RAISE FND_API.G_EXC_ERROR;
431 End if;
432
433 -- Check Whether record has been changed by someone else
434 If (l_tar_enty_attr_val_rec.object_version_number <> l_ref_enty_attr_val_rec.object_version_number) Then
435 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
436 FND_MESSAGE.set_name('PV', 'PV_API_RECORD_CHANGED');
437 FND_MESSAGE.set_token('VALUE','Enty_Attr_Value');
438 FND_MSG_PUB.add;
439 END IF;
440 RAISE FND_API.G_EXC_ERROR;
441 End if;
442 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
443 THEN
444 --Now validating entity attribute value
445 --We would not validate for entity ENRQ.
446 if(p_enty_attr_val_rec.entity <> 'ENRQ')
447 then
448 -- Debug message
449 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
450 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Validate_attr_value');
451 END IF;
452
453 -- Invoke validation procedures
454 Validate_attr_value(
455 p_api_version_number => 1.0
456 ,p_init_msg_list => FND_API.G_FALSE
457 ,p_validation_level => p_validation_level
458 ,p_validation_mode => JTF_PLSQL_API.g_update
459 ,p_enty_attr_val_rec => p_enty_attr_val_rec
460 ,x_return_status => x_return_status
461 ,x_msg_count => x_msg_count
462 ,x_msg_data => x_msg_data
463 );
464
465 END IF;
466 END IF;
467
468 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
469 RAISE FND_API.G_EXC_ERROR;
470 END IF;
471
472
473 -- Debug Message
474 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
475 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Calling update table handler');
476 END IF;
477
478 -- Invoke table handler(PV_ENTY_ATTR_VALUES_PKG.Update_Row)
479 PV_ENTY_ATTR_VALUES_PKG.Update_Row(
480 p_enty_attr_val_id => p_enty_attr_val_rec.enty_attr_val_id
481 ,p_last_update_date => SYSDATE
482 ,p_last_updated_by => G_USER_ID
483 -- p_creation_date => SYSDATE
484 -- p_created_by => G_USER_ID
485 ,p_last_update_login => G_LOGIN_ID
486 ,p_object_version_number => p_enty_attr_val_rec.object_version_number
487 ,p_entity => p_enty_attr_val_rec.entity
488 ,p_attribute_id => p_enty_attr_val_rec.attribute_id
489 ,p_party_id => p_enty_attr_val_rec.party_id
490 ,p_attr_value => p_enty_attr_val_rec.attr_value
491 ,p_score => p_enty_attr_val_rec.score
492 ,p_enabled_flag => p_enty_attr_val_rec.enabled_flag
493 ,p_entity_id => p_enty_attr_val_rec.entity_id
494 -- p_security_group_id => p_enty_attr_val_rec.security_group_id
495 ,p_version => p_enty_attr_val_rec.version
496 ,p_latest_flag => p_enty_attr_val_rec.latest_flag
497 ,p_attr_value_extn => p_enty_attr_val_rec.attr_value_extn
498 ,p_validation_id => p_enty_attr_val_rec.validation_id
499 );
500
501 x_object_version_number := p_enty_attr_val_rec.object_version_number + 1;
502 --
503 -- End of API body.
504 --
505
506 -- Standard check for p_commit
507 IF FND_API.to_Boolean( p_commit )
508 THEN
509 COMMIT WORK;
510 END IF;
511
512 -- Debug Message
513 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
514 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - end');
515 END IF;
516 -- Standard call to get message count and if count is 1, get message info.
517 FND_MSG_PUB.Count_And_Get (
518 p_count => x_msg_count
519 ,p_data => x_msg_data
520 );
521 EXCEPTION
522 /*
523 WHEN PVX_Utility_PVT.resource_locked THEN
524 x_return_status := FND_API.g_ret_sts_error;
525 PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
526 */
527 WHEN FND_API.G_EXC_ERROR THEN
528 ROLLBACK TO Update_Attr_Value_PVT;
529 x_return_status := FND_API.G_RET_STS_ERROR;
530 -- Standard call to get message count and if count=1, get the message
531 FND_MSG_PUB.Count_And_Get (
532 p_encoded => FND_API.G_FALSE
533 ,p_count => x_msg_count
534 ,p_data => x_msg_data
535 );
536
537 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
538 ROLLBACK TO Update_Attr_Value_PVT;
539 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
540 -- Standard call to get message count and if count=1, get the message
541 FND_MSG_PUB.Count_And_Get (
542 p_encoded => FND_API.G_FALSE
543 ,p_count => x_msg_count
544 ,p_data => x_msg_data
545 );
546
547 WHEN OTHERS THEN
548 ROLLBACK TO Update_Attr_Value_PVT;
549 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
550 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
551 THEN
552 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
553 END IF;
554 -- Standard call to get message count and if count=1, get the message
555 FND_MSG_PUB.Count_And_Get (
556 p_encoded => FND_API.G_FALSE
557 ,p_count => x_msg_count
558 ,p_data => x_msg_data
559 );
560 End Update_Attr_Value;
561
562
563 PROCEDURE Delete_Attr_Value(
564 p_api_version_number IN NUMBER
565 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
566 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
567 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
568
569 ,x_return_status OUT NOCOPY VARCHAR2
570 ,x_msg_count OUT NOCOPY NUMBER
571 ,x_msg_data OUT NOCOPY VARCHAR2
572
573 ,p_enty_attr_val_id IN NUMBER
574 ,p_object_version_number IN NUMBER
575 )
576
577 IS
578 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Attr_Value';
579 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
580 l_api_version_number CONSTANT NUMBER := 1.0;
581 l_object_version_number NUMBER;
582
583 BEGIN
584 -- Standard Start of API savepoint
585 SAVEPOINT Delete_Attr_Value_PVT;
586
587 -- Standard call to check for call compatibility.
588 IF NOT FND_API.Compatible_API_Call (
589 l_api_version_number
590 ,p_api_version_number
591 ,l_api_name
592 ,G_PKG_NAME
593 )
594 THEN
595 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
596 END IF;
597
598 -- Initialize message list if p_init_msg_list is set to TRUE.
599 IF FND_API.to_Boolean( p_init_msg_list )
600 THEN
601 FND_MSG_PUB.initialize;
602 END IF;
603
604 -- Debug Message
605 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
606 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - start');
607 END IF;
608 -- Initialize API return status to SUCCESS
609 x_return_status := FND_API.G_RET_STS_SUCCESS;
610
611 --
612 -- Api body
613 --
614 -- Debug Message
615 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
616 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - Calling delete table handler');
617 END IF;
618 -- Invoke table handler(PV_ENTY_ATTR_VALUES_PKG.Delete_Row)
619 PV_ENTY_ATTR_VALUES_PKG.Delete_Row(
620 p_ENTY_ATTR_VAL_ID => p_ENTY_ATTR_VAL_ID);
621 --
622 -- End of API body
623 --
624
625 -- Standard check for p_commit
626 IF FND_API.to_Boolean( p_commit )
627 THEN
628 COMMIT WORK;
629 END IF;
630
631 -- Debug Message
632 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
633 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - end');
634 END IF;
635 -- Standard call to get message count and if count is 1, get message info.
636 FND_MSG_PUB.Count_And_Get (
637 p_count => x_msg_count
638 ,p_data => x_msg_data
639 );
640 EXCEPTION
641 /*
642 WHEN PVX_Utility_PVT.resource_locked THEN
643 x_return_status := FND_API.g_ret_sts_error;
644 PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
645 */
646 WHEN FND_API.G_EXC_ERROR THEN
647 ROLLBACK TO Delete_Attr_Value_PVT;
648 x_return_status := FND_API.G_RET_STS_ERROR;
649 -- Standard call to get message count and if count=1, get the message
650 FND_MSG_PUB.Count_And_Get (
651 p_encoded => FND_API.G_FALSE
652 ,p_count => x_msg_count
653 ,p_data => x_msg_data
654 );
655
656 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
657 ROLLBACK TO Delete_Attr_Value_PVT;
658 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
659 -- Standard call to get message count and if count=1, get the message
660 FND_MSG_PUB.Count_And_Get (
661 p_encoded => FND_API.G_FALSE
662 ,p_count => x_msg_count
663 ,p_data => x_msg_data
664 );
665
666 WHEN OTHERS THEN
667 ROLLBACK TO Delete_Attr_Value_PVT;
668 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
669 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
670 THEN
671 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
672 END IF;
673 -- Standard call to get message count and if count=1, get the message
674 FND_MSG_PUB.Count_And_Get (
675 p_encoded => FND_API.G_FALSE
676 ,p_count => x_msg_count
677 ,p_data => x_msg_data
678 );
679 End Delete_Attr_Value;
680
681
682
683 -- Hint: Primary key needs to be returned.
684 PROCEDURE Lock_Attr_Value(
685 p_api_version_number IN NUMBER
686 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
687
688 ,x_return_status OUT NOCOPY VARCHAR2
689 ,x_msg_count OUT NOCOPY NUMBER
690 ,x_msg_data OUT NOCOPY VARCHAR2
691
692 ,p_enty_attr_val_id IN NUMBER
693 ,p_object_version IN NUMBER
694 )
695
696 IS
697 l_api_name CONSTANT VARCHAR2(30) := 'Lock_Attr_Value';
698 l_api_version_number CONSTANT NUMBER := 1.0;
699 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
700 l_ENTY_ATTR_VAL_ID NUMBER;
701
702 CURSOR c_Enty_Attr_Value IS
703 SELECT ENTY_ATTR_VAL_ID
704 FROM PV_ENTY_ATTR_VALUES
705 WHERE ENTY_ATTR_VAL_ID = p_ENTY_ATTR_VAL_ID
706 AND object_version_number = p_object_version
707 FOR UPDATE NOWAIT;
708
709 BEGIN
710
711 -- Debug Message
712 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
713 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - start');
714 END IF;
715 -- Initialize message list if p_init_msg_list is set to TRUE.
716 IF FND_API.to_Boolean( p_init_msg_list )
717 THEN
718 FND_MSG_PUB.initialize;
719 END IF;
720
721 -- Standard call to check for call compatibility.
722 IF NOT FND_API.Compatible_API_Call (
723 l_api_version_number
724 ,p_api_version_number
725 ,l_api_name
726 ,G_PKG_NAME
727 )
728 THEN
729 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
730 END IF;
731
732 -- Initialize API return status to SUCCESS
733 x_return_status := FND_API.G_RET_STS_SUCCESS;
734
735
736 ------------------------ lock -------------------------
737 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
738 PVX_Utility_PVT.debug_message(l_full_name||': start');
739 END IF;
740 OPEN c_Enty_Attr_Value;
741
742 FETCH c_Enty_Attr_Value INTO l_ENTY_ATTR_VAL_ID;
743
744 IF (c_Enty_Attr_Value%NOTFOUND) THEN
745 CLOSE c_Enty_Attr_Value;
746 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
747 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
748 FND_MSG_PUB.add;
749 END IF;
750 RAISE FND_API.g_exc_error;
751 END IF;
752
753 CLOSE c_Enty_Attr_Value;
754
755 -------------------- finish --------------------------
756 FND_MSG_PUB.count_and_get(
757 p_encoded => FND_API.g_false
758 ,p_count => x_msg_count
759 ,p_data => x_msg_data
760 );
761 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
762 PVX_Utility_PVT.debug_message(l_full_name ||': end');
763 END IF;
764 EXCEPTION
765 /*
766 WHEN PVX_Utility_PVT.resource_locked THEN
767 x_return_status := FND_API.g_ret_sts_error;
768 PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
769 */
770 WHEN FND_API.G_EXC_ERROR THEN
771 ROLLBACK TO Lock_Attr_Value_PVT;
772 x_return_status := FND_API.G_RET_STS_ERROR;
773 -- Standard call to get message count and if count=1, get the message
774 FND_MSG_PUB.Count_And_Get (
775 p_encoded => FND_API.G_FALSE
776 ,p_count => x_msg_count
777 ,p_data => x_msg_data
778 );
779
780 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
781 ROLLBACK TO Lock_Attr_Value_PVT;
782 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
783 -- Standard call to get message count and if count=1, get the message
784 FND_MSG_PUB.Count_And_Get (
785 p_encoded => FND_API.G_FALSE
786 ,p_count => x_msg_count
787 ,p_data => x_msg_data
788 );
789
790 WHEN OTHERS THEN
791 ROLLBACK TO Lock_Attr_Value_PVT;
792 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
793 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
794 THEN
795 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
796 END IF;
797 -- Standard call to get message count and if count=1, get the message
798 FND_MSG_PUB.Count_And_Get (
799 p_encoded => FND_API.G_FALSE
800 ,p_count => x_msg_count
801 ,p_data => x_msg_data
802 );
803 End Lock_Attr_Value;
804
805
806 PROCEDURE check_uk_items(
807 p_enty_attr_val_rec IN enty_attr_val_rec_type
808 ,p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create
809 ,x_return_status OUT NOCOPY VARCHAR2)
810 IS
811 l_valid_flag VARCHAR2(1);
812
813 BEGIN
814
815 --DBMS_OUTPUT.PUT_LINE ('entering check_uk_items');
816
817 x_return_status := FND_API.g_ret_sts_success;
818 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
819 l_valid_flag := PVX_Utility_PVT.check_uniqueness(
820 'PV_ENTY_ATTR_VALUES'
821 ,'ENTY_ATTR_VAL_ID = ''' || p_enty_attr_val_rec.ENTY_ATTR_VAL_ID ||''''
822 );
823 ELSE
824 l_valid_flag := PVX_Utility_PVT.check_uniqueness(
825 'PV_ENTY_ATTR_VALUES'
826 ,'ENTY_ATTR_VAL_ID = ''' || p_enty_attr_val_rec.ENTY_ATTR_VAL_ID ||
827 ''' AND ENTY_ATTR_VAL_ID <> ' || p_enty_attr_val_rec.ENTY_ATTR_VAL_ID
828 );
829 END IF;
830
831 IF l_valid_flag = FND_API.g_false THEN
832 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
833 FND_MESSAGE.set_name('PV', 'PV_API_DUPLICATE_ENTITY');
834 FND_MESSAGE.set_token('ID',to_char(p_enty_attr_val_rec.ENTY_ATTR_VAL_ID) );
835 FND_MESSAGE.set_token('ENTITY','Enty_Attr_Value');
836 FND_MSG_PUB.add;
837 END IF;
838 x_return_status := FND_API.g_ret_sts_error;
839 RETURN;
840 END IF;
841
842 --DBMS_OUTPUT.PUT_LINE ('leaving check_uk_items');
843
844 END check_uk_items;
845
846 PROCEDURE check_req_items(
847 p_enty_attr_val_rec IN enty_attr_val_rec_type
848 ,p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create
849 ,x_return_status OUT NOCOPY VARCHAR2
850 )
851 IS
852 BEGIN
853 x_return_status := FND_API.g_ret_sts_success;
854 --DBMS_OUTPUT.PUT_LINE('check_req_items::p_validation_mode = '||p_validation_mode);
855 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
856
857 --DBMS_OUTPUT.PUT_LINE('Before calling enty_attr_val_id');
858 --DBMS_OUTPUT.PUT_LINE('p_enty_attr_val_rec.enty_attr_val_id = '||
859 -- TO_CHAR(p_enty_attr_val_rec.enty_attr_val_id));
860
861
862 IF p_enty_attr_val_rec.enty_attr_val_id = FND_API.g_miss_num
863 OR p_enty_attr_val_rec.enty_attr_val_id IS NULL THEN
864 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
865 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
866 FND_MESSAGE.set_token('COLUMN','enty_attr_val_id');
867 FND_MSG_PUB.add;
868 END IF;
869 x_return_status := FND_API.g_ret_sts_error;
870 RETURN;
871 END IF;
872
873 --DBMS_OUTPUT.PUT_LINE('p_enty_attr_val_rec.LAST_UPDATE_DATE = '||
874 -- TO_CHAR(p_enty_attr_val_rec.last_update_date));
875
876 IF p_enty_attr_val_rec.last_update_date = FND_API.g_miss_date
877 OR p_enty_attr_val_rec.last_update_date IS NULL THEN
878
879 --DBMS_OUTPUT.PUT_LINE('p_enty_attr_val_rec.LAST_UPDATE_DATE = '||
880 -- TO_CHAR(p_enty_attr_val_rec.last_update_date));
881 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
882 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
883 FND_MESSAGE.set_token('COLUMN','last_update_date');
884 FND_MSG_PUB.add;
885 END IF;
886 x_return_status := FND_API.g_ret_sts_error;
887 RETURN;
888 END IF;
889
890 --DBMS_OUTPUT.PUT_LINE('p_enty_attr_val_rec.last_updated_by = '||
891 -- TO_CHAR(p_enty_attr_val_rec.last_updated_by));
892
893 IF p_enty_attr_val_rec.last_updated_by = FND_API.g_miss_num
894 OR p_enty_attr_val_rec.last_updated_by IS NULL THEN
895 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
896 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
897 FND_MESSAGE.set_token('COLUMN','last_updated_by');
898 FND_MSG_PUB.add;
899 END IF;
900 x_return_status := FND_API.g_ret_sts_error;
901 RETURN;
902 END IF;
903
904
905 IF p_enty_attr_val_rec.creation_date = FND_API.g_miss_date
906 OR p_enty_attr_val_rec.creation_date IS NULL THEN
907 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
908 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
909 FND_MESSAGE.set_token('COLUMN','creation_date');
910 FND_MSG_PUB.add;
911 END IF;
912 x_return_status := FND_API.g_ret_sts_error;
913 RETURN;
914 END IF;
915
916
917 IF p_enty_attr_val_rec.created_by = FND_API.g_miss_num
918 OR p_enty_attr_val_rec.created_by IS NULL THEN
919 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
920 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
921 FND_MESSAGE.set_token('COLUMN','created_by');
922 FND_MSG_PUB.add;
923 END IF;
924 x_return_status := FND_API.g_ret_sts_error;
925 RETURN;
926 END IF;
927
928
929 IF p_enty_attr_val_rec.last_update_login = FND_API.g_miss_num
930 OR p_enty_attr_val_rec.last_update_login IS NULL THEN
931 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
932 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
933 FND_MESSAGE.set_token('COLUMN','last_update_login');
934 FND_MSG_PUB.add;
935 END IF;
936 x_return_status := FND_API.g_ret_sts_error;
937 RETURN;
938 END IF;
939
940
941 IF p_enty_attr_val_rec.object_version_number = FND_API.g_miss_num
942 OR p_enty_attr_val_rec.object_version_number IS NULL THEN
943 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
944 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
945 FND_MESSAGE.set_token('COLUMN','object_version_number');
946 FND_MSG_PUB.add;
947 END IF;
948 x_return_status := FND_API.g_ret_sts_error;
949 RETURN;
950 END IF;
951
952
953 IF p_enty_attr_val_rec.entity = FND_API.g_miss_char
954 OR p_enty_attr_val_rec.entity IS NULL THEN
955 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
956 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
957 FND_MESSAGE.set_token('COLUMN','entity');
958 FND_MSG_PUB.add;
959 END IF;
960 x_return_status := FND_API.g_ret_sts_error;
961 RETURN;
962 END IF;
963
964
965 IF p_enty_attr_val_rec.attribute_id = FND_API.g_miss_num
966 OR p_enty_attr_val_rec.attribute_id IS NULL THEN
967 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
968 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
969 FND_MESSAGE.set_token('COLUMN','attribute_id');
970 FND_MSG_PUB.add;
971 END IF;
972 x_return_status := FND_API.g_ret_sts_error;
973 RETURN;
974 END IF;
975
976
977 IF p_enty_attr_val_rec.enabled_flag = FND_API.g_miss_char
978 OR p_enty_attr_val_rec.enabled_flag IS NULL THEN
979 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
980 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
981 FND_MESSAGE.set_token('COLUMN','enabled_flag');
982 FND_MSG_PUB.add;
983 END IF;
984 x_return_status := FND_API.g_ret_sts_error;
985 RETURN;
986 END IF;
987
988
989 IF p_enty_attr_val_rec.entity_id = FND_API.g_miss_num
990 OR p_enty_attr_val_rec.entity_id IS NULL THEN
991 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
992 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
993 FND_MESSAGE.set_token('COLUMN','entity_id');
994 FND_MSG_PUB.add;
995 END IF;
996 x_return_status := FND_API.g_ret_sts_error;
997 RETURN;
998 END IF;
999
1000 ELSE
1001
1002 IF p_enty_attr_val_rec.enty_attr_val_id IS NULL THEN
1003 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1004 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1005 FND_MESSAGE.set_token('COLUMN','enty_attr_val_id');
1006 FND_MSG_PUB.add;
1007 END IF;
1008 x_return_status := FND_API.g_ret_sts_error;
1009 RETURN;
1010 END IF;
1011
1012
1013 IF p_enty_attr_val_rec.last_update_date IS NULL THEN
1014 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1015 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1016 FND_MESSAGE.set_token('COLUMN','last_update_date');
1017 FND_MSG_PUB.add;
1018 END IF;
1019 x_return_status := FND_API.g_ret_sts_error;
1020 RETURN;
1021 END IF;
1022
1023
1024 IF p_enty_attr_val_rec.last_updated_by IS NULL THEN
1025 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1026 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1027 FND_MESSAGE.set_token('COLUMN','last_updated_by');
1028 FND_MSG_PUB.add;
1029 END IF;
1030 x_return_status := FND_API.g_ret_sts_error;
1031 RETURN;
1032 END IF;
1033
1034
1035 IF p_enty_attr_val_rec.creation_date IS NULL THEN
1036 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1037 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1038 FND_MESSAGE.set_token('COLUMN','creation_date');
1039 FND_MSG_PUB.add;
1040 END IF;
1041 x_return_status := FND_API.g_ret_sts_error;
1042 RETURN;
1043 END IF;
1044
1045
1046 IF p_enty_attr_val_rec.created_by IS NULL THEN
1047
1048 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1049 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1050 FND_MESSAGE.set_token('COLUMN','created_by');
1051 FND_MSG_PUB.add;
1052 END IF;
1053 x_return_status := FND_API.g_ret_sts_error;
1054 RETURN;
1055 END IF;
1056
1057
1058 IF p_enty_attr_val_rec.last_update_login IS NULL THEN
1059 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1060 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1061 FND_MESSAGE.set_token('COLUMN','last_update_login');
1062 FND_MSG_PUB.add;
1063 END IF;
1064 x_return_status := FND_API.g_ret_sts_error;
1065 RETURN;
1066 END IF;
1067
1068
1069 IF p_enty_attr_val_rec.object_version_number IS NULL THEN
1070 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1071 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1072 FND_MESSAGE.set_token('COLUMN','object_version_number');
1073 FND_MSG_PUB.add;
1074 END IF;
1075 x_return_status := FND_API.g_ret_sts_error;
1076 RETURN;
1077 END IF;
1078
1079
1080 IF p_enty_attr_val_rec.entity IS NULL THEN
1081 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1082 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1083 FND_MESSAGE.set_token('COLUMN','entity');
1084 FND_MSG_PUB.add;
1085 END IF;
1086 x_return_status := FND_API.g_ret_sts_error;
1087 RETURN;
1088 END IF;
1089
1090
1091 IF p_enty_attr_val_rec.attribute_id IS NULL THEN
1092 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1093 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1094 FND_MESSAGE.set_token('COLUMN','attribute_id');
1095 FND_MSG_PUB.add;
1096 END IF;
1097 x_return_status := FND_API.g_ret_sts_error;
1098 RETURN;
1099 END IF;
1100
1101
1102 IF p_enty_attr_val_rec.enabled_flag IS NULL THEN
1103 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1104 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1105 FND_MESSAGE.set_token('COLUMN','enabled_flag');
1106 FND_MSG_PUB.add;
1107 END IF;
1108 x_return_status := FND_API.g_ret_sts_error;
1109 RETURN;
1110 END IF;
1111
1112
1113 IF p_enty_attr_val_rec.entity_id IS NULL THEN
1114 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1115 FND_MESSAGE.set_name('PV', 'PV_API_MISSING_REQ_COLUMN');
1116 FND_MESSAGE.set_token('COLUMN','entity_id');
1117 FND_MSG_PUB.add;
1118 END IF;
1119 x_return_status := FND_API.g_ret_sts_error;
1120 RETURN;
1121 END IF;
1122 END IF;
1123
1124 END check_req_items;
1125
1126 PROCEDURE check_FK_items(
1127 p_enty_attr_val_rec IN enty_attr_val_rec_type
1128 ,x_return_status OUT NOCOPY VARCHAR2
1129 )
1130 IS
1131
1132 CURSOR c_check_attr_exists(cv_attribute_id NUMBER) IS
1133 SELECT 1
1134 FROM PV_ATTRIBUTES_b
1135 WHERE attribute_id = cv_attribute_id
1136 ;
1137 CURSOR c_check_entattr_exists(cv_attribute_id NUMBER, cv_entity VARCHAR2) IS
1138 SELECT 1
1139 FROM PV_ENTITY_ATTRS
1140 WHERE attribute_id = cv_attribute_id and entity = cv_entity
1141 ;
1142
1143 l_exists BOOLEAN := false;
1144 l_api_name CONSTANT VARCHAR2(30) := 'Create_Attr_Value';
1145 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1146
1147 BEGIN
1148 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1149 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - start');
1150 END IF;
1151
1152 x_return_status := FND_API.g_ret_sts_success;
1153
1154 -- Enter custom code here
1155
1156 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1157 PVX_Utility_PVT.debug_message('Attribute Id:'|| p_enty_attr_val_rec.attribute_id||': - entity:' || p_enty_attr_val_rec.entity );
1158 END IF;
1159
1160 for x in c_check_attr_exists(cv_attribute_id => p_enty_attr_val_rec.attribute_id )
1161 loop
1162 l_exists := true;
1163 end loop;
1164
1165 if(l_exists = false) then
1166 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1167 FND_MESSAGE.set_name('PV', 'PV_ATTRIBUTE_NOT_EXISTS');
1168 FND_MESSAGE.set_token('ATTRIBUTE_ID',p_enty_attr_val_rec.attribute_id);
1169 FND_MSG_PUB.add;
1170 END IF;
1171 x_return_status := FND_API.g_ret_sts_error;
1172 return;
1173 end if;
1174
1175 l_exists := false;
1176
1177 for x in c_check_entattr_exists(cv_attribute_id => p_enty_attr_val_rec.attribute_id, cv_entity => p_enty_attr_val_rec.entity )
1178 loop
1179 l_exists := true;
1180 end loop;
1181
1182 if(l_exists = false) then
1183 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1184 FND_MESSAGE.set_name('PV', 'PV_ATTR_ENTITY_NOT_EXISTS');
1185 FND_MESSAGE.set_token('ATTRIBUTE_ID',p_enty_attr_val_rec.attribute_id);
1186 FND_MESSAGE.set_token('ENTITY',p_enty_attr_val_rec.entity);
1187 FND_MSG_PUB.add;
1188 END IF;
1189 x_return_status := FND_API.g_ret_sts_error;
1190 return;
1191 end if;
1192
1193
1194 END check_FK_items;
1195
1196 PROCEDURE check_Lookup_items(
1197 p_enty_attr_val_rec IN enty_attr_val_rec_type
1198 ,x_return_status OUT NOCOPY VARCHAR2
1199 )
1200 IS
1201 BEGIN
1202 x_return_status := FND_API.g_ret_sts_success;
1203
1204 -- Enter custom code here
1205
1206 END check_Lookup_items;
1207
1208 PROCEDURE Check_attr_value_Items (
1209 p_enty_attr_val_rec IN enty_attr_val_rec_type
1210 ,p_validation_mode IN VARCHAR2
1211 ,x_return_status OUT NOCOPY VARCHAR2
1212 )
1213 IS
1214 l_api_name CONSTANT VARCHAR2(30) := 'Check_attr_value_Items';
1215 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1216
1217 BEGIN
1218
1219 -- Check Items Uniqueness API calls
1220
1221 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : Before check_uk_items' );
1222
1223 check_uk_items(
1224 p_enty_attr_val_rec => p_enty_attr_val_rec
1225 ,p_validation_mode => p_validation_mode
1226 ,x_return_status => x_return_status
1227 );
1228 IF x_return_status <> FND_API.g_ret_sts_success THEN
1229 RETURN;
1230 END IF;
1231
1232 -- Check Items Required/NOT NULL API calls
1233
1234 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : Before check_req_items' );
1235
1236 check_req_items(
1237 p_enty_attr_val_rec => p_enty_attr_val_rec
1238 ,p_validation_mode => p_validation_mode
1239 ,x_return_status => x_return_status
1240 );
1241 IF x_return_status <> FND_API.g_ret_sts_success THEN
1242 RETURN;
1243 END IF;
1244
1245 -- Check Items Foreign Keys API calls
1246
1247 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : Before check_FK_items' );
1248
1249 check_FK_items(
1250 p_enty_attr_val_rec => p_enty_attr_val_rec
1251 ,x_return_status => x_return_status
1252 );
1253 IF x_return_status <> FND_API.g_ret_sts_success THEN
1254 RETURN;
1255 END IF;
1256
1257 -- Check Items Lookups
1258
1259 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : Before check_Lookup_items' );
1260
1261 check_Lookup_items(
1262 p_enty_attr_val_rec => p_enty_attr_val_rec
1263 ,x_return_status => x_return_status
1264 );
1265 IF x_return_status <> FND_API.g_ret_sts_success THEN
1266 RETURN;
1267 END IF;
1268
1269 END Check_attr_value_Items;
1270
1271 PROCEDURE Complete_enty_attr_val_rec (
1272 p_enty_attr_val_rec IN enty_attr_val_rec_type
1273 ,x_complete_rec OUT NOCOPY enty_attr_val_rec_type
1274 )
1275 IS
1276 l_return_status VARCHAR2(1);
1277
1278 CURSOR c_complete IS
1279 SELECT *
1280 FROM pv_enty_attr_values
1281 WHERE enty_attr_val_id = p_enty_attr_val_rec.enty_attr_val_id;
1282 l_pv_enty_attr_val_rec c_complete%ROWTYPE;
1283 BEGIN
1284 x_complete_rec := p_enty_attr_val_rec;
1285
1286
1287 OPEN c_complete;
1288 FETCH c_complete INTO l_pv_enty_attr_val_rec;
1289 CLOSE c_complete;
1290
1291 -- enty_attr_val_id
1292 IF p_enty_attr_val_rec.enty_attr_val_id = FND_API.g_miss_num THEN
1293 x_complete_rec.enty_attr_val_id := l_pv_enty_attr_val_rec.enty_attr_val_id;
1294 END IF;
1295
1296 -- last_update_date
1297 IF p_enty_attr_val_rec.last_update_date = FND_API.g_miss_date THEN
1298 x_complete_rec.last_update_date := l_pv_enty_attr_val_rec.last_update_date;
1299 END IF;
1300
1301 -- last_updated_by
1302 IF p_enty_attr_val_rec.last_updated_by = FND_API.g_miss_num THEN
1303 x_complete_rec.last_updated_by := l_pv_enty_attr_val_rec.last_updated_by;
1304 END IF;
1305
1306 -- creation_date
1307 IF p_enty_attr_val_rec.creation_date = FND_API.g_miss_date THEN
1308 x_complete_rec.creation_date := l_pv_enty_attr_val_rec.creation_date;
1309 END IF;
1310
1311 -- created_by
1312 IF p_enty_attr_val_rec.created_by = FND_API.g_miss_num THEN
1313 x_complete_rec.created_by := l_pv_enty_attr_val_rec.created_by;
1314 END IF;
1315
1316 -- last_update_login
1317 IF p_enty_attr_val_rec.last_update_login = FND_API.g_miss_num THEN
1318 x_complete_rec.last_update_login := l_pv_enty_attr_val_rec.last_update_login;
1319 END IF;
1320
1321 -- object_version_number
1322 IF p_enty_attr_val_rec.object_version_number = FND_API.g_miss_num THEN
1323 x_complete_rec.object_version_number := l_pv_enty_attr_val_rec.object_version_number;
1324 END IF;
1325
1326 -- entity
1327 IF p_enty_attr_val_rec.entity = FND_API.g_miss_char THEN
1328 x_complete_rec.entity := l_pv_enty_attr_val_rec.entity;
1329 END IF;
1330
1331 -- attribute_id
1332 IF p_enty_attr_val_rec.attribute_id = FND_API.g_miss_num THEN
1333 x_complete_rec.attribute_id := l_pv_enty_attr_val_rec.attribute_id;
1334 END IF;
1335
1336 -- party_id
1337 IF p_enty_attr_val_rec.party_id = FND_API.g_miss_num THEN
1338 x_complete_rec.party_id := l_pv_enty_attr_val_rec.party_id;
1339 END IF;
1340
1341 -- attr_value
1342 IF p_enty_attr_val_rec.attr_value = FND_API.g_miss_char THEN
1343 x_complete_rec.attr_value := l_pv_enty_attr_val_rec.attr_value;
1344 END IF;
1345
1346 -- score
1347 IF p_enty_attr_val_rec.score = FND_API.g_miss_char THEN
1348 x_complete_rec.score := l_pv_enty_attr_val_rec.score;
1349 END IF;
1350
1351 -- enabled_flag
1352 IF p_enty_attr_val_rec.enabled_flag = FND_API.g_miss_char THEN
1353 x_complete_rec.enabled_flag := l_pv_enty_attr_val_rec.enabled_flag;
1354 END IF;
1355
1356 -- entity_id
1357 IF p_enty_attr_val_rec.entity_id = FND_API.g_miss_num THEN
1358 x_complete_rec.entity_id := l_pv_enty_attr_val_rec.entity_id;
1359 END IF;
1360
1361
1362 -- version
1363 IF p_enty_attr_val_rec.version = FND_API.g_miss_num THEN
1364 x_complete_rec.version := l_pv_enty_attr_val_rec.version;
1365 END IF;
1366
1367 -- latest_flag
1368 IF p_enty_attr_val_rec.latest_flag = FND_API.g_miss_char THEN
1369 x_complete_rec.latest_flag := l_pv_enty_attr_val_rec.latest_flag;
1370 END IF;
1371
1372 -- attr_value_extn
1373 IF p_enty_attr_val_rec.attr_value_extn = FND_API.g_miss_char THEN
1374 x_complete_rec.attr_value_extn := l_pv_enty_attr_val_rec.attr_value_extn;
1375 END IF;
1376
1377 -- version
1378 IF p_enty_attr_val_rec.validation_id = FND_API.g_miss_num THEN
1379 x_complete_rec.validation_id := l_pv_enty_attr_val_rec.validation_id;
1380 END IF;
1381
1382
1383 -- security_group_id
1384 -- IF p_enty_attr_val_rec.security_group_id = FND_API.g_miss_num THEN
1385 -- x_complete_rec.security_group_id := l_pv_enty_attr_val_rec.security_group_id;
1386 -- END IF;
1387 -- Note: Developers need to modify the procedure
1388 -- to handle any business specific requirements.
1389 END Complete_enty_attr_val_rec;
1390
1391 PROCEDURE Validate_attr_value(
1392 p_api_version_number IN NUMBER
1393 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
1394 ,p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
1395 ,p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.G_UPDATE
1396 ,p_enty_attr_val_rec IN enty_attr_val_rec_type
1397 ,x_return_status OUT NOCOPY VARCHAR2
1398 ,x_msg_count OUT NOCOPY NUMBER
1399 ,x_msg_data OUT NOCOPY VARCHAR2
1400 )
1401 IS
1402 l_api_name CONSTANT VARCHAR2(30) := 'Validate_attr_value';
1403 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1404 l_api_version_number CONSTANT NUMBER := 1.0;
1405 l_object_version_number NUMBER;
1406 l_pv_enty_attr_val_rec enty_attr_val_rec_type;
1407
1408 BEGIN
1409
1410 --DBMS_OUTPUT.PUT_LINE ('Enter Validate Procedure with mode= '||p_validation_mode);
1411
1412 -- Standard Start of API savepoint
1413 SAVEPOINT Validate_attr_value;
1414
1415 -- Standard call to check for call compatibility.
1416 IF NOT FND_API.Compatible_API_Call (
1417 l_api_version_number
1418 ,p_api_version_number
1419 ,l_api_name
1420 ,G_PKG_NAME
1421 )
1422 THEN
1423 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1424 END IF;
1425
1426 -- Initialize message list if p_init_msg_list is set to TRUE.
1427 IF FND_API.to_Boolean( p_init_msg_list )
1428 THEN
1429 FND_MSG_PUB.initialize;
1430 END IF;
1431 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1432
1433 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : Before Check_attr_value_Items' );
1434
1435 Check_attr_value_Items(
1436 p_enty_attr_val_rec => p_enty_attr_val_rec
1437 ,p_validation_mode => p_validation_mode
1438 ,x_return_status => x_return_status
1439 );
1440
1441 --DBMS_OUTPUT.PUT_LINE('After Check_attr_value_Items::x_return_status = '||x_return_status);
1442 --DBMS_OUTPUT.PUT_LINE(l_full_name||' : After Check_attr_value_Items' );
1443
1444 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1445 RAISE FND_API.G_EXC_ERROR;
1446 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1447 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1448 END IF;
1449 END IF;
1450
1451 Complete_enty_attr_val_rec(
1452 p_enty_attr_val_rec => p_enty_attr_val_rec
1453 ,x_complete_rec => l_pv_enty_attr_val_rec
1454 );
1455
1456 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1457 Validate_attr_val_rec(
1458 p_api_version_number => 1.0
1459 ,p_init_msg_list => FND_API.G_FALSE
1460 ,x_return_status => x_return_status
1461 ,x_msg_count => x_msg_count
1462 ,x_msg_data => x_msg_data
1463 ,p_enty_attr_val_rec => l_pv_enty_attr_val_rec
1464 ,p_validation_mode => p_validation_mode
1465 );
1466
1467 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1468 RAISE FND_API.G_EXC_ERROR;
1469 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1470 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1471 END IF;
1472 END IF;
1473
1474 -- Debug Message
1475 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1476 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - start');
1477 END IF;
1478 -- Initialize API return status to SUCCESS
1479 x_return_status := FND_API.G_RET_STS_SUCCESS;
1480
1481 -- Debug Message
1482 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1483 PVX_Utility_PVT.debug_message('Private API: '||l_full_name||' - end');
1484 END IF;
1485 -- Standard call to get message count and if count is 1, get message info.
1486 FND_MSG_PUB.Count_And_Get (
1487 p_count => x_msg_count
1488 ,p_data => x_msg_data
1489 );
1490 EXCEPTION
1491 /*
1492 WHEN PVX_Utility_PVT.resource_locked THEN
1493 x_return_status := FND_API.g_ret_sts_error;
1494 PVX_Utility_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
1495 */
1496 WHEN FND_API.G_EXC_ERROR THEN
1497 ROLLBACK TO Validate_attr_value;
1498 x_return_status := FND_API.G_RET_STS_ERROR;
1499 -- Standard call to get message count and if count=1, get the message
1500 FND_MSG_PUB.Count_And_Get (
1501 p_encoded => FND_API.G_FALSE
1502 ,p_count => x_msg_count
1503 ,p_data => x_msg_data
1504 );
1505
1506 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1507 ROLLBACK TO Validate_attr_value;
1508 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1509 -- Standard call to get message count and if count=1, get the message
1510 FND_MSG_PUB.Count_And_Get (
1511 p_encoded => FND_API.G_FALSE
1512 ,p_count => x_msg_count
1513 ,p_data => x_msg_data
1514 );
1515
1516 WHEN OTHERS THEN
1517 ROLLBACK TO Validate_attr_value;
1518 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1519 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1520 THEN
1521 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1522 END IF;
1523 -- Standard call to get message count and if count=1, get the message
1524 FND_MSG_PUB.Count_And_Get (
1525 p_encoded => FND_API.G_FALSE
1526 ,p_count => x_msg_count
1527 ,p_data => x_msg_data
1528 );
1529 End Validate_attr_value;
1530
1531
1532 PROCEDURE Validate_attr_val_rec(
1533 p_api_version_number IN NUMBER
1534 ,p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
1535 ,x_return_status OUT NOCOPY VARCHAR2
1536 ,x_msg_count OUT NOCOPY NUMBER
1537 ,x_msg_data OUT NOCOPY VARCHAR2
1538 ,p_enty_attr_val_rec IN enty_attr_val_rec_type
1539 ,p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.G_UPDATE
1540 )
1541 IS
1542 BEGIN
1543 -- Initialize message list if p_init_msg_list is set to TRUE.
1544 IF FND_API.to_Boolean( p_init_msg_list )
1545 THEN
1546 FND_MSG_PUB.initialize;
1547 END IF;
1548
1549 -- Initialize API return status to SUCCESS
1550 x_return_status := FND_API.G_RET_STS_SUCCESS;
1551
1552 -- Hint: Validate data
1553 -- If data not valid
1554 -- THEN
1555 -- x_return_status := FND_API.G_RET_STS_ERROR;
1556
1557 -- Debug Message
1558 IF (FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)) THEN
1559 PVX_Utility_PVT.debug_message('Private API: Validate_dm_model_rec');
1560 END IF;
1561 -- Standard call to get message count and if count is 1, get message info.
1562 FND_MSG_PUB.Count_And_Get (
1563 p_count => x_msg_count
1564 ,p_data => x_msg_data
1565 );
1566 END Validate_attr_val_rec;
1567
1568 END PV_Enty_Attr_Value_PVT;