DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSC_PLAN_LINES_PVT

Source


1 PACKAGE BODY CSC_PLAN_LINES_PVT as
2 /* $Header: cscvplnb.pls 115.16 2002/11/25 12:35:17 bhroy ship $ */
3 -- Start of Comments
4 -- Package name     : CSC_PLAN_LINES_PVT
5 -- Purpose          : Private package to perform inserts, updates and delete operations
6 --                    on CSC_PLAN_LINES table. It contains procedures to perform item
7 --                    level validations if validation level is set to 100 (FULL).
8 -- History          :
9 -- MM-DD-YYYY    NAME          MODIFICATIONS
10 -- 10-21-1999    dejoseph      Created.
11 -- 12-08-1999    dejoseph      'Arcs'ed in for first code freeze.
12 -- 12-21-1999    dejoseph      'Arcs'ed in for second code freeze.
13 -- 01-03-2000    dejoseph      'Arcs'ed in for third code freeze. (10-JAN-2000)
14 -- 01-31-2000    dejoseph      'Arcs'ed in for fourth code freeze. (07-FEB-2000)
15 -- 02-13-2000    dejoseph      'Arcs'ed on for fifth code freeze. (21-FEB-2000)
16 -- 02-28-2000    dejoseph      'Arcs'ed on for sixth code freeze. (06-MAR-2000)
17 -- 11-11-2002	bhroy		NOCOPY changes made
18 -- 11-25-2002	bhroy		FND_API defaults removed, added WHENEVER OSERROR EXIT FAILURE ROLLBACK;
19 
20 -- NOTE             :
21 -- End of Comments
22 
23 G_PKG_NAME        CONSTANT VARCHAR2(30) := 'CSC_PLAN_LINES_PVT';
24 G_FILE_NAME       CONSTANT VARCHAR2(12) := 'cscvplnb.pls';
25 
26 PROCEDURE convert_columns_to_rec_type(
27     P_LINE_ID                    IN   NUMBER,
28     P_PLAN_ID                    IN   NUMBER,
29     P_CONDITION_ID               IN   NUMBER,
30     P_CREATION_DATE              IN   DATE,
31     P_LAST_UPDATE_DATE           IN   DATE,
32     P_CREATED_BY                 IN   NUMBER,
33     P_LAST_UPDATED_BY            IN   NUMBER,
34     P_LAST_UPDATE_LOGIN          IN   NUMBER,
35     P_ATTRIBUTE1                 IN   VARCHAR2,
36     P_ATTRIBUTE2                 IN   VARCHAR2 ,
37     P_ATTRIBUTE3                 IN   VARCHAR2,
38     P_ATTRIBUTE4                 IN   VARCHAR2,
39     P_ATTRIBUTE5                 IN   VARCHAR2,
40     P_ATTRIBUTE6                 IN   VARCHAR2,
41     P_ATTRIBUTE7                 IN   VARCHAR2,
42     P_ATTRIBUTE8                 IN   VARCHAR2,
43     P_ATTRIBUTE9                 IN   VARCHAR2,
44     P_ATTRIBUTE10                IN   VARCHAR2,
45     P_ATTRIBUTE11                IN   VARCHAR2,
46     P_ATTRIBUTE12                IN   VARCHAR2,
47     P_ATTRIBUTE13                IN   VARCHAR2,
48     P_ATTRIBUTE14                IN   VARCHAR2,
49     P_ATTRIBUTE15                IN   VARCHAR2,
50     P_ATTRIBUTE_CATEGORY         IN   VARCHAR2,
51     P_OBJECT_VERSION_NUMBER      IN   NUMBER ,
52     x_csc_plan_lines_rec         OUT  NOCOPY CSC_PLAN_LINES_REC_TYPE)
53 IS
54 BEGIN
55    x_csc_plan_lines_rec.LINE_ID               := P_LINE_ID;
56    x_csc_plan_lines_rec.PLAN_ID               := P_PLAN_ID ;
57    x_csc_plan_lines_rec.CONDITION_ID          := P_CONDITION_ID ;
58    x_csc_plan_lines_rec.CREATION_DATE         := P_CREATION_DATE ;
59    x_csc_plan_lines_rec.LAST_UPDATE_DATE      := P_LAST_UPDATE_DATE ;
60    x_csc_plan_lines_rec.CREATED_BY            := P_CREATED_BY ;
61    x_csc_plan_lines_rec.LAST_UPDATED_BY       := P_LAST_UPDATED_BY ;
62    x_csc_plan_lines_rec.LAST_UPDATE_LOGIN     := P_LAST_UPDATE_LOGIN ;
63    x_csc_plan_lines_rec.ATTRIBUTE1            := P_ATTRIBUTE1 ;
64    x_csc_plan_lines_rec.ATTRIBUTE2            := P_ATTRIBUTE2 ;
65    x_csc_plan_lines_rec.ATTRIBUTE3            := P_ATTRIBUTE3 ;
66    x_csc_plan_lines_rec.ATTRIBUTE4            := P_ATTRIBUTE4 ;
67    x_csc_plan_lines_rec.ATTRIBUTE5            := P_ATTRIBUTE5 ;
68    x_csc_plan_lines_rec.ATTRIBUTE6            := P_ATTRIBUTE6 ;
69    x_csc_plan_lines_rec.ATTRIBUTE7            := P_ATTRIBUTE7 ;
70    x_csc_plan_lines_rec.ATTRIBUTE8            := P_ATTRIBUTE8 ;
71    x_csc_plan_lines_rec.ATTRIBUTE9            := P_ATTRIBUTE9 ;
72    x_csc_plan_lines_rec.ATTRIBUTE10           := P_ATTRIBUTE10 ;
73    x_csc_plan_lines_rec.ATTRIBUTE11           := P_ATTRIBUTE11 ;
74    x_csc_plan_lines_rec.ATTRIBUTE12           := P_ATTRIBUTE12 ;
75    x_csc_plan_lines_rec.ATTRIBUTE13           := P_ATTRIBUTE13 ;
76    x_csc_plan_lines_rec.ATTRIBUTE14           := P_ATTRIBUTE14 ;
77    x_csc_plan_lines_rec.ATTRIBUTE15           := P_ATTRIBUTE15 ;
78    x_csc_plan_lines_rec.ATTRIBUTE_CATEGORY    := P_ATTRIBUTE_CATEGORY ;
79    x_csc_plan_lines_rec.OBJECT_VERSION_NUMBER := P_OBJECT_VERSION_NUMBER ;
80 
81 END convert_columns_to_rec_type;
82 
83 
84 /* Overloaded procedure to take a detailed parameter list instead of a
85    record type parameter */
86 
87 PROCEDURE Create_plan_lines(
88     P_Api_Version_Number         IN   NUMBER,
89     P_Init_Msg_List              IN   VARCHAR2,
90     P_Commit                     IN   VARCHAR2,
91     p_validation_level           IN   NUMBER,
92     P_LINE_ID                    IN   NUMBER,
93     P_PLAN_ID                    IN   NUMBER,
94     P_CONDITION_ID               IN   NUMBER,
95     P_CREATION_DATE              IN   DATE,
96     P_LAST_UPDATE_DATE           IN   DATE,
97     P_CREATED_BY                 IN   NUMBER,
98     P_LAST_UPDATED_BY            IN   NUMBER,
99     P_LAST_UPDATE_LOGIN          IN   NUMBER,
100     P_ATTRIBUTE1                 IN   VARCHAR2,
101     P_ATTRIBUTE2                 IN   VARCHAR2,
102     P_ATTRIBUTE3                 IN   VARCHAR2,
103     P_ATTRIBUTE4                 IN   VARCHAR2,
104     P_ATTRIBUTE5                 IN   VARCHAR2,
105     P_ATTRIBUTE6                 IN   VARCHAR2,
106     P_ATTRIBUTE7                 IN   VARCHAR2,
107     P_ATTRIBUTE8                 IN   VARCHAR2,
108     P_ATTRIBUTE9                 IN   VARCHAR2,
109     P_ATTRIBUTE10                IN   VARCHAR2,
110     P_ATTRIBUTE11                IN   VARCHAR2,
111     P_ATTRIBUTE12                IN   VARCHAR2,
112     P_ATTRIBUTE13                IN   VARCHAR2,
113     P_ATTRIBUTE14                IN   VARCHAR2,
114     P_ATTRIBUTE15                IN   VARCHAR2,
115     P_ATTRIBUTE_CATEGORY         IN   VARCHAR2,
116     P_OBJECT_VERSION_NUMBER      IN   NUMBER,
117     X_LINE_ID                    OUT  NOCOPY NUMBER,
118     X_OBJECT_VERSION_NUMBER      OUT  NOCOPY NUMBER,
119     X_Return_Status              OUT  NOCOPY VARCHAR2,
120     X_Msg_Count                  OUT  NOCOPY NUMBER,
121     X_Msg_Data                   OUT  NOCOPY VARCHAR2
122     )
123 IS
124    l_csc_plan_lines_rec       CSC_PLAN_LINES_REC_TYPE;
125 
126 BEGIN
127    CONVERT_COLUMNS_TO_REC_TYPE(
128       P_LINE_ID               => p_line_id,
129       P_PLAN_ID               => p_plan_id,
130       P_CONDITION_ID          => p_condition_id,
131       P_CREATION_DATE         => p_creation_date,
132       P_LAST_UPDATE_DATE      => p_last_update_date,
133       P_CREATED_BY            => p_created_by,
134       P_LAST_UPDATED_BY       => p_last_updated_by,
135       P_LAST_UPDATE_LOGIN     => p_last_update_login,
136       P_ATTRIBUTE1            => p_attribute1,
137       P_ATTRIBUTE2            => p_attribute2,
138       P_ATTRIBUTE3            => p_attribute3,
139       P_ATTRIBUTE4            => p_attribute4,
140       P_ATTRIBUTE5            => p_attribute5,
141       P_ATTRIBUTE6            => p_attribute6,
142       P_ATTRIBUTE7            => p_attribute7,
143       P_ATTRIBUTE8            => p_attribute8,
144       P_ATTRIBUTE9            => p_attribute9,
145       P_ATTRIBUTE10           => p_attribute10,
146       P_ATTRIBUTE11           => p_attribute11,
147       P_ATTRIBUTE12           => p_attribute12,
148       P_ATTRIBUTE13           => p_attribute13,
149       P_ATTRIBUTE14           => p_attribute14,
150       P_ATTRIBUTE15           => p_attribute15,
151       P_ATTRIBUTE_CATEGORY    => p_attribute_category,
152       P_OBJECT_VERSION_NUMBER => p_object_version_number,
153       x_csc_plan_lines_rec    => l_csc_plan_lines_rec);
154 
155 -- issue a call to the create_plan_lines proc. that accepts record_type parameters.
156 
157    Create_plan_lines(
158       P_Api_Version_Number    => p_api_version_number,
159       P_Init_Msg_List         => p_init_msg_list,
160       P_Commit                => p_commit,
161       P_Validation_level      => p_validation_level,
162       P_CSC_PLAN_LINES_Rec    => l_csc_plan_lines_rec,
163       X_LINE_ID               => x_line_id,
164       X_OBJECT_VERSION_NUMBER => x_object_version_number,
165       X_Return_Status         => x_return_status,
166       X_Msg_Count             => x_msg_count,
167       X_Msg_Data              => x_msg_data );
168 
169 END  Create_plan_lines; /* overloaded procedure */
170 
171 
172 
173 PROCEDURE Create_plan_lines(
174     P_Api_Version_Number         IN   NUMBER,
175     P_Init_Msg_List              IN   VARCHAR2,
176     P_Commit                     IN   VARCHAR2,
177     p_validation_level           IN   NUMBER,
178     P_CSC_PLAN_LINES_Rec         IN   CSC_PLAN_LINES_Rec_Type,
179     X_LINE_ID                    OUT  NOCOPY NUMBER,
180     X_OBJECT_VERSION_NUMBER      OUT  NOCOPY NUMBER,
181     X_Return_Status              OUT  NOCOPY VARCHAR2,
182     X_Msg_Count                  OUT  NOCOPY NUMBER,
183     X_Msg_Data                   OUT  NOCOPY VARCHAR2
184     )
185 IS
186    l_api_name                CONSTANT VARCHAR2(30) := 'Create_plan_lines';
187    l_api_version_number      CONSTANT NUMBER       := 1.0;
188    l_return_status_full      VARCHAR2(1);
189 BEGIN
190       -- Standard Start of API savepoint
191       SAVEPOINT CREATE_PLAN_LINES_PVT;
192 
193       -- Standard call to check for call compatibility.
194       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
195                          	           p_api_version_number,
196                                            l_api_name,
197                                            G_PKG_NAME)
198       THEN
199           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
200       END IF;
201 
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       -- Initialize API return status to SUCCESS
210       x_return_status := FND_API.G_RET_STS_SUCCESS;
211 
212       -- ******************************************************************
213       -- Validate Environment
214       -- ******************************************************************
215       IF FND_GLOBAL.User_Id IS NULL
216       THEN
217           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
218           THEN
219               FND_MESSAGE.Set_Name(CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'UT_CANNOT_GET_PROFILE_VALUE');
220               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
221               -- FND_MSG_PUB.ADD;
222           END IF;
223           RAISE FND_API.G_EXC_ERROR;
224       END IF;
225 
226       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL )
227       THEN
228           -- Invoke validation procedures
229           Validate_csc_plan_lines(
230               p_init_msg_list       => FND_API.G_FALSE,
231               p_validation_level    => p_validation_level,
232               p_validation_mode     => CSC_CORE_UTILS_PVT.G_CREATE,
233               P_CSC_PLAN_LINES_Rec  => P_CSC_PLAN_LINES_Rec,
234               x_return_status       => x_return_status,
235               x_msg_count           => x_msg_count,
236               x_msg_data            => x_msg_data);
237          IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
238             RAISE FND_API.G_EXC_ERROR;
239          END IF;
240       END IF;
241 
242       -- Invoke table handler(CSC_PLAN_LINES_PKG.Insert_Row)
243       CSC_PLAN_LINES_PKG.Insert_Row(
244           px_LINE_ID               => x_LINE_ID,
245           p_PLAN_ID                => p_CSC_PLAN_LINES_rec.PLAN_ID,
246           p_CONDITION_ID           => p_CSC_PLAN_LINES_rec.CONDITION_ID,
247           p_CREATION_DATE          => SYSDATE,
248           p_LAST_UPDATE_DATE       => SYSDATE,
249           p_CREATED_BY             => FND_GLOBAL.USER_ID,
250           p_LAST_UPDATED_BY        => FND_GLOBAL.USER_ID,
251           p_LAST_UPDATE_LOGIN      => FND_GLOBAL.CONC_LOGIN_ID,
252           p_ATTRIBUTE1             => p_CSC_PLAN_LINES_rec.ATTRIBUTE1,
253           p_ATTRIBUTE2             => p_CSC_PLAN_LINES_rec.ATTRIBUTE2,
254           p_ATTRIBUTE3             => p_CSC_PLAN_LINES_rec.ATTRIBUTE3,
255           p_ATTRIBUTE4             => p_CSC_PLAN_LINES_rec.ATTRIBUTE4,
256           p_ATTRIBUTE5             => p_CSC_PLAN_LINES_rec.ATTRIBUTE5,
257           p_ATTRIBUTE6             => p_CSC_PLAN_LINES_rec.ATTRIBUTE6,
258           p_ATTRIBUTE7             => p_CSC_PLAN_LINES_rec.ATTRIBUTE7,
259           p_ATTRIBUTE8             => p_CSC_PLAN_LINES_rec.ATTRIBUTE8,
260           p_ATTRIBUTE9             => p_CSC_PLAN_LINES_rec.ATTRIBUTE9,
261           p_ATTRIBUTE10            => p_CSC_PLAN_LINES_rec.ATTRIBUTE10,
262           p_ATTRIBUTE11            => p_CSC_PLAN_LINES_rec.ATTRIBUTE11,
263           p_ATTRIBUTE12            => p_CSC_PLAN_LINES_rec.ATTRIBUTE12,
264           p_ATTRIBUTE13            => p_CSC_PLAN_LINES_rec.ATTRIBUTE13,
265           p_ATTRIBUTE14            => p_CSC_PLAN_LINES_rec.ATTRIBUTE14,
266           p_ATTRIBUTE15            => p_CSC_PLAN_LINES_rec.ATTRIBUTE15,
267           p_ATTRIBUTE_CATEGORY     => p_CSC_PLAN_LINES_rec.ATTRIBUTE_CATEGORY,
268           x_OBJECT_VERSION_NUMBER  => X_OBJECT_VERSION_NUMBER);
269 
270       -- Standard check for p_commit
271       IF FND_API.to_Boolean( p_commit )
272       THEN
273           COMMIT WORK;
274       END IF;
275 
276       -- Standard call to get message count and if count is 1, get message info.
277       FND_MSG_PUB.Count_And_Get
278       (  p_count          =>   x_msg_count,
279          p_data           =>   x_msg_data );
280 
281 EXCEPTION
282    WHEN FND_API.G_EXC_ERROR THEN
283       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
284             P_API_NAME        => L_API_NAME,
285             P_PKG_NAME        => G_PKG_NAME,
286             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
287             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
288             X_MSG_COUNT       => X_MSG_COUNT,
289             X_MSG_DATA        => X_MSG_DATA,
290             X_RETURN_STATUS   => X_RETURN_STATUS);
291       APP_EXCEPTION.RAISE_EXCEPTION;
292 
293    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
294       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
295             P_API_NAME        => L_API_NAME,
296             P_PKG_NAME        => G_PKG_NAME,
297             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
298             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
299             X_MSG_COUNT       => X_MSG_COUNT,
300             X_MSG_DATA        => X_MSG_DATA,
301             X_RETURN_STATUS   => X_RETURN_STATUS);
302       APP_EXCEPTION.RAISE_EXCEPTION;
303 
304    WHEN OTHERS THEN
305       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
306             P_API_NAME        => L_API_NAME,
307             P_PKG_NAME        => G_PKG_NAME,
308             P_EXCEPTION_LEVEL => CSC_CORE_UTILS_PVT.G_MSG_LVL_OTHERS,
309             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
310             X_MSG_COUNT       => X_MSG_COUNT,
311             X_MSG_DATA        => X_MSG_DATA,
312             X_RETURN_STATUS   => X_RETURN_STATUS);
313       APP_EXCEPTION.RAISE_EXCEPTION;
314 
315 End Create_plan_lines;
316 
317 /* Overloaded procedure to take a detailed parameter list instead of a
318    record type parameter */
319 
320 PROCEDURE Update_plan_lines(
321     P_Api_Version_Number         IN   NUMBER,
322     P_Init_Msg_List              IN   VARCHAR2,
323     P_Commit                     IN   VARCHAR2,
324     p_validation_level           IN   NUMBER,
325     P_LINE_ID                    IN   NUMBER,
326     P_PLAN_ID                    IN   NUMBER,
327     P_CONDITION_ID               IN   NUMBER,
328     P_CREATION_DATE              IN   DATE,
329     P_LAST_UPDATE_DATE           IN   DATE,
330     P_CREATED_BY                 IN   NUMBER,
331     P_LAST_UPDATED_BY            IN   NUMBER,
332     P_LAST_UPDATE_LOGIN          IN   NUMBER,
333     P_ATTRIBUTE1                 IN   VARCHAR2,
334     P_ATTRIBUTE2                 IN   VARCHAR2,
335     P_ATTRIBUTE3                 IN   VARCHAR2,
336     P_ATTRIBUTE4                 IN   VARCHAR2,
337     P_ATTRIBUTE5                 IN   VARCHAR2,
338     P_ATTRIBUTE6                 IN   VARCHAR2,
339     P_ATTRIBUTE7                 IN   VARCHAR2,
340     P_ATTRIBUTE8                 IN   VARCHAR2,
341     P_ATTRIBUTE9                 IN   VARCHAR2,
345     P_ATTRIBUTE13                IN   VARCHAR2,
342     P_ATTRIBUTE10                IN   VARCHAR2,
343     P_ATTRIBUTE11                IN   VARCHAR2,
344     P_ATTRIBUTE12                IN   VARCHAR2,
346     P_ATTRIBUTE14                IN   VARCHAR2,
347     P_ATTRIBUTE15                IN   VARCHAR2,
348     P_ATTRIBUTE_CATEGORY         IN   VARCHAR2,
349     P_OBJECT_VERSION_NUMBER      IN   NUMBER,
350     X_OBJECT_VERSION_NUMBER      OUT  NOCOPY NUMBER,
351     X_Return_Status              OUT  NOCOPY VARCHAR2,
352     X_Msg_Count                  OUT  NOCOPY NUMBER,
353     X_Msg_Data                   OUT  NOCOPY VARCHAR2)
354 IS
355 
356    l_csc_plan_lines_rec       CSC_PLAN_LINES_REC_TYPE;
357 
358 BEGIN
359    convert_columns_to_rec_type(
360       P_LINE_ID               => p_line_id,
361       P_PLAN_ID               => p_plan_id,
362       P_CONDITION_ID          => p_condition_id,
363       P_CREATION_DATE         => p_creation_date,
364       P_LAST_UPDATE_DATE      => p_last_update_date,
365       P_CREATED_BY            => p_created_by,
366       P_LAST_UPDATED_BY       => p_last_updated_by,
367       P_LAST_UPDATE_LOGIN     => p_last_update_login,
368       P_ATTRIBUTE1            => p_attribute1,
369       P_ATTRIBUTE2            => p_attribute2,
370       P_ATTRIBUTE3            => p_attribute3,
371       P_ATTRIBUTE4            => p_attribute4,
372       P_ATTRIBUTE5            => p_attribute5,
373       P_ATTRIBUTE6            => p_attribute6,
374       P_ATTRIBUTE7            => p_attribute7,
375       P_ATTRIBUTE8            => p_attribute8,
376       P_ATTRIBUTE9            => p_attribute9,
377       P_ATTRIBUTE10           => p_attribute10,
378       P_ATTRIBUTE11           => p_attribute11,
379       P_ATTRIBUTE12           => p_attribute12,
380       P_ATTRIBUTE13           => p_attribute13,
381       P_ATTRIBUTE14           => p_attribute14,
382       P_ATTRIBUTE15           => p_attribute15,
383       P_ATTRIBUTE_CATEGORY    => p_attribute_category,
384       P_OBJECT_VERSION_NUMBER => p_object_version_number,
385       x_csc_plan_lines_rec    => l_csc_plan_lines_rec);
386 
387 -- issue a call to the create_plan_lines proc. that accepts record_type parameters.
388 
389    Update_plan_lines(
390       P_Api_Version_Number    => p_api_version_number,
391       P_Init_Msg_List         => p_init_msg_list,
392       P_Commit                => p_commit,
393       P_Validation_level      => p_validation_level,
394       P_CSC_PLAN_LINES_Rec    => l_csc_plan_lines_rec,
395       X_OBJECT_VERSION_NUMBER => x_object_version_number,
396       X_Return_Status         => x_return_status,
397       X_Msg_Count             => x_msg_count,
398       X_Msg_Data              => x_msg_data );
399 
400 END  update_plan_lines;  /* end of overloaded update */
401 
402 PROCEDURE Update_plan_lines(
403     P_Api_Version_Number         IN   NUMBER,
404     P_Init_Msg_List              IN   VARCHAR2,
405     P_Commit                     IN   VARCHAR2,
406     p_validation_level           IN   NUMBER,
407     P_CSC_PLAN_LINES_Rec         IN   CSC_PLAN_LINES_Rec_Type,
408     X_OBJECT_VERSION_NUMBER      OUT  NOCOPY NUMBER,
409     X_Return_Status              OUT  NOCOPY VARCHAR2,
410     X_Msg_Count                  OUT  NOCOPY NUMBER,
411     X_Msg_Data                   OUT  NOCOPY VARCHAR2
412     )
413 IS
414    Cursor C_Get_plan_lines(C_LINE_ID Number) IS
415     Select rowid,             LINE_ID,          PLAN_ID,
416            CONDITION_ID,      LAST_UPDATE_DATE, CREATION_DATE,
417            LAST_UPDATED_BY,   CREATED_BY,       LAST_UPDATE_LOGIN,
418            ATTRIBUTE1,        ATTRIBUTE2,       ATTRIBUTE3,
419            ATTRIBUTE4,        ATTRIBUTE5,       ATTRIBUTE6,
420            ATTRIBUTE7,        ATTRIBUTE8,       ATTRIBUTE9,
421            ATTRIBUTE10,       ATTRIBUTE11,      ATTRIBUTE12,
422            ATTRIBUTE13,       ATTRIBUTE14,      ATTRIBUTE15,
423            ATTRIBUTE_CATEGORY,OBJECT_VERSION_NUMBER
424     From  CSC_PLAN_LINES
425     where line_id = c_line_id
426     For Update NOWAIT;
427 
428    l_api_name                CONSTANT VARCHAR2(30) := 'Update_plan_lines';
429    l_api_version_number      CONSTANT NUMBER   := 1.0;
430 
431    l_ref_CSC_PLAN_LINES_rec  CSC_plan_lines_PVT.CSC_PLAN_LINES_Rec_Type;
432    l_tar_CSC_PLAN_LINES_rec  CSC_plan_lines_PVT.CSC_PLAN_LINES_Rec_Type := P_CSC_PLAN_LINES_Rec;
433    l_rowid  ROWID;
434 BEGIN
435       -- Standard Start of API savepoint
436       SAVEPOINT UPDATE_PLAN_LINES_PVT;
437 
438       -- Standard call to check for call compatibility.
439       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
440                                            p_api_version_number,
441                                            l_api_name,
442                                            G_PKG_NAME)
443       THEN
444           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
445       END IF;
446 
447       -- Initialize message list if p_init_msg_list is set to TRUE.
448       IF FND_API.to_Boolean( p_init_msg_list )
449       THEN
450           FND_MSG_PUB.initialize;
451       END IF;
452 
453       -- Initialize API return status to SUCCESS
454       x_return_status := FND_API.G_RET_STS_SUCCESS;
455 
456       Open C_Get_plan_lines( l_tar_CSC_PLAN_LINES_rec.LINE_ID);
457 
458       Fetch C_Get_plan_lines into
459                l_rowid,
460                l_ref_CSC_PLAN_LINES_rec.LINE_ID,
464                l_ref_CSC_PLAN_LINES_rec.CREATION_DATE,
461                l_ref_CSC_PLAN_LINES_rec.PLAN_ID,
462                l_ref_CSC_PLAN_LINES_rec.CONDITION_ID,
463                l_ref_CSC_PLAN_LINES_rec.LAST_UPDATE_DATE,
465                l_ref_CSC_PLAN_LINES_rec.LAST_UPDATED_BY,
466                l_ref_CSC_PLAN_LINES_rec.CREATED_BY,
467                l_ref_CSC_PLAN_LINES_rec.LAST_UPDATE_LOGIN,
468                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE1,
469                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE2,
470                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE3,
471                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE4,
472                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE5,
473                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE6,
474                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE7,
475                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE8,
476                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE9,
477                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE10,
478                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE11,
479                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE12,
480                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE13,
481                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE14,
482                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE15,
483                l_ref_CSC_PLAN_LINES_rec.ATTRIBUTE_CATEGORY,
484                l_ref_CSC_PLAN_LINES_rec.OBJECT_VERSION_NUMBER;
485 
486       If ( C_Get_plan_lines%NOTFOUND) Then
487            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
488            THEN
489                Close     C_Get_plan_lines;
490                FND_MESSAGE.Set_Name(CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'API_MISSING_UPDATE_TARGET');
491                FND_MESSAGE.Set_Token ('INFO', 'plan_lines', FALSE);
492                -- FND_MSG_PUB.Add;
493            END IF;
494            raise FND_API.G_EXC_ERROR;
495       END IF;
496 
497       Close     C_Get_plan_lines;
498 
499       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
500       THEN
501           -- Invoke validation procedures
502           Validate_csc_plan_lines(
503               p_init_msg_list       => FND_API.G_FALSE,
504               p_validation_level    => p_validation_level,
505               p_validation_mode     => CSC_CORE_UTILS_PVT.G_UPDATE,
506               P_CSC_PLAN_LINES_Rec  => P_CSC_PLAN_LINES_Rec,
507               x_return_status       => x_return_status,
508               x_msg_count           => x_msg_count,
509               x_msg_data            => x_msg_data);
510       END IF;
511 
512       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
513           RAISE FND_API.G_EXC_ERROR;
514       END IF;
515 
516       -- Invoke table handler(CSC_PLAN_LINES_PKG.Update_Row)
517       CSC_PLAN_LINES_PKG.Update_Row(
518           p_LINE_ID                => p_CSC_PLAN_LINES_rec.LINE_ID,
519           p_PLAN_ID                => p_CSC_PLAN_LINES_rec.PLAN_ID,
520           p_CONDITION_ID           => p_CSC_PLAN_LINES_rec.CONDITION_ID,
521           p_CREATION_DATE          => SYSDATE,
522           p_LAST_UPDATE_DATE       => SYSDATE,
523           p_CREATED_BY             => FND_GLOBAL.USER_ID,
524           p_LAST_UPDATED_BY        => FND_GLOBAL.USER_ID,
525           p_LAST_UPDATE_LOGIN      => FND_GLOBAL.CONC_LOGIN_ID,
526           p_ATTRIBUTE1             => p_CSC_PLAN_LINES_rec.ATTRIBUTE1,
527           p_ATTRIBUTE2             => p_CSC_PLAN_LINES_rec.ATTRIBUTE2,
528           p_ATTRIBUTE3             => p_CSC_PLAN_LINES_rec.ATTRIBUTE3,
529           p_ATTRIBUTE4             => p_CSC_PLAN_LINES_rec.ATTRIBUTE4,
530           p_ATTRIBUTE5             => p_CSC_PLAN_LINES_rec.ATTRIBUTE5,
531           p_ATTRIBUTE6             => p_CSC_PLAN_LINES_rec.ATTRIBUTE6,
532           p_ATTRIBUTE7             => p_CSC_PLAN_LINES_rec.ATTRIBUTE7,
533           p_ATTRIBUTE8             => p_CSC_PLAN_LINES_rec.ATTRIBUTE8,
534           p_ATTRIBUTE9             => p_CSC_PLAN_LINES_rec.ATTRIBUTE9,
535           p_ATTRIBUTE10            => p_CSC_PLAN_LINES_rec.ATTRIBUTE10,
536           p_ATTRIBUTE11            => p_CSC_PLAN_LINES_rec.ATTRIBUTE11,
537           p_ATTRIBUTE12            => p_CSC_PLAN_LINES_rec.ATTRIBUTE12,
538           p_ATTRIBUTE13            => p_CSC_PLAN_LINES_rec.ATTRIBUTE13,
539           p_ATTRIBUTE14            => p_CSC_PLAN_LINES_rec.ATTRIBUTE14,
540           p_ATTRIBUTE15            => p_CSC_PLAN_LINES_rec.ATTRIBUTE15,
541           p_ATTRIBUTE_CATEGORY     => p_CSC_PLAN_LINES_rec.ATTRIBUTE_CATEGORY,
542           x_OBJECT_VERSION_NUMBER  => X_OBJECT_VERSION_NUMBER);
543 
544       -- Standard check for p_commit
545       IF FND_API.to_Boolean( p_commit )
546       THEN
547           COMMIT WORK;
548       END IF;
549 
550       -- Standard call to get message count and if count is 1, get message info.
551       FND_MSG_PUB.Count_And_Get
552       (  p_count          =>   x_msg_count,
553          p_data           =>   x_msg_data
554       );
555 
556 EXCEPTION
557    WHEN FND_API.G_EXC_ERROR THEN
558       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
559             P_API_NAME        => L_API_NAME,
560             P_PKG_NAME        => G_PKG_NAME,
561             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
562             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
563             X_MSG_COUNT       => X_MSG_COUNT,
564             X_MSG_DATA        => X_MSG_DATA,
565             X_RETURN_STATUS   => X_RETURN_STATUS);
566       APP_EXCEPTION.RAISE_EXCEPTION;
567 
568    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
569       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
573             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
570             P_API_NAME        => L_API_NAME,
571             P_PKG_NAME        => G_PKG_NAME,
572             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
574             X_MSG_COUNT       => X_MSG_COUNT,
575             X_MSG_DATA        => X_MSG_DATA,
576             X_RETURN_STATUS   => X_RETURN_STATUS);
577       APP_EXCEPTION.RAISE_EXCEPTION;
578 
579    WHEN OTHERS THEN
580       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
581             P_API_NAME        => L_API_NAME,
582             P_PKG_NAME        => G_PKG_NAME,
583             P_EXCEPTION_LEVEL => CSC_CORE_UTILS_PVT.G_MSG_LVL_OTHERS,
584             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
585             X_MSG_COUNT       => X_MSG_COUNT,
586             X_MSG_DATA        => X_MSG_DATA,
587             X_RETURN_STATUS   => X_RETURN_STATUS);
588       APP_EXCEPTION.RAISE_EXCEPTION;
589 
590 End Update_plan_lines;
591 
592 
593 PROCEDURE Delete_plan_lines(
594     P_Api_Version_Number         IN   NUMBER,
595     P_Init_Msg_List              IN   VARCHAR2,
596     P_Commit                     IN   VARCHAR2,
597     P_PLAN_ID                    IN   NUMBER,
598     P_LINE_ID                    IN   NUMBER,
599     X_Return_Status              OUT  NOCOPY VARCHAR2,
600     X_Msg_Count                  OUT  NOCOPY NUMBER,
601     X_Msg_Data                   OUT  NOCOPY VARCHAR2
602     )
603 IS
604    l_api_name                CONSTANT VARCHAR2(30) := 'Delete_plan_lines';
605    l_api_version_number      CONSTANT NUMBER       := 1.0;
606 BEGIN
607       -- Standard Start of API savepoint
608       SAVEPOINT DELETE_PLAN_LINES_PVT;
609 
610       -- Standard call to check for call compatibility.
611       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
612                                            p_api_version_number,
613                                            l_api_name,
614                                            G_PKG_NAME)
615       THEN
616           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
617       END IF;
618 
619       -- Initialize message list if p_init_msg_list is set to TRUE.
620       IF FND_API.to_Boolean( p_init_msg_list )
621       THEN
622           FND_MSG_PUB.initialize;
623       END IF;
624 
625       -- Initialize API return status to SUCCESS
626       x_return_status := FND_API.G_RET_STS_SUCCESS;
627 
628       -- Invoke table handler(CSC_PLAN_LINES_PKG.Delete_Row)
629       CSC_PLAN_LINES_PKG.Delete_Row(
630                             p_PLAN_ID  => P_PLAN_ID,
631                             p_LINE_ID  => P_LINE_ID);
632 
633       -- Standard check for p_commit
634       IF FND_API.to_Boolean( p_commit )
635       THEN
636           COMMIT WORK;
637       END IF;
638 
639       -- Standard call to get message count and if count is 1, get message info.
640       FND_MSG_PUB.Count_And_Get
641       (  p_count          =>   x_msg_count,
642          p_data           =>   x_msg_data);
643 
644 EXCEPTION
645    WHEN FND_API.G_EXC_ERROR THEN
646       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
647             P_API_NAME        => L_API_NAME,
648             P_PKG_NAME        => G_PKG_NAME,
649             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
650             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
651             X_MSG_COUNT       => X_MSG_COUNT,
652             X_MSG_DATA        => X_MSG_DATA,
653             X_RETURN_STATUS   => X_RETURN_STATUS);
654       APP_EXCEPTION.RAISE_EXCEPTION;
655 
656    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
657       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
658             P_API_NAME        => L_API_NAME,
659             P_PKG_NAME        => G_PKG_NAME,
660             P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
661             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
662             X_MSG_COUNT       => X_MSG_COUNT,
663             X_MSG_DATA        => X_MSG_DATA,
664             X_RETURN_STATUS   => X_RETURN_STATUS);
665       APP_EXCEPTION.RAISE_EXCEPTION;
666 
667    WHEN OTHERS THEN
668       CSC_CORE_UTILS_PVT.HANDLE_EXCEPTIONS(
669             P_API_NAME        => L_API_NAME,
670             P_PKG_NAME        => G_PKG_NAME,
671             P_EXCEPTION_LEVEL => CSC_CORE_UTILS_PVT.G_MSG_LVL_OTHERS,
672             P_PACKAGE_TYPE    => CSC_CORE_UTILS_PVT.G_PVT,
673             X_MSG_COUNT       => X_MSG_COUNT,
674             X_MSG_DATA        => X_MSG_DATA,
675             X_RETURN_STATUS   => X_RETURN_STATUS);
676       APP_EXCEPTION.RAISE_EXCEPTION;
677 
678 End Delete_plan_lines;
679 
680 
681 -- Item-level validation procedures
682 
683 PROCEDURE Validate_LINE_ID (
684     P_Init_Msg_List              IN   VARCHAR2,
685     P_Validation_mode            IN   VARCHAR2,
686     P_LINE_ID                    IN   NUMBER,
687     X_Return_Status              OUT  NOCOPY VARCHAR2,
688     X_Msg_Count                  OUT  NOCOPY NUMBER,
689     X_Msg_Data                   OUT  NOCOPY VARCHAR2
690     )
691 IS
692    cursor check_dup_line_id is
693       select line_id
694       from   CSC_PLAN_LINES
695       where  line_id = p_line_id;
696 
697    l_line_id    number;
698    l_api_name   varchar2(30) := 'Validate_Line_Id';
699 BEGIN
700       -- Initialize message list if p_init_msg_list is set to TRUE.
701       IF FND_API.to_Boolean( p_init_msg_list )
702       THEN
706       -- Initialize API return status to SUCCESS
703           FND_MSG_PUB.initialize;
704       END IF;
705 
707       x_return_status := FND_API.G_RET_STS_SUCCESS;
708 
709       -- validate NOT NULL column for updates
710       IF( p_validation_mode = CSC_CORE_UTILS_PVT.G_UPDATE ) THEN
711          if ( p_line_id is NULL or p_line_id = FND_API.G_MISS_NUM ) then
712             fnd_message.set_name (CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_NULL_PARAMETER');
713             fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'|| l_api_name);
714             fnd_message.set_token('NULL_PARAM', 'LINE_ID');
715             x_return_status := FND_API.G_RET_STS_ERROR;
716          end if;
717       ELSIF( p_validation_mode = CSC_CORE_UTILS_PVT.G_CREATE AND
718 		   p_line_id is not NULL and p_line_id <> FND_API.G_MISS_NUM ) THEN
719       -- check for duplicate line_ids.
720          open check_dup_line_id;
721          fetch check_dup_line_id into l_line_id;
722          if check_dup_line_id%FOUND then
723             fnd_message.set_name (CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_DUPLICATE_VALUE');
724             fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'|| l_api_name);
725             fnd_message.set_token('DUPLICATE_VAL_PARAM', 'LINE_ID');
726             -- fnd_msg_pub.add;
727             x_return_status := FND_API.G_RET_STS_ERROR;
728          end if;
729          close check_dup_line_id;
730       END IF;
731 
732       IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) then
733 	    APP_EXCEPTION.RAISE_EXCEPTION;
734       END IF;
735 
736       -- Standard call to get message count and if count is 1, get message info.
737       FND_MSG_PUB.Count_And_Get
738       (  p_count          =>   x_msg_count,
739          p_data           =>   x_msg_data );
740 
741 END Validate_LINE_ID;
742 
743 
744 PROCEDURE Validate_PLAN_ID (
745     P_Init_Msg_List              IN   VARCHAR2,
746     P_Validation_mode            IN   VARCHAR2,
747     P_PLAN_ID                    IN   NUMBER,
748     X_Return_Status              OUT  NOCOPY VARCHAR2,
749     X_Msg_Count                  OUT  NOCOPY NUMBER,
750     X_Msg_Data                   OUT  NOCOPY VARCHAR2
751     )
752 IS
753    cursor c1 is
754      select plan_id
755      from   csc_plan_headers_b
756      where  plan_id = p_plan_id;
757 
758    l_plan_id    number;
759    l_api_name   varchar2(30) := 'Validate_Plan_Id';
760 BEGIN
761       -- Initialize message list if p_init_msg_list is set to TRUE.
762       IF FND_API.to_Boolean( p_init_msg_list )
763       THEN
764           FND_MSG_PUB.initialize;
765       END IF;
766 
767       -- Initialize API return status to SUCCESS
768       x_return_status := FND_API.G_RET_STS_SUCCESS;
769 
770       -- validate NOT NULL column
771 	 IF( p_PLAN_ID is NULL or p_plan_id = FND_API.G_MISS_NUM ) then
772          fnd_message.set_name (CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_NULL_PARAMETER');
773          fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'|| l_api_name);
774          fnd_message.set_token('NULL_PARAM', 'PLAN_ID');
775          x_return_status := FND_API.G_RET_STS_ERROR;
776       END IF;
777 
778       -- validate for valid plan_ids.
779       IF ( x_return_status = FND_API.G_RET_STS_SUCCESS ) then
780          open c1;
781          fetch c1 into l_plan_id;
782          if c1%NOTFOUND then
783             fnd_message.set_name(CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_INVALID_ARGUMENT');
784             fnd_message.set_token('API_NAME',  G_PKG_NAME||'.'|| l_api_name);
785             fnd_message.set_token('VALUE',     p_plan_id);
786             fnd_message.set_token('PARAMETER', 'PLAN_ID');
787             x_return_status := FND_API.G_RET_STS_ERROR;
788          end if;
789          close c1;
790       END IF;
791 
792       IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) then
793 	    APP_EXCEPTION.RAISE_EXCEPTION;
794       END IF;
795 
796       -- Standard call to get message count and if count is 1, get message info.
797       FND_MSG_PUB.Count_And_Get
798       (  p_count          =>   x_msg_count,
799          p_data           =>   x_msg_data  );
800 
801 END Validate_PLAN_ID;
802 
803 
804 PROCEDURE Validate_CONDITION_ID (
805     P_Init_Msg_List              IN   VARCHAR2,
806     P_Validation_mode            IN   VARCHAR2,
807     P_PLAN_ID                    IN   NUMBER,
808     P_CONDITION_ID               IN   NUMBER,
809     X_Return_Status              OUT  NOCOPY VARCHAR2,
810     X_Msg_Count                  OUT  NOCOPY NUMBER,
811     X_Msg_Data                   OUT  NOCOPY VARCHAR2
812     )
813 IS
814    cursor c1 is
815       select id
816       from   okc_condition_headers_b
817       where  id = p_condition_id;
818 
819    cursor c2 is
820 	 select 1
821 	 from   csc_plan_lines
822 	 where  plan_id      = p_plan_id
823 	 and    condition_id = p_condition_id;
824 
825    l_id          NUMBER;
826    l_api_name    VARCHAR2(30) := 'Validate_Condition_Id';
827 
828 BEGIN
829       -- Initialize message list if p_init_msg_list is set to TRUE.
830       IF FND_API.to_Boolean( p_init_msg_list )
831       THEN
832           FND_MSG_PUB.initialize;
833       END IF;
834 
835       -- Initialize API return status to SUCCESS
836       x_return_status := FND_API.G_RET_STS_SUCCESS;
837 
841          fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'|| l_api_name);
838       -- validate NOT NULL column
839       IF( p_CONDITION_ID is NULL or p_condition_id = FND_API.G_MISS_NUM ) THEN
840          fnd_message.set_name (CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_NULL_PARAMETER');
842          fnd_message.set_token('NULL_PARAM', 'CONDITION_ID');
843          -- fnd_msg_pub.add;
844          x_return_status := FND_API.G_RET_STS_ERROR;
845       END IF;
846 
847       IF ( x_return_status = FND_API.G_RET_STS_SUCCESS ) then
848          -- validate for valid condition_id.
849          open c1;
850          fetch c1 into l_id;
851          if c1%NOTFOUND then
852             fnd_message.set_name (CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_INVALID_ARGUMENT');
853             fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'||l_api_name);
854             fnd_message.set_token('VALUE', p_condition_id);
855             fnd_message.set_token('PARAMETER', 'CONDITION_ID');
856             x_return_status := FND_API.G_RET_STS_ERROR;
857          end if;
858          close c1;
859       END IF;
860 
861       IF ( x_return_status = FND_API.G_RET_STS_SUCCESS ) then
862 	    -- validate for duplicate plan_id and condition_id
863 	    open c2;
864 	    fetch c2 into l_id;
865       if ( (p_validation_mode <> CSC_CORE_UTILS_PVT.G_UPDATE) AND  (c2%FOUND) ) then
866             fnd_message.set_name (CSC_CORE_UTILS_PVT.G_APP_SHORTNAME, 'CS_API_ALL_DUPLICATE_VALUE');
867             fnd_message.set_token ('API_NAME', G_PKG_NAME||'.'|| l_api_name);
868             fnd_message.set_token('DUPLICATE_VAL_PARAM', 'CONDITION_ID');
869             x_return_status := FND_API.G_RET_STS_ERROR;
870          end if;
871          close c2;
872       END IF;
873 
874 	 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS ) then
875 	    APP_EXCEPTION.RAISE_EXCEPTION;
876       END IF;
877 
878 END Validate_CONDITION_ID;
879 
880 
881 PROCEDURE Validate_OBJECT_VERSION_NUMBER (
882     P_Init_Msg_List              IN   VARCHAR2,
883     P_Validation_mode            IN   VARCHAR2,
884     P_OBJECT_VERSION_NUMBER      IN   NUMBER,
885     X_Return_Status              OUT  NOCOPY VARCHAR2,
886     X_Msg_Count                  OUT  NOCOPY NUMBER,
887     X_Msg_Data                   OUT  NOCOPY VARCHAR2
888     )
889 IS
890 BEGIN
891       -- Initialize message list if p_init_msg_list is set to TRUE.
892       IF FND_API.to_Boolean( p_init_msg_list )
893       THEN
894           FND_MSG_PUB.initialize;
895       END IF;
896 
897 
898       -- Initialize API return status to SUCCESS
899       x_return_status := FND_API.G_RET_STS_SUCCESS;
900 
901       -- validate NOT NULL column
902       IF(p_OBJECT_VERSION_NUMBER is NULL)
903       THEN
904           x_return_status := FND_API.G_RET_STS_ERROR;
905       END IF;
906 
907       IF(p_validation_mode = CSC_CORE_UTILS_PVT.G_CREATE)
908       THEN
909           -- Hint: Validate data
910           -- IF p_OBJECT_VERSION_NUMBER is not NULL and p_OBJECT_VERSION_NUMBER <> G_MISS_CHAR
911           -- verify if data is valid
912           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
913           NULL;
914       ELSIF(p_validation_mode = CSC_CORE_UTILS_PVT.G_UPDATE)
915       THEN
916           -- Hint: Validate data
917           -- IF p_OBJECT_VERSION_NUMBER <> G_MISS_CHAR
918           -- verify if data is valid
919           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
920           NULL;
921       END IF;
922 
923       -- Standard call to get message count and if count is 1, get message info.
924       FND_MSG_PUB.Count_And_Get
925       (  p_count          =>   x_msg_count,
926          p_data           =>   x_msg_data
927       );
928 
929 END Validate_OBJECT_VERSION_NUMBER;
930 
931 
932 PROCEDURE Validate_csc_plan_lines(
933     P_Init_Msg_List              IN   VARCHAR2,
934     P_Validation_level           IN   NUMBER,
935     P_Validation_mode            IN   VARCHAR2,
936     P_CSC_PLAN_LINES_Rec         IN   CSC_PLAN_LINES_Rec_Type,
937     X_Return_Status              OUT  NOCOPY VARCHAR2,
938     X_Msg_Count                  OUT  NOCOPY NUMBER,
939     X_Msg_Data                   OUT  NOCOPY VARCHAR2
940     )
941 IS
942    l_api_name   CONSTANT VARCHAR2(30) := 'Validate_csc_plan_lines';
943 BEGIN
944       -- Initialize API return status to SUCCESS
945       x_return_status := FND_API.G_RET_STS_SUCCESS;
946 
947       IF (p_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
948           Validate_LINE_ID(
949               p_init_msg_list          => FND_API.G_FALSE,
950               p_validation_mode        => p_validation_mode,
951               p_LINE_ID                => P_CSC_PLAN_LINES_Rec.LINE_ID,
952               x_return_status          => x_return_status,
953               x_msg_count              => x_msg_count,
954               x_msg_data               => x_msg_data);
955           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
956               raise FND_API.G_EXC_ERROR;
957           END IF;
958 
959           Validate_PLAN_ID(
960               p_init_msg_list          => FND_API.G_FALSE,
961               p_validation_mode        => p_validation_mode,
962               p_PLAN_ID                => P_CSC_PLAN_LINES_Rec.PLAN_ID,
963               x_return_status          => x_return_status,
964               x_msg_count              => x_msg_count,
965               x_msg_data               => x_msg_data);
966           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
967               raise FND_API.G_EXC_ERROR;
968           END IF;
969 
970           Validate_CONDITION_ID(
971               p_init_msg_list          => FND_API.G_FALSE,
972               p_validation_mode        => p_validation_mode,
973 		    P_PLAN_ID                => P_CSC_PLAN_LINES_REC.PLAN_ID,
974               p_CONDITION_ID           => P_CSC_PLAN_LINES_Rec.CONDITION_ID,
975               x_return_status          => x_return_status,
976               x_msg_count              => x_msg_count,
977               x_msg_data               => x_msg_data);
978 
979           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
980               raise FND_API.G_EXC_ERROR;
981           END IF;
982       END IF;
983 
984 
985 END Validate_csc_plan_lines;
986 
987 End CSC_PLAN_LINES_PVT;