[Home] [Help]
PACKAGE BODY: APPS.PV_COMMON_CHECKS_PVT
Source
1 PACKAGE BODY PV_COMMON_CHECKS_PVT as
2 /* $Header: pvrvlkpb.pls 120.0 2005/05/27 16:18:45 appldev noship $ */
3 -- Start of Comments
4 -- Package name : PV_COMMON_CHECKS_PVT
5 -- Purpose :
6 -- History :
7 -- 01/08/2002 SOLIN Created.
8 -- NOTE :
9 -- End of Comments
10
11
12 G_PKG_NAME CONSTANT VARCHAR2(30):= 'PV_COMMON_CHECKS_PVT';
13 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvrvlkpb.pls';
14
15 AS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
16 AS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
17 AS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
18
19 PROCEDURE Set_Message(
20 p_msg_level IN NUMBER,
21 p_msg_name IN VARCHAR2,
22 p_token1 IN VARCHAR2,
23 p_token1_value IN VARCHAR2,
24 p_token2 IN VARCHAR2,
25 p_token2_value IN VARCHAR2,
26 p_token3 IN VARCHAR2,
27 p_token3_value IN VARCHAR2,
28 p_token4 IN VARCHAR2,
29 p_token4_value IN VARCHAR2
30 )
31 IS
32 BEGIN
33 IF FND_MSG_PUB.Check_Msg_Level(p_msg_level)
34 THEN
35 FND_MESSAGE.Set_Name('PV', p_msg_name);
36 FND_MESSAGE.Set_Token(p_token1, p_token1_value);
37 FND_MESSAGE.Set_Token(p_token2, p_token2_value);
38 FND_MESSAGE.Set_Token(p_token3, p_token3_value);
39 FND_MESSAGE.Set_Token(p_token4, p_token4_value);
40 FND_MSG_PUB.Add;
41 END IF;
42 END Set_Message;
43
44
45 PROCEDURE Set_Message(
46 p_msg_level IN NUMBER,
47 p_msg_name IN VARCHAR2,
48 p_token1 IN VARCHAR2,
49 p_token1_value IN VARCHAR2,
50 p_token2 IN VARCHAR2,
51 p_token2_value IN VARCHAR2
52 )
53 IS
54 BEGIN
55 IF FND_MSG_PUB.Check_Msg_Level(p_msg_level)
56 THEN
57 FND_MESSAGE.Set_Name('PV', p_msg_name);
58 FND_MESSAGE.Set_Token(p_token1, p_token1_value);
59 FND_MESSAGE.Set_Token(p_token2, p_token2_value);
60 FND_MSG_PUB.Add;
61 END IF;
62 END Set_Message;
63
64
65 PROCEDURE Validate_OBJECT_VERSION_NUMBER (
66 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
67 P_Validation_mode IN VARCHAR2,
68 P_OBJECT_VERSION_NUMBER IN NUMBER,
69 X_Return_Status OUT NOCOPY VARCHAR2,
70 X_Msg_Count OUT NOCOPY NUMBER,
71 X_Msg_Data OUT NOCOPY VARCHAR2
72 )
73 IS
74 BEGIN
75
76 -- Initialize message list if p_init_msg_list is set to TRUE.
77 IF FND_API.to_Boolean( p_init_msg_list )
78 THEN
79 FND_MSG_PUB.initialize;
80 END IF;
81
82
83 -- Initialize API return status to SUCCESS
84 x_return_status := FND_API.G_RET_STS_SUCCESS;
85
86 IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
87 THEN
88 -- IF p_OBJECT_VERSION_NUMBER is not NULL and p_OBJECT_VERSION_NUMBER <> G_MISS_NUM
89 -- verify if data is valid
90 -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
91 NULL;
92 ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
93 THEN
94 -- validate NOT NULL column
95
96 IF(p_OBJECT_VERSION_NUMBER is NULL or p_OBJECT_VERSION_NUMBER = FND_API.G_MISS_NUM)
97 THEN
98 IF (AS_DEBUG_HIGH_ON) THEN
99
100 AS_UTILITY_PVT.Debug_Message('ERROR', 'Private entyrout API: -Violate NOT NULL constraint(OBJECT_VERSION_NUMBER)');
101 END IF;
102 x_return_status := FND_API.G_RET_STS_ERROR;
103 END IF;
104
105 END IF;
106
107
108 -- Standard call to get message count and if count is 1, get message info.
109 FND_MSG_PUB.Count_And_Get
110 ( p_count => x_msg_count,
111 p_data => x_msg_data
112 );
113
114 END Validate_OBJECT_VERSION_NUMBER;
115
116
117 PROCEDURE Validate_lookup (
118 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
119 P_Validation_mode IN VARCHAR2,
120 P_TABLE_NAME IN VARCHAR2,
121 P_COLUMN_NAME IN VARCHAR2,
122 P_LOOKUP_TYPE IN VARCHAR2,
123 P_LOOKUP_CODE IN VARCHAR2,
124 X_Return_Status OUT NOCOPY VARCHAR2,
125 X_Msg_Count OUT NOCOPY NUMBER,
126 X_Msg_Data OUT NOCOPY VARCHAR2
127 )
128 IS
129 CURSOR C_Lookup_Exists (C_Lookup_Code VARCHAR2, C_Lookup_Type VARCHAR2) IS
130 SELECT 'X'
131 FROM fnd_lookup_values
132 WHERE lookup_type = C_Lookup_Type
133 AND lookup_code = C_Lookup_Code
134 AND enabled_flag = 'Y'
135 AND (start_date_active IS NULL OR start_date_active < SYSDATE)
136 AND (end_date_active IS NULL OR end_date_active > SYSDATE);
137
138 l_val VARCHAR2(1);
139 BEGIN
140
141 -- Initialize message list if p_init_msg_list is set to TRUE.
142 IF FND_API.to_Boolean( p_init_msg_list )
143 THEN
144 FND_MSG_PUB.initialize;
145 END IF;
146
147
148 -- Initialize API return status to SUCCESS
149 x_return_status := FND_API.G_RET_STS_SUCCESS;
150
151 IF (p_lookup_type is NOT NULL
152 AND p_lookup_type <> FND_API.G_MISS_CHAR)
153 THEN
154 OPEN C_Lookup_Exists ( p_lookup_code, p_lookup_type);
155 FETCH C_Lookup_Exists into l_val;
156
157 IF C_Lookup_Exists%NOTFOUND
158 THEN
159 Set_Message(
160 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
161 p_msg_name => 'API_INVALID_CODE',
162 p_token1 => 'TABLE_NAME',
163 p_token1_value => p_table_name,
164 p_token2 => 'COLUMN_NAME',
165 p_token2_value => p_column_name,
166 p_token3 => 'LOOKUP_TYPE',
167 p_token3_value => p_lookup_type,
168 p_token4 => 'LOOKUP_CODE',
169 p_token4_value => p_LOOKUP_CODE );
170
171 x_return_status := FND_API.G_RET_STS_ERROR;
172 END IF;
173 CLOSE C_Lookup_Exists;
174 END IF;
175
176 -- Standard call to get message count and if count is 1, get message info.
177 FND_MSG_PUB.Count_And_Get
178 ( p_count => x_msg_count,
179 p_data => x_msg_data
180 );
181
182 END Validate_Lookup;
183
184
185 PROCEDURE Validate_PROCESS_RULE_ID (
186 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
187 P_Validation_mode IN VARCHAR2,
188 P_PROCESS_RULE_ID IN NUMBER,
189 X_Return_Status OUT NOCOPY VARCHAR2,
190 X_Msg_Count OUT NOCOPY NUMBER,
191 X_Msg_Data OUT NOCOPY VARCHAR2
192 )
193 IS
194 CURSOR C_Process_Rule_Id_Exists (c_process_rule_id NUMBER) IS
195 SELECT 'X'
196 FROM pv_process_rules_b
197 WHERE process_rule_id = c_process_rule_id;
198
199 l_val VARCHAR2(1);
200
201 BEGIN
202
203 -- Initialize message list if p_init_msg_list is set to TRUE.
204 IF FND_API.to_Boolean( p_init_msg_list )
205 THEN
206 FND_MSG_PUB.initialize;
207 END IF;
208
209
210 -- Initialize API return status to SUCCESS
211 x_return_status := FND_API.G_RET_STS_SUCCESS;
212
213 -- validate NOT NULL column
214 IF(p_PROCESS_RULE_ID is NULL)
215 THEN
216 IF (AS_DEBUG_HIGH_ON) THEN
217
218 AS_UTILITY_PVT.Debug_Message('ERROR', 'Private entyattmap API: -Violate NOT NULL constraint(PROCESS_RULE_ID)');
219 END IF;
220 x_return_status := FND_API.G_RET_STS_ERROR;
221 END IF;
222
223 OPEN C_Process_Rule_Id_Exists (p_process_rule_id);
224 FETCH C_Process_Rule_Id_Exists into l_val;
225
226 IF C_Process_Rule_Id_Exists%NOTFOUND
227 THEN
228 AS_UTILITY_PVT.Set_Message(
229 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
230 p_msg_name => 'API_INVALID_ID',
231 p_token1 => 'COLUMN',
232 p_token1_value => 'PROCESS_RULE_ID',
233 p_token2 => 'VALUE',
234 p_token2_value => p_process_rule_id );
235
236 x_return_status := FND_API.G_RET_STS_ERROR;
237 END IF;
238 CLOSE C_Process_Rule_Id_Exists;
239
240 -- Standard call to get message count and if count is 1, get message info.
241 FND_MSG_PUB.Count_And_Get
242 ( p_count => x_msg_count,
243 p_data => x_msg_data
244 );
245
246 END Validate_PROCESS_RULE_ID;
247
248
249 PROCEDURE Validate_ATTRIBUTE_ID (
250 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
251 P_Validation_mode IN VARCHAR2,
252 P_ATTRIBUTE_ID IN NUMBER,
253 X_Return_Status OUT NOCOPY VARCHAR2,
254 X_Msg_Count OUT NOCOPY NUMBER,
255 X_Msg_Data OUT NOCOPY VARCHAR2
256 )
257 IS
258 CURSOR C_attribute_id_Exists (c_attribute_id NUMBER) IS
259 SELECT 'X'
260 FROM pv_attributes_b
261 WHERE attribute_id = c_attribute_id;
262
263 l_val VARCHAR2(1);
264
265 BEGIN
266
267 -- Initialize message list if p_init_msg_list is set to TRUE.
268 IF FND_API.to_Boolean( p_init_msg_list )
269 THEN
270 FND_MSG_PUB.initialize;
271 END IF;
272
273
274 -- Initialize API return status to SUCCESS
275 x_return_status := FND_API.G_RET_STS_SUCCESS;
276
277 -- validate NOT NULL column
278 IF(p_ATTRIBUTE_ID is NULL)
279 THEN
280 IF (AS_DEBUG_HIGH_ON) THEN
281
282 AS_UTILITY_PVT.Debug_Message('ERROR',
283 'Private entyattmap API: -Violate NOT NULL constraint(ATTRIBUTE_ID)');
284 END IF;
285 x_return_status := FND_API.G_RET_STS_ERROR;
286 END IF;
287
288 OPEN C_attribute_id_Exists (p_attribute_id);
289 FETCH C_attribute_id_Exists into l_val;
290
291 IF C_attribute_id_Exists%NOTFOUND
292 THEN
293 AS_UTILITY_PVT.Set_Message(
294 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
295 p_msg_name => 'API_INVALID_ID',
296 p_token1 => 'ATTRIBUTE_ID',
297 p_token1_value => p_attribute_id );
298
299 x_return_status := FND_API.G_RET_STS_ERROR;
300 END IF;
301 CLOSE C_attribute_id_Exists;
302
303 -- Standard call to get message count and if count is 1, get message info.
304 FND_MSG_PUB.Count_And_Get
305 ( p_count => x_msg_count,
306 p_data => x_msg_data
307 );
308
309 END Validate_ATTRIBUTE_ID;
310
311
312 PROCEDURE Validate_operator (
313 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
314 P_Validation_mode IN VARCHAR2,
315 P_TABLE_NAME IN VARCHAR2,
316 P_COLUMN_NAME IN VARCHAR2,
317 P_ATTRIBUTE_ID IN NUMBER,
318 P_OPERATOR_CODE IN VARCHAR2,
319 X_Return_Status OUT NOCOPY VARCHAR2,
320 X_Msg_Count OUT NOCOPY NUMBER,
321 X_Msg_Data OUT NOCOPY VARCHAR2
322 )
323 IS
324 CURSOR c_get_attr_type (c_attribute_id NUMBER) IS
325 SELECT RETURN_TYPE
326 FROM pv_attributes_b
327 WHERE attribute_id = c_attribute_id;
328
329 l_return_type VARCHAR2(30);
330
331 BEGIN
332
333 -- Initialize message list if p_init_msg_list is set to TRUE.
334 IF FND_API.to_Boolean( p_init_msg_list )
335 THEN
336 FND_MSG_PUB.initialize;
337 END IF;
338
339 -- Initialize API return status to SUCCESS
340 x_return_status := FND_API.G_RET_STS_SUCCESS;
341
342 -- validate NOT NULL column
343 IF(p_ATTRIBUTE_ID is NULL)
344 THEN
345 IF (AS_DEBUG_HIGH_ON) THEN
346
347 AS_UTILITY_PVT.Debug_Message('ERROR',
348 'Private entyattmap API: -Violate NOT NULL constraint(ATTRIBUTE_ID)');
349 END IF;
350 x_return_status := FND_API.G_RET_STS_ERROR;
351 END IF;
352
353 OPEN c_get_attr_type (p_attribute_id);
354 FETCH c_get_attr_type into l_return_type;
355
356 IF c_get_attr_type%NOTFOUND
357 THEN
358 AS_UTILITY_PVT.Set_Message(
359 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
360 p_msg_name => 'API_INVALID_ID',
361 p_token1 => 'ATTRIBUTE_ID',
362 p_token1_value => p_attribute_id );
363
364 x_return_status := FND_API.G_RET_STS_ERROR;
365 END IF;
366 CLOSE c_get_attr_type;
367
368 if l_return_type in ('CURRENCY', 'DATE', 'NUMBER') then
369
370 pv_common_checks_pvt.Validate_Lookup(
371 p_init_msg_list => FND_API.G_FALSE,
372 p_validation_mode => p_validation_mode,
373 p_TABLE_NAME => p_table_name,
374 p_COLUMN_NAME => p_column_name,
375 p_LOOKUP_TYPE => 'PV_NUM_DATE_OPERATOR',
376 p_LOOKUP_CODE => P_OPERATOR_CODE,
377 x_return_status => x_return_status,
378 x_msg_count => x_msg_count,
379 x_msg_data => x_msg_data);
380
381 elsif l_return_type in ('NULL_CHECK') then
382
383 pv_common_checks_pvt.Validate_Lookup(
384 p_init_msg_list => FND_API.G_FALSE,
385 p_validation_mode => p_validation_mode,
386 p_TABLE_NAME => p_table_name,
387 p_COLUMN_NAME => p_column_name,
388 p_LOOKUP_TYPE => 'PV_EXIST_OPERATOR',
389 p_LOOKUP_CODE => P_OPERATOR_CODE,
390 x_return_status => x_return_status,
391 x_msg_count => x_msg_count,
392 x_msg_data => x_msg_data);
393
394 elsif l_return_type in ('STRING') then
395
396 pv_common_checks_pvt.Validate_Lookup(
397 p_init_msg_list => FND_API.G_FALSE,
398 p_validation_mode => p_validation_mode,
399 p_TABLE_NAME => p_table_name,
400 p_COLUMN_NAME => p_column_name,
401 p_LOOKUP_TYPE => 'PV_TEXT_OPERATOR',
402 p_LOOKUP_CODE => P_OPERATOR_CODE,
403 x_return_status => x_return_status,
404 x_msg_count => x_msg_count,
405 x_msg_data => x_msg_data);
406
407 else
408 -- throw invalid return type error
409 null;
410 end if;
411
412 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
413 raise FND_API.G_EXC_ERROR;
414 END IF;
415
416 -- Standard call to get message count and if count is 1, get message info.
417 FND_MSG_PUB.Count_And_Get
418 ( p_count => x_msg_count,
419 p_data => x_msg_data
420 );
421
422 END Validate_OPERATOR;
423
424
425 PROCEDURE Validate_FLAG (
426 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
427 P_Validation_mode IN VARCHAR2,
428 P_FLAG IN VARCHAR2,
429 X_Return_Status OUT NOCOPY VARCHAR2,
430 X_Msg_Count OUT NOCOPY NUMBER,
431 X_Msg_Data OUT NOCOPY VARCHAR2
432 )
433 IS
434 BEGIN
435
436 -- Initialize message list if p_init_msg_list is set to TRUE.
437 IF FND_API.to_Boolean( p_init_msg_list )
438 THEN
439 FND_MSG_PUB.initialize;
440 END IF;
441
445 IF p_FLAG is not NULL and p_FLAG <> FND_API.G_MISS_CHAR then
442 -- Initialize API return status to SUCCESS
443 x_return_status := FND_API.G_RET_STS_SUCCESS;
444
446 if p_FLAG not in ('Y', 'N') THEN
447
448 AS_UTILITY_PVT.Set_Message(
449 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
450 p_msg_name => 'API_INVALID_FLAG',
451 p_token1 => 'FLAG',
452 p_token1_value => p_flag );
453
454 x_return_status := FND_API.G_RET_STS_ERROR;
455 end if;
456 END IF;
457
458 -- Standard call to get message count and if count is 1, get message info.
459 FND_MSG_PUB.Count_And_Get
460 ( p_count => x_msg_count,
461 p_data => x_msg_data
462 );
463
464 END Validate_FLAG;
465
466
467 End PV_COMMON_CHECKS_PVT;