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