DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSC_PROFILE_CHECK_RULES_PVT

Source


1 PACKAGE BODY CSC_PROFILE_CHECK_RULES_PVT as
2 /* $Header: cscvpcrb.pls 115.13 2002/12/03 17:57:22 jamose ship $ */
3 -- Start of Comments
4 -- Package name     : CSC_PROFILE_CHECK_RULES_PVT
5 -- Purpose          :
6 -- History          :26 Nov 02 jamose made changes for the NOCOPY and FND_API.G_MISS*
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSC_PROFILE_CHECK_RULES_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cscvucrb.pls';
13 
14 PROCEDURE Convert_Columns_to_Rec(
15     P_CHECK_ID     		 IN  NUMBER,
16     P_BLOCK_ID     		 IN  NUMBER,
17     P_SEQUENCE           IN  NUMBER,
18     P_CREATED_BY         IN  NUMBER,
19     P_CREATION_DATE      IN  DATE,
20     P_LAST_UPDATED_BY    IN  NUMBER,
21     P_LAST_UPDATE_DATE   IN  DATE,
22     P_LAST_UPDATE_LOGIN  IN  NUMBER,
23     P_LOGICAL_OPERATOR   IN  VARCHAR2,
24     P_LEFT_PAREN         IN  VARCHAR2,
25     P_COMPARISON_OPERATOR  IN  VARCHAR2,
26     P_EXPRESSION           IN  VARCHAR2,
27     P_EXPR_TO_BLOCK_ID     IN  NUMBER,
28     P_RIGHT_PAREN          IN  VARCHAR2,
29     P_SEEDED_FLAG          IN  VARCHAR2,
30     X_CHK_RULES_Rec		   OUT NOCOPY CHK_RULES_Rec_Type
31     )
32 IS
33 BEGIN
34 
35   X_CHK_RULES_rec.CHECK_ID := P_CHECK_ID;
36   X_CHK_RULES_rec.BLOCK_ID := P_BLOCK_ID;
37 
38    X_CHK_RULES_rec.SEQUENCE := P_SEQUENCE;
39    X_CHK_RULES_rec.LOGICAL_OPERATOR := P_LOGICAL_OPERATOR;
40    X_CHK_RULES_rec.LEFT_PAREN := P_LEFT_PAREN;
41    X_CHK_RULES_rec.COMPARISON_OPERATOR := P_COMPARISON_OPERATOR;
42    X_CHK_RULES_rec.EXPRESSION := P_EXPRESSION;
43    X_CHK_RULES_rec.EXPR_TO_BLOCK_ID := P_EXPR_TO_BLOCK_ID;
44    X_CHK_RULES_rec.RIGHT_PAREN := P_RIGHT_PAREN;
45    X_CHK_RULES_rec.SEEDED_FLAG := P_SEEDED_FLAG;
46    X_CHK_RULES_rec.CREATED_BY := P_CREATED_BY;
47    X_CHK_RULES_rec.CREATION_DATE := P_CREATION_DATE;
48    X_CHK_RULES_rec.LAST_UPDATED_BY := P_LAST_UPDATED_BY;
49    X_CHK_RULES_rec.LAST_UPDATE_DATE := P_LAST_UPDATE_DATE;
50    X_CHK_RULES_rec.LAST_UPDATE_LOGIN := P_LAST_UPDATE_LOGIN;
51 
52 END;
53 
54 
55 PROCEDURE Create_profile_check_rules(
56     P_Api_Version_Number         IN   NUMBER,
57     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
58     P_Commit                     IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
59     p_validation_level           IN   NUMBER       := CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL,
60     P_CHECK_ID     		         IN  NUMBER,
61     P_BLOCK_ID     		         IN  NUMBER,
62     P_SEQUENCE                   IN  NUMBER,
63     P_CREATED_BY                 IN  NUMBER,
64     P_CREATION_DATE              IN  DATE,
65     P_LAST_UPDATED_BY            IN  NUMBER,
66     P_LAST_UPDATE_DATE           IN  DATE,
67     P_LAST_UPDATE_LOGIN          IN  NUMBER,
68     P_LOGICAL_OPERATOR           IN  VARCHAR2,
69     P_LEFT_PAREN                 IN  VARCHAR2,
70     P_COMPARISON_OPERATOR        IN  VARCHAR2,
71     P_EXPRESSION                 IN  VARCHAR2,
72     P_EXPR_TO_BLOCK_ID           IN  NUMBER,
73     P_RIGHT_PAREN                IN  VARCHAR2,
74     P_SEEDED_FLAG                IN  VARCHAR2,
75     X_OBJECT_VERSION_NUMBER      OUT NOCOPY NUMBER,
76     X_Return_Status              OUT NOCOPY VARCHAR2,
77     X_Msg_Count                  OUT NOCOPY NUMBER,
78     X_Msg_Data                   OUT NOCOPY VARCHAR2
79     )
80 IS
81 l_CHK_RULES_Rec CHK_RULES_Rec_Type;
82 BEGIN
83 
84  Convert_Columns_to_Rec(
85     P_CHECK_ID         	   => P_CHECK_ID,
86     P_BLOCK_ID     	   => P_BLOCK_ID,
87     P_SEQUENCE     	   => P_SEQUENCE,
88     P_CREATED_BY       	   => P_CREATED_BY,
89     P_CREATION_DATE        => P_CREATION_DATE,
90     P_LAST_UPDATED_BY      => P_LAST_UPDATED_BY,
91     P_LAST_UPDATE_DATE     => P_LAST_UPDATE_DATE,
92     P_LAST_UPDATE_LOGIN    => P_LAST_UPDATE_LOGIN,
93     P_LOGICAL_OPERATOR     => P_LOGICAL_OPERATOR,
94     P_LEFT_PAREN           => P_LEFT_PAREN,
95     P_COMPARISON_OPERATOR  => P_COMPARISON_OPERATOR,
96     P_EXPRESSION           => P_EXPRESSION,
97     P_EXPR_TO_BLOCK_ID     => P_EXPR_TO_BLOCK_ID,
98     P_RIGHT_PAREN          => P_RIGHT_PAREN,
99     P_SEEDED_FLAG          => P_SEEDED_FLAG,
100     X_CHK_RULES_Rec	   => l_CHK_RULES_Rec
101     );
102 
103  Create_profile_check_rules(
104     P_Api_Version_Number    => P_Api_Version_Number ,
105     P_Init_Msg_List         => P_Init_Msg_List,
106     P_Commit                => P_Commit,
107     p_validation_level      => p_validation_level,
108     P_CHK_RULES_Rec         => l_CHK_RULES_Rec,
109     X_OBJECT_VERSION_NUMBER  => X_OBJECT_VERSION_NUMBER,
110     X_Return_Status           => X_Return_Status,
111     X_Msg_Count               => X_Msg_Count,
112     X_Msg_Data                => X_Msg_Data
113     );
114 
115 
116 END Create_profile_check_rules;
117 
118 PROCEDURE Create_profile_check_rules(
119     P_Api_Version_Number         IN   NUMBER,
120     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
121     P_Commit                     IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
122     p_validation_level           IN   NUMBER       := CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL,
123     P_CHK_RULES_Rec              IN   CHK_RULES_Rec_Type  := G_MISS_CHK_RULES_REC,
124     X_Object_Version_Number      OUT NOCOPY NUMBER,
125     X_Return_Status              OUT NOCOPY VARCHAR2,
126     X_Msg_Count                  OUT NOCOPY NUMBER,
127     X_Msg_Data                   OUT NOCOPY VARCHAR2
128     )
129  IS
130 l_api_name                CONSTANT VARCHAR2(30) := 'Create_profile_check_rules';
131 l_api_version_number      CONSTANT NUMBER   := 1.0;
132 l_return_status        VARCHAR2(1);
133 
134 -- local record type
135 l_chk_rules_rec	CHK_RULES_REC_TYPE := P_CHK_RULES_Rec;
136 l_check_id Number;
137 
138 BEGIN
139 
140       -- Standard Start of API savepoint
141       SAVEPOINT CREATE_PROFILE_CHECK_RULES_PVT;
142 
143 
144       -- Standard call to check for call compatibility.
145       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
146                          	             p_api_version_number,
147                                            l_api_name,
148                                            G_PKG_NAME)
149       THEN
150           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
151       END IF;
152 
153 
154       -- Initialize message list if p_init_msg_list is set to TRUE.
155       IF FND_API.to_Boolean( p_init_msg_list )
156       THEN
157           FND_MSG_PUB.initialize;
158       END IF;
159 
160 
161       -- Initialize API return status to SUCCESS
162       x_return_status := FND_API.G_RET_STS_SUCCESS;
163 
164       --
165       -- API body
166       --
167 
168       IF ( P_validation_level >= CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL)
169       THEN
170           -- Invoke validation procedures
171           Validate_profile_check_rules(
172 	     p_api_name	  => l_api_name,
173              p_init_msg_list    => CSC_CORE_UTILS_PVT.G_FALSE,
174              p_validation_level => p_validation_level,
175              p_validation_mode  => CSC_CORE_UTILS_PVT.G_CREATE,
176 	     P_CHK_RULES_Rec  => p_CHK_RULES_Rec,
177              x_return_status    => x_return_status,
178              x_msg_count        => x_msg_count,
179              x_msg_data         => x_msg_data);
180       END IF;
181 
182       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
183           RAISE FND_API.G_EXC_ERROR;
184       END IF;
185 
186       -- Invoke table handler(CSC_PROF_CHECK_RULES_PKG.Insert_Row)
187 
188       CSC_PROFILE_CHECK_RULES_PKG.Insert_Row(
189           p_CHECK_ID  		=> l_CHK_RULES_rec.CHECK_ID,
190           p_SEQUENCE  		=> l_CHK_RULES_rec.SEQUENCE,
191           p_CREATED_BY  	=> FND_GLOBAL.USER_ID,
192           p_CREATION_DATE  	=> SYSDATE,
193           p_LAST_UPDATED_BY  	=> FND_GLOBAL.USER_ID,
194           p_LAST_UPDATE_DATE  	=> SYSDATE,
195           p_LAST_UPDATE_LOGIN  	=> FND_GLOBAL.CONC_LOGIN_ID,
196           p_LOGICAL_OPERATOR  	=> l_CHK_RULES_rec.LOGICAL_OPERATOR,
197           p_LEFT_PAREN  	=> l_CHK_RULES_rec.LEFT_PAREN,
198           p_BLOCK_ID  		=> l_CHK_RULES_rec.BLOCK_ID,
199           p_COMPARISON_OPERATOR => l_CHK_RULES_rec.COMPARISON_OPERATOR,
200           p_EXPRESSION  	=> l_CHK_RULES_rec.EXPRESSION,
201           p_EXPR_TO_BLOCK_ID  	=> l_CHK_RULES_rec.EXPR_TO_BLOCK_ID,
202           p_RIGHT_PAREN  	=> l_CHK_RULES_rec.RIGHT_PAREN,
203           p_SEEDED_FLAG         => l_CHK_RULES_rec.SEEDED_FLAG,
204           x_OBJECT_VERSION_NUMBER => X_OBJECT_VERSION_NUMBER);
205 
206       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
207           RAISE FND_API.G_EXC_ERROR;
208       END IF;
209 
210 
211       --
212       -- End of API body
213       --
214 
215       -- Standard check for p_commit
216       IF FND_API.to_Boolean( p_commit )
217       THEN
218           COMMIT WORK;
219       END IF;
220 
221 
222       -- Standard call to get message count and if count is 1, get message info.
223       FND_MSG_PUB.Count_And_Get
224       (  p_count          =>   x_msg_count,
225          p_data           =>   x_msg_data
226       );
227 
228       EXCEPTION
229           WHEN FND_API.G_EXC_ERROR THEN
230     		  ROLLBACK TO Create_profile_check_rules_PVT;
231     		  x_return_status := FND_API.G_RET_STS_ERROR;
232     		  FND_MSG_PUB.Count_And_Get(
233       		 p_count => x_msg_count,
234         		 p_data  => x_msg_data );
235               APP_EXCEPTION.RAISE_EXCEPTION;
236           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
237     		  ROLLBACK TO Create_profile_check_rules_PVT;
238     		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
239     		  FND_MSG_PUB.Count_And_Get(
240       		 p_count => x_msg_count,
241         		 p_data  => x_msg_data );
242               APP_EXCEPTION.RAISE_EXCEPTION;
243           WHEN OTHERS THEN
244     		  ROLLBACK TO Create_profile_check_rules_PVT;
245     		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
246     		  FND_MSG_PUB.Count_And_Get(
247       		 p_count => x_msg_count,
248         		 p_data  => x_msg_data );
249 		  FND_MSG_PUB.Build_Exc_Msg;
250               APP_EXCEPTION.RAISE_EXCEPTION;
251 
252 End Create_profile_check_rules;
253 
254 
255 
256 PROCEDURE Update_profile_check_rules(
257     P_Api_Version_Number         IN  NUMBER,
258     P_Init_Msg_List              IN  VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
259     P_Commit                     IN  VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
260     p_validation_level           IN  NUMBER       := CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL,
261     P_CHECK_ID     		         IN  NUMBER,
262     P_BLOCK_ID     		         IN  NUMBER,
263     P_SEQUENCE                   IN  NUMBER,
264     P_CREATED_BY                 IN  NUMBER,
265     P_CREATION_DATE              IN  DATE,
266     P_LAST_UPDATED_BY            IN  NUMBER,
267     P_LAST_UPDATE_DATE           IN  DATE,
268     P_LAST_UPDATE_LOGIN          IN  NUMBER,
269     P_LOGICAL_OPERATOR           IN  VARCHAR2,
270     P_LEFT_PAREN                 IN  VARCHAR2,
271     P_COMPARISON_OPERATOR        IN  VARCHAR2,
272     P_EXPRESSION                 IN  VARCHAR2,
273     P_EXPR_TO_BLOCK_ID           IN  NUMBER,
274     P_RIGHT_PAREN                IN  VARCHAR2,
275     P_SEEDED_FLAG                IN  VARCHAR2,
276     PX_OBJECT_VERSION_NUMBER     IN OUT NOCOPY NUMBER,
277     X_Return_Status              OUT NOCOPY VARCHAR2,
278     X_Msg_Count                  OUT NOCOPY NUMBER,
279     X_Msg_Data                   OUT NOCOPY VARCHAR2
280     )
281 IS
282 l_CHK_RULES_Rec CHK_RULES_Rec_Type;
283 BEGIN
284 
285  Convert_Columns_to_Rec(
286     P_CHECK_ID     	   => P_CHECK_ID,
287     P_BLOCK_ID     	   => P_BLOCK_ID,
288     P_SEQUENCE     	   => P_SEQUENCE,
289     P_CREATED_BY   	   => P_CREATED_BY,
290     P_CREATION_DATE    	   => P_CREATION_DATE,
291     P_LAST_UPDATED_BY      => P_LAST_UPDATED_BY,
292     P_LAST_UPDATE_DATE     => P_LAST_UPDATE_DATE,
293     P_LAST_UPDATE_LOGIN    => P_LAST_UPDATE_LOGIN,
294     P_LOGICAL_OPERATOR     => P_LOGICAL_OPERATOR,
295     P_LEFT_PAREN           => P_LEFT_PAREN,
296     P_COMPARISON_OPERATOR  => P_COMPARISON_OPERATOR,
297     P_EXPRESSION           => P_EXPRESSION,
298     P_EXPR_TO_BLOCK_ID     => P_EXPR_TO_BLOCK_ID,
299     P_RIGHT_PAREN          => P_RIGHT_PAREN,
300     P_SEEDED_FLAG          => P_SEEDED_FLAG,
301     X_CHK_RULES_Rec	   => l_CHK_RULES_Rec
302     );
303 
304  Update_profile_check_rules(
305     P_Api_Version_Number    => P_Api_Version_Number ,
306     P_Init_Msg_List         => P_Init_Msg_List,
307     P_Commit                => P_Commit,
308     p_validation_level      => p_validation_level,
309     P_CHK_RULES_Rec         => l_CHK_RULES_Rec,
310     PX_Object_Version_Number  => PX_OBJECT_VERSION_NUMBER,
311     X_Return_Status           => X_Return_Status,
312     X_Msg_Count               => X_Msg_Count,
313     X_Msg_Data                => X_Msg_Data
314     );
315 
316 
317 END Update_profile_check_rules;
318 
319 
320 PROCEDURE Update_profile_check_rules(
321     P_Api_Version_Number         IN   NUMBER,
322     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
323     P_Commit                     IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
324     p_validation_level           IN  NUMBER       := CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL,
325     P_CHK_RULES_Rec       IN    CHK_RULES_Rec_Type  := G_MISS_CHK_RULES_REC,
326     PX_OBJECT_VERSION_NUMBER    IN OUT NOCOPY NUMBER,
327     X_Return_Status              OUT NOCOPY VARCHAR2,
328     X_Msg_Count                  OUT NOCOPY NUMBER,
329     X_Msg_Data                   OUT NOCOPY VARCHAR2
330     )
331 
332  IS
333 
334 Cursor C_Get_profile_check_rules(c_CHECK_ID NUMBER,c_sequence NUMBER,c_object_version_number NUMBER) IS
335     Select rowid,
336            CHECK_ID,
337            SEQUENCE,
338            CREATED_BY,
339            CREATION_DATE,
340            LAST_UPDATED_BY,
341            LAST_UPDATE_DATE,
342            LAST_UPDATE_LOGIN,
343            LOGICAL_OPERATOR,
344            LEFT_PAREN,
345            BLOCK_ID,
346            COMPARISON_OPERATOR,
347            EXPRESSION,
348            EXPR_TO_BLOCK_ID,
349            RIGHT_PAREN
350     From  CSC_PROF_CHECK_RULES_VL
351     Where check_id = c_check_id
352     and sequence = c_sequence
353     and object_version_number = c_object_version_number
354     For Update NOWAIT;
355 l_api_name                CONSTANT VARCHAR2(30) := 'Update_profile_check_rules';
356 l_api_version_number      CONSTANT NUMBER   := 1.0;
357 -- Local Variables
358 l_rowid  ROWID;
359 
360 --local record type
361 l_old_CHK_RULES_rec CHK_RULES_Rec_Type := G_MISS_CHK_RULES_REC;
362 
363 l_CHK_RULES_rec CHK_RULES_Rec_Type := P_CHK_RULES_Rec;
364 
365  BEGIN
366 
367       -- Standard Start of API savepoint
368       SAVEPOINT UPDATE_PROFILE_CHECK_RULES_PVT;
369 
370       -- Standard call to check for call compatibility.
371       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
372                          	             p_api_version_number,
373                                            l_api_name,
374                                            G_PKG_NAME)
375       THEN
376           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
377       END IF;
378 
379 
380       -- Initialize message list if p_init_msg_list is set to TRUE.
381       IF FND_API.to_Boolean( p_init_msg_list )
382       THEN
383           FND_MSG_PUB.initialize;
384       END IF;
385 
386 
387 
388       -- Initialize API return status to SUCCESS
389       x_return_status := FND_API.G_RET_STS_SUCCESS;
390 
391       --
392       -- Api body
396 
393       --
394 
395       Open C_Get_profile_check_rules( l_CHK_RULES_REC.CHECK_ID,l_CHK_RULES_REC.SEQUENCE,px_Object_Version_Number);
397       Fetch C_Get_profile_check_rules into
398                l_rowid,
399                l_old_CHK_RULES_rec.CHECK_ID,
400                l_old_CHK_RULES_rec.SEQUENCE,
401                l_old_CHK_RULES_rec.CREATED_BY,
402                l_old_CHK_RULES_rec.CREATION_DATE,
403                l_old_CHK_RULES_rec.LAST_UPDATED_BY,
404                l_old_CHK_RULES_rec.LAST_UPDATE_DATE,
405                l_old_CHK_RULES_rec.LAST_UPDATE_LOGIN,
406                l_old_CHK_RULES_rec.LOGICAL_OPERATOR,
407                l_old_CHK_RULES_rec.LEFT_PAREN,
408                l_old_CHK_RULES_rec.BLOCK_ID,
409                l_old_CHK_RULES_rec.COMPARISON_OPERATOR,
410                l_old_CHK_RULES_rec.EXPRESSION,
411                l_old_CHK_RULES_rec.EXPR_TO_BLOCK_ID,
412                l_old_CHK_RULES_rec.RIGHT_PAREN;
413 
414        If ( C_Get_profile_check_rules%NOTFOUND) Then
415            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
416            THEN
417 		   CSC_CORE_UTILS_PVT.Record_Is_Locked_Msg(p_api_name => l_api_name);
418            END IF;
419            raise FND_API.G_EXC_ERROR;
420        END IF;
421 
422 
423       IF ( P_validation_level >= CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL)
424       THEN
425 	    -- bug 1231208 -- > Validation mode should be UPDATE here
426           -- Invoke validation procedures
427           Validate_profile_check_rules(
428 		  p_api_name	  => l_api_name,
429                   p_init_msg_list    => CSC_CORE_UTILS_PVT.G_FALSE,
430                   p_validation_level => p_validation_level,
431                   --p_validation_mode  => CSC_CORE_UTILS_PVT.G_CREATE,
432                   p_validation_mode  => CSC_CORE_UTILS_PVT.G_UPDATE,
433 		  P_CHK_RULES_Rec  => p_CHK_RULES_Rec,
434                   x_return_status    => x_return_status,
435                   x_msg_count        => x_msg_count,
436                   x_msg_data         => x_msg_data);
437 
438 
439       END IF;
440 
441       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
442           RAISE FND_API.G_EXC_ERROR;
443       END IF;
444 
445       -- Invoke table handler(CSC_PROF_CHECK_RULES_PKG.Update_Row)
446       CSC_PROFILE_CHECK_RULES_PKG.Update_Row(
447           p_CHECK_ID  => csc_core_utils_pvt.get_g_miss_num(l_CHK_RULES_rec.CHECK_ID,l_old_CHK_RULES_rec.CHECK_ID),
448           p_SEQUENCE  => csc_core_utils_pvt.get_g_miss_num(l_CHK_RULES_rec.SEQUENCE,l_old_CHK_RULES_rec.SEQUENCE),
449           p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
450           p_LAST_UPDATE_DATE  => SYSDATE,
451           p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
452           p_LOGICAL_OPERATOR  =>csc_core_utils_pvt.get_g_miss_char(l_CHK_RULES_rec.LOGICAL_OPERATOR,l_old_CHK_RULES_rec.LOGICAL_OPERATOR),
453           p_LEFT_PAREN  => csc_core_utils_pvt.get_g_miss_char(l_CHK_RULES_rec.LEFT_PAREN,l_old_CHK_RULES_rec.LEFT_PAREN),
454           p_BLOCK_ID  => csc_core_utils_pvt.get_g_miss_num(l_CHK_RULES_rec.BLOCK_ID,l_old_CHK_RULES_rec.BLOCK_ID),
455           p_COMPARISON_OPERATOR  =>csc_core_utils_pvt.get_g_miss_char(l_CHK_RULES_rec.COMPARISON_OPERATOR,l_old_CHK_RULES_rec.COMPARISON_OPERATOR),
456           p_EXPRESSION  => csc_core_utils_pvt.get_g_miss_char(l_CHK_RULES_rec.EXPRESSION,l_old_CHK_RULES_rec.EXPRESSION),
457           p_EXPR_TO_BLOCK_ID  => csc_core_utils_pvt.get_g_miss_num(l_CHK_RULES_rec.EXPR_TO_BLOCK_ID,l_old_CHK_RULES_rec.EXPR_TO_BLOCK_ID),
458           p_RIGHT_PAREN  => csc_core_utils_pvt.get_g_miss_char(l_CHK_RULES_rec.RIGHT_PAREN,l_old_CHK_RULES_rec.RIGHT_PAREN),
459           p_SEEDED_FLAG  => csc_core_utils_pvt.get_g_miss_char(l_CHK_RULES_rec.SEEDED_FLAG,l_old_CHK_RULES_rec.SEEDED_FLAG),
460           px_OBJECT_VERSION_NUMBER => px_OBJECT_VERSION_NUMBER );
461 
462       --
463       -- End of API body.
464       --
465 
466       -- Standard check for p_commit
467       IF FND_API.to_Boolean( p_commit )
468       THEN
469           COMMIT WORK;
470       END IF;
471 
472 
473       -- Standard call to get message count and if count is 1, get message info.
474       FND_MSG_PUB.Count_And_Get
475       (  p_count          =>   x_msg_count,
476          p_data           =>   x_msg_data
477       );
478 
479       EXCEPTION
480           WHEN FND_API.G_EXC_ERROR THEN
481     		  ROLLBACK TO Update_profile_check_rules_PVT;
482     		  x_return_status := FND_API.G_RET_STS_ERROR;
483     		  FND_MSG_PUB.Count_And_Get(
484       		 p_count => x_msg_count,
485         		 p_data  => x_msg_data );
486               APP_EXCEPTION.RAISE_EXCEPTION;
487           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
488     		  ROLLBACK TO Update_profile_check_rules_PVT;
489     		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
490     		  FND_MSG_PUB.Count_And_Get(
491       		 p_count => x_msg_count,
492         		 p_data  => x_msg_data );
493               APP_EXCEPTION.RAISE_EXCEPTION;
494           WHEN OTHERS THEN
495     		  ROLLBACK TO Update_profile_check_rules_PVT;
496     		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
497     		  FND_MSG_PUB.Count_And_Get(
498       		 p_count => x_msg_count,
499         		 p_data  => x_msg_data );
500 		  FND_MSG_PUB.Build_Exc_Msg;
501             APP_EXCEPTION.RAISE_EXCEPTION;
502 End Update_profile_check_rules;
503 
504 
508     P_Commit                     IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
505 PROCEDURE Delete_profile_check_rules(
506     P_Api_Version_Number         IN   NUMBER,
507     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
509     p_validation_level           IN   NUMBER       := CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL,
510     P_CHECK_ID			 IN   NUMBER,
511     p_SEQUENCE                   IN   NUMBER,
512     p_OBJECT_VERSION_NUMBER      IN   NUMBER,
513     X_Return_Status              OUT NOCOPY VARCHAR2,
514     X_Msg_Count                  OUT NOCOPY NUMBER,
515     X_Msg_Data                   OUT NOCOPY VARCHAR2
516     )
517 
518  IS
519 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_profile_check_rules';
520 l_api_version_number      CONSTANT NUMBER   := 1.0;
521  BEGIN
522       -- Standard Start of API savepoint
523       SAVEPOINT DELETE_PROFILE_CHECK_RULES_PVT;
524 
525       -- Standard call to check for call compatibility.
526       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
527                          	             p_api_version_number,
528                                            l_api_name,
529                                            G_PKG_NAME)
530       THEN
531           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
532       END IF;
533 
534 
535       -- Initialize message list if p_init_msg_list is set to TRUE.
536       IF FND_API.to_Boolean( p_init_msg_list )
537       THEN
538           FND_MSG_PUB.initialize;
539       END IF;
540 
541       -- Initialize API return status to SUCCESS
542       x_return_status := FND_API.G_RET_STS_SUCCESS;
543 
544       --
545       -- Api body
546       --
547 
548       -- Invoke table handler(CSC_PROF_CHECK_RULES_PKG.Delete_Row)
549 
550       CSC_PROFILE_CHECK_RULES_PKG.Delete_Row(p_CHECK_ID  => p_CHECK_ID,
551                         p_SEQUENCE => p_SEQUENCE,
552                         p_OBJECT_VERSION_NUMBER => p_OBJECT_VERSION_NUMBER );
553 
554       --
555       -- End of API body
556       --
557 
558       -- Standard check for p_commit
559       IF FND_API.to_Boolean( p_commit )
560       THEN
561           COMMIT WORK;
562       END IF;
563 
564 
565       -- Standard call to get message count and if count is 1, get message info.
566       FND_MSG_PUB.Count_And_Get
567       (  p_count          =>   x_msg_count,
568          p_data           =>   x_msg_data
569       );
570 
571       EXCEPTION
572           WHEN FND_API.G_EXC_ERROR THEN
573     		  ROLLBACK TO Delete_profile_check_rules_PVT;
574     		  x_return_status := FND_API.G_RET_STS_ERROR;
575     		  FND_MSG_PUB.Count_And_Get(
576       		 p_count => x_msg_count,
577         		 p_data  => x_msg_data );
578             APP_EXCEPTION.RAISE_EXCEPTION;
579           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
580     		  ROLLBACK TO Delete_profile_check_rules_PVT;
581     		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
582     		  FND_MSG_PUB.Count_And_Get(
583       		 p_count => x_msg_count,
584         		 p_data  => x_msg_data );
585             APP_EXCEPTION.RAISE_EXCEPTION;
586           WHEN OTHERS THEN
587     		  ROLLBACK TO Delete_profile_check_rules_PVT;
588     		  x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
589     		  FND_MSG_PUB.Count_And_Get(
590       		 p_count => x_msg_count,
591         		 p_data  => x_msg_data );
592 		  FND_MSG_PUB.Build_Exc_Msg;
593             APP_EXCEPTION.RAISE_EXCEPTION;
594 End Delete_profile_check_rules;
595 
596 
597 -- Item-level validation procedures
598 PROCEDURE Validate_CHECK_ID (
599     P_Api_Name		IN	VARCHAR2,
600     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
601     P_Validation_mode            IN   VARCHAR2,
602     P_CHECK_ID                IN   NUMBER,
603     X_Return_Status              OUT NOCOPY VARCHAR2,
604     X_Msg_Count                  OUT NOCOPY NUMBER,
605     X_Msg_Data                   OUT NOCOPY VARCHAR2
606     )
607 IS
608 Cursor C1 IS
609  Select NULL
610  From csc_prof_checks_b
611  where check_id = p_check_id;
612 l_dummy NUMBER;
613 BEGIN
614 
615       -- Initialize message list if p_init_msg_list is set to TRUE.
616       IF FND_API.to_Boolean( p_init_msg_list )
617       THEN
618           FND_MSG_PUB.initialize;
619       END IF;
620 
621 
622       -- Initialize API return status to SUCCESS
623       x_return_status := FND_API.G_RET_STS_SUCCESS;
624 
625       -- validate NOT NULL column
626       IF(p_CHECK_ID is NULL)
627       THEN
628           x_return_status := FND_API.G_RET_STS_ERROR;
629 	    CSC_CORE_UTILS_PVT.mandatory_arg_error(
630 		  p_Api_name => p_Api_Name,
631 		  p_Argument => 'p_CHECK_ID',
632 		  p_Argument_Value => p_CHECK_ID);
633 
634       END IF;
635 
636 	 -- Correction for 1231208 --> The check id should be a valid
637 	 -- check id in csc_prof_checks_b - so %FOUND shoudl not raise
638 	 -- any  error
639       IF(p_validation_mode = CSC_CORE_UTILS_PVT.G_CREATE)
640       THEN
641           -- Hint: Validate data
642           -- IF p_CHECK_ID is not NULL and p_CHECK_ID <> G_MISS_CHAR
643           -- verify if data is valid
647 		Open C1;
644           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
645 	    IF p_CHECK_ID is not NULL and p_CHECK_ID <> CSC_CORE_UTILS_PVT.G_MISS_NUM
646 	    THEN
648 		Fetch C1 INTO l_dummy;
649 		--IF C1%FOUND THEN
650 		IF C1%NOTFOUND THEN
651 			--Changed as % found is valid and %notfound
652 				 -- is error in this case
653               x_return_status := FND_API.G_RET_STS_ERROR;
654               CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg (
655 	            p_Api_Name => p_Api_Name,
656 	            p_Argument 	=> 'p_CHECK_ID',
657  	            p_Argument_Value => to_char(p_CHECK_ID));
658 		END IF;
659 		Close C1;
660 	    END IF;
661       ELSIF(p_validation_mode = CSC_CORE_UTILS_PVT.G_UPDATE)
662       THEN
663           -- Hint: Validate data
664           -- IF p_CHECK_ID <> CSC_CORE_UTILS_PVT.G_MISS_CHAR
665           -- verify if data is valid
666           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
667 	    IF p_CHECK_ID <> CSC_CORE_UTILS_PVT.G_MISS_NUM
668 	    THEN
669 		--** update not allowed
670             NULL;
671 	    END IF;
672       END IF;
673 
674       -- Standard call to get message count and if count is 1, get message info.
675       FND_MSG_PUB.Count_And_Get
676       (  p_count          =>   x_msg_count,
677          p_data           =>   x_msg_data
678       );
679 
680 END Validate_CHECK_ID;
681 
682 
683 PROCEDURE Validate_SEQUENCE (
684     P_Api_Name		IN	VARCHAR2,
685     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
686     P_Validation_mode            IN   VARCHAR2,
687     P_SEQUENCE                IN   NUMBER,
688     p_check_id			IN	NUMBER,
689     X_Return_Status              OUT NOCOPY VARCHAR2,
690     X_Msg_Count                  OUT NOCOPY NUMBER,
691     X_Msg_Data                   OUT NOCOPY VARCHAR2
692     )
693 IS
694 Cursor C1 is
695  Select NULL
696  From csc_prof_check_rules_b
697  Where check_id = p_Check_id
698  And sequence = p_sequence;
699 l_dummy varchar2(30);
700 BEGIN
701 
702       -- Initialize message list if p_init_msg_list is set to TRUE.
703       IF FND_API.to_Boolean( p_init_msg_list )
704       THEN
705           FND_MSG_PUB.initialize;
706       END IF;
707 
708 
709       -- Initialize API return status to SUCCESS
710       x_return_status := FND_API.G_RET_STS_SUCCESS;
711 
712       -- validate NOT NULL column
713       IF(p_SEQUENCE is NULL)
714       THEN
715          x_return_status := FND_API.G_RET_STS_ERROR;
716 	    CSC_CORE_UTILS_PVT.mandatory_arg_error(
717 		  p_Api_name => p_Api_Name,
718 		  p_Argument => 'p_SEQUENCE',
719 		  p_Argument_Value => p_SEQUENCE);
720 
721       END IF;
722 
723       IF(p_validation_mode = CSC_CORE_UTILS_PVT.G_CREATE)
724       THEN
725           -- Hint: Validate data
726           -- IF p_SEQUENCE is not NULL and p_SEQUENCE <> CSC_CORE_UTILS_PVT.G_MISS_CHAR
727           -- verify if data is valid
728           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
729 
730 	    IF p_SEQUENCE <> CSC_CORE_UTILS_PVT.G_MISS_NUM
731 	    THEN
732 	      Open C1;
733  		 Fetch C1 into l_dummy;
734 		 IF C1%FOUND THEN
735                     x_return_status := FND_API.G_RET_STS_ERROR;
736                     CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg (
737 	                     p_Api_Name => p_Api_Name,
738 	                     p_Argument 	=> 'p_CHECK_ID',
739  	                     p_Argument_Value => to_char(p_CHECK_ID));
740 		 END IF;
741 	      Close C1;
742           END IF;
743       ELSIF(p_validation_mode = CSC_CORE_UTILS_PVT.G_UPDATE)
744       THEN
745           -- Hint: Validate data
746           -- IF p_SEQUENCE <> CSC_CORE_UTILS_PVT.G_MISS_CHAR
747           -- verify if data is valid
748           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
749 	    IF p_SEQUENCE <> CSC_CORE_UTILS_PVT.G_MISS_NUM
750 	    THEN
751 		--**cannot update sequence as part of pk
752           NULL;
753 	    END IF;
754       END IF;
755 
756 END Validate_SEQUENCE;
757 
758 
759 PROCEDURE Validate_EXPR_TO_BLOCK_ID (
760     P_Api_Name		IN	VARCHAR2,
761     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
762     P_Validation_mode            IN   VARCHAR2,
763     P_EXPR_TO_BLOCK_ID                IN   NUMBER,
764     X_Return_Status              OUT NOCOPY VARCHAR2,
765     X_Msg_Count                  OUT NOCOPY NUMBER,
766     X_Msg_Data                   OUT NOCOPY VARCHAR2
767     )
768 IS
769    Cursor C1 is
770     Select NULL
771     From csc_prof_blocks_b
772     Where block_id = p_expr_to_block_id;
773 l_dummy varchar2(30);
774 BEGIN
775 
776 
777       -- Initialize message list if p_init_msg_list is set to TRUE.
778       IF FND_API.to_Boolean( p_init_msg_list )
779       THEN
780           FND_MSG_PUB.initialize;
781       END IF;
782 
783 
784       -- Initialize API return status to SUCCESS
785       x_return_status := FND_API.G_RET_STS_SUCCESS;
786 
787       IF(p_validation_mode = CSC_CORE_UTILS_PVT.G_CREATE)
788       THEN
792 		Fetch C1 into l_dummy;
789 	    IF p_EXPR_TO_BLOCK_ID is not NULL and p_EXPR_TO_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_NUM
790 	    THEN
791 		Open C1;
793 		IF C1%NOTFOUND THEN
794                   x_return_status := FND_API.G_RET_STS_ERROR;
795                   CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg (
796 	                p_Api_Name => p_Api_Name,
797 	                p_Argument 	=> 'p_Expr_to_BLOCK_ID',
798  	                p_Argument_Value => to_char(p_Expr_to_BLOCK_ID));
799 		END IF;
800 		Close C1;
801              END IF;
802 
803       ELSIF(p_validation_mode = CSC_CORE_UTILS_PVT.G_UPDATE)
804       THEN
805           -- Hint: Validate data
806           -- IF p_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_CHAR
807           -- verify if data is valid
808           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
809 	    IF p_EXPR_TO_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_NUM THEN
810 		Open C1;
811 		Fetch C1 into l_dummy;
812 		IF C1%NOTFOUND THEN
813                  x_return_status := FND_API.G_RET_STS_ERROR;
814                  CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg (
815 	              p_Api_Name  => p_Api_Name,
816 	              p_Argument  => 'p_EXPR_To_BLOCK_ID',
817  	              p_Argument_Value => to_char(p_EXPR_TO_BLOCK_ID));
818 		END IF;
819 		Close C1;
820 	    END IF;
821           NULL;
822       END IF;
823 
824 END Validate_Expr_to_Block_Id;
825 
826 
827 
828 PROCEDURE Validate_BLOCK_ID (
829     P_Api_Name		IN	VARCHAR2,
830     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
831     P_Validation_mode            IN   VARCHAR2,
832     P_BLOCK_ID                IN   NUMBER,
833     X_Return_Status              OUT NOCOPY VARCHAR2,
834     X_Msg_Count                  OUT NOCOPY NUMBER,
835     X_Msg_Data                   OUT NOCOPY VARCHAR2
836     )
837 IS
838     Cursor C1 is
839     Select NULL
840     From csc_prof_blocks_b
841     Where block_id = p_block_id;
842 l_dummy varchar2(30);
843 BEGIN
844 
845       -- Initialize message list if p_init_msg_list is set to TRUE.
846       IF FND_API.to_Boolean( p_init_msg_list )
847       THEN
848           FND_MSG_PUB.initialize;
849       END IF;
850 
851 
852       -- Initialize API return status to SUCCESS
853       x_return_status := FND_API.G_RET_STS_SUCCESS;
854 
855       -- validate NOT NULL column
856       IF(p_BLOCK_ID is NULL)
857       THEN
858 	    --mandatory arg error
859           x_return_status := FND_API.G_RET_STS_ERROR;
860           CSC_CORE_UTILS_PVT.mandatory_arg_error(
861 		  p_Api_name => p_Api_Name,
862 		  p_Argument => 'p_BLOCK_ID',
863 		  p_Argument_Value => p_BLOCK_ID);
864 
865       END IF;
866 
867       IF(p_validation_mode = CSC_CORE_UTILS_PVT.G_CREATE)
868       THEN
869           -- Hint: Validate data
870           -- IF p_BLOCK_ID is not NULL and p_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_CHAR
871           -- verify if data is valid
872           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
873 	    IF p_BLOCK_ID is not NULL and p_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_NUM
874 	    THEN
875 		Open C1;
876 		Fetch C1 into l_dummy;
877 		IF C1%NOTFOUND THEN
878               x_return_status := FND_API.G_RET_STS_ERROR;
879               CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg (
880 	            p_Api_Name => p_Api_Name,
881 	            p_Argument 	=> 'p_BLOCK_ID',
882  	            p_Argument_Value => to_char(p_BLOCK_ID));
883 		END IF;
884 		Close C1;
885 	    ELSE
886 		   x_return_status := FND_API.G_RET_STS_ERROR;
887 	        CSC_CORE_UTILS_PVT.mandatory_arg_error(
888 		           p_Api_name => p_Api_Name,
889 		           p_Argument => 'p_BLOCK_ID',
890 		           p_Argument_Value => p_BLOCK_ID);
891 	    END IF;
892 
893       ELSIF(p_validation_mode = CSC_CORE_UTILS_PVT.G_UPDATE)
894       THEN
895           -- Hint: Validate data
896           -- IF p_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_CHAR
897           -- verify if data is valid
898           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
899 	    IF p_BLOCK_ID <> CSC_CORE_UTILS_PVT.G_MISS_NUM THEN
900 		Open C1;
901 		Fetch C1 into l_dummy;
902 		IF C1%NOTFOUND THEN
903               x_return_status := FND_API.G_RET_STS_ERROR;
904               CSC_CORE_UTILS_PVT.Add_Invalid_Argument_Msg (
905 	            p_Api_Name => p_Api_Name,
906 	            p_Argument 	=> 'p_BLOCK_ID',
907  	            p_Argument_Value => to_char(p_BLOCK_ID));
908 		END IF;
909 		Close C1;
910 	    END IF;
911       END IF;
912 
913       -- Standard call to get message count and if count is 1, get message info.
914       FND_MSG_PUB.Count_And_Get
915       (  p_count          =>   x_msg_count,
916          p_data           =>   x_msg_data
917       );
918 
919 END Validate_BLOCK_ID;
920 
921 /*
922 PROCEDURE build_rule(
923     p_CHK_RULES_Tbl IN CHK_RULES_Tbl_Type,
924     rule OUT NOCOPY VARCHAR2
925     )
926 IS
927 BEGIN
928 
929      rule := 'SELECT 1 FROM dual WHERE';
930      FOR i IN 1..p_Chk_Rules_Tbl.Count LOOP
931 
935 	 p_Chk_Rules_Tbl(i).block_id || ' AND customer_id = :customer_id' ||
932        rule := rule || ' ' || p_Chk_Rules_Tbl(i).logical_operator || ' ' ||
933 	 p_Chk_Rules_Tbl(i).left_paren ||
934 	 'EXISTS (SELECT 1 FROM csc_prof_block_results_b WHERE block_id = ' ||
936 	 ' AND value ' || p_Chk_Rules_Tbl(i).comparison_operator;
937        IF (p_Chk_Rules_Tbl(i).comparison_operator NOT IN ('IS NULL', 'IS NOT NULL')) THEN
938 	  rule := rule || ' ' || p_Chk_Rules_Tbl(i).expression1;
939 	  IF (p_Chk_Rules_Tbl(i).comparison_operator IN ('BETWEEN', 'NOT BETWEEN')) THEN
940 	     rule := ' AND ' || p_Chk_Rules_Tbl(i).EXPR_TO_BLOCK_ID;
941 	  END IF;
942        END IF;
943        rule := rule || ')' || p_Chk_Rules_Tbl(i).right_paren;
944 
945      END LOOP;
946 
947 END build_Rule;
948 */
949 
950 PROCEDURE validate_rule(
951     p_Sql_Stmnt		IN	VARCHAR2,
952     X_return_Status	OUT NOCOPY VARCHAR2
953     )
954 IS
955 cursor_id NUMBER;
956 BEGIN
957       -- Initialize API return status to SUCCESS
958       x_return_status := FND_API.G_RET_STS_SUCCESS;
959 
960 	cursor_id := dbms_sql.open_cursor;
961 	dbms_sql.parse(cursor_id,p_Sql_Stmnt,dbms_Sql.native);
962 	dbms_sql.close_cursor(cursor_id);
963    EXCEPTION
964 	WHEN OTHERS THEN
965       IF (dbms_sql.is_open(cursor_id)) THEN
966 	  dbms_sql.close_cursor(cursor_id);
967       END IF;
968 	x_return_status := FND_API.G_RET_STS_SUCCESS;
969 END;
970 
971 
972 /*
973 PROCEDURE Validate_CONDITION(
974     P_Api_Name		IN	VARCHAR2,
975     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
976     P_Validation_mode            IN   VARCHAR2,
977     p_Chk_Rules_Tbl   IN CHK_RULES_Tbl_Type,
978     X_Return_Status              OUT NOCOPY VARCHAR2,
979     X_Msg_Count                  OUT NOCOPY NUMBER,
980     X_Msg_Data                   OUT NOCOPY VARCHAR2
981     )
982  IS
983 l_condition VARCHAR2(2000);
984 BEGIN
985 
986       -- Initialize message list if p_init_msg_list is set to TRUE.
987       IF FND_API.to_Boolean( p_init_msg_list )
988       THEN
989           FND_MSG_PUB.initialize;
990       END IF;
991 
992       -- Initialize API return status to SUCCESS
993       x_return_status := FND_API.G_RET_STS_SUCCESS;
994 
995 	-- build the rule using the table.
996 	build_rule(p_Chk_Rules_Tbl,l_condition);
997 
998 	-- validate rule
999 	validate_rule(l_condition,x_Return_status);
1000 
1001       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1002               raise FND_API.G_EXC_ERROR;
1003       END IF;
1004 
1005       -- Standard call to get message count and if count is 1, get message info.
1006       FND_MSG_PUB.Count_And_Get
1007       (  p_count          =>   x_msg_count,
1008          p_data           =>   x_msg_data
1009       );
1010 
1011 END;
1012 */
1013 
1014 PROCEDURE Validate_profile_check_rules(
1015     P_Api_Name		IN	VARCHAR2,
1016     P_Init_Msg_List              IN   VARCHAR2     := CSC_CORE_UTILS_PVT.G_FALSE,
1017     P_Validation_level           IN   NUMBER := CSC_CORE_UTILS_PVT.G_VALID_LEVEL_FULL,
1018     P_Validation_mode            IN   VARCHAR2,
1019     P_CHK_RULES_Rec     IN    CHK_RULES_Rec_Type,
1020     X_Return_Status              OUT NOCOPY VARCHAR2,
1021     X_Msg_Count                  OUT NOCOPY NUMBER,
1022     X_Msg_Data                   OUT NOCOPY VARCHAR2
1023     )
1024 IS
1025 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_profile_check_rules';
1026 l_Sequence varchar2(10);
1027  BEGIN
1028 
1029 
1030       -- Initialize API return status to SUCCESS
1031       x_return_status := FND_API.G_RET_STS_SUCCESS;
1032 
1033 
1034           Validate_CHECK_ID(
1035 		  p_api_name		=> p_api_name,
1036               p_init_msg_list          => CSC_CORE_UTILS_PVT.G_FALSE,
1037               p_validation_mode        => p_validation_mode,
1038               p_CHECK_ID   => p_chk_rules_rec.CHECK_ID,
1039               x_return_status          => x_return_status,
1040               x_msg_count              => x_msg_count,
1041               x_msg_data               => x_msg_data);
1042           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1043               raise FND_API.G_EXC_ERROR;
1044           END IF;
1045 
1046           Validate_SEQUENCE(
1047 	      p_api_name		=> p_api_name,
1048               p_init_msg_list          => CSC_CORE_UTILS_PVT.G_FALSE,
1049               p_validation_mode        => p_validation_mode,
1050               p_SEQUENCE   => P_CHK_RULES_Rec.SEQUENCE,
1051 	      p_CHECK_ID	=> p_CHK_RULES_Rec.Check_Id,
1052               x_return_status          => x_return_status,
1053               x_msg_count              => x_msg_count,
1054               x_msg_data               => x_msg_data);
1055           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1056               raise FND_API.G_EXC_ERROR;
1057           END IF;
1058 
1059 
1060           Validate_BLOCK_ID(
1061 		  p_api_name		=> p_api_name,
1062               p_init_msg_list          => CSC_CORE_UTILS_PVT.G_FALSE,
1063               p_validation_mode        => p_validation_mode,
1064               p_BLOCK_ID   => p_Chk_rules_rec.BLOCK_ID,
1065               x_return_status          => x_return_status,
1066               x_msg_count              => x_msg_count,
1067               x_msg_data               => x_msg_data);
1068           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1069               raise FND_API.G_EXC_ERROR;
1070           END IF;
1071 
1072 
1073 
1074           Validate_EXPR_TO_BLOCK_ID(
1075 	      p_api_name		=> p_api_name,
1076               p_init_msg_list          => CSC_CORE_UTILS_PVT.G_FALSE,
1077               p_validation_mode        => p_validation_mode,
1078               p_EXPR_TO_BLOCK_ID   => p_Chk_rules_rec.Expr_TO_BLOCK_ID,
1079               x_return_status          => x_return_status,
1080               x_msg_count              => x_msg_count,
1081               x_msg_data               => x_msg_data);
1082           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1083               raise FND_API.G_EXC_ERROR;
1084           END IF;
1085 
1086           --Validate seeded flag
1087 
1088           CSC_CORE_UTILS_PVT.Validate_Seeded_Flag(
1089            p_api_name        =>'CSC_PROF_CHECK_RULES_PVT.VALIDATE_SEEDED_FLAG',
1090            p_seeded_flag     => p_Chk_rules_rec.seeded_flag,
1091            x_return_status   => x_return_status );
1092 
1096 
1093            IF (x_return_status  <> FND_API.G_RET_STS_SUCCESS) THEN
1094               RAISE FND_API.G_EXC_ERROR;
1095            END IF;
1097 /*
1098           Validate_CONDITION(
1099 		  p_api_name		=> p_api_name,
1100               p_init_msg_list          => CSC_CORE_UTILS_PVT.G_FALSE,
1101               p_validation_mode        => p_validation_mode,
1102               p_CHK_RULES_Tbl   => P_CHK_RULES_Tbl,
1103               x_return_status          => x_return_status,
1104               x_msg_count              => x_msg_count,
1105               x_msg_data               => x_msg_data);
1106           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1107               raise FND_API.G_EXC_ERROR;
1108           END IF;
1109 */
1110 
1111 END Validate_profile_check_rules;
1112 
1113 End CSC_PROFILE_CHECK_RULES_PVT;