[Home] [Help]
PACKAGE BODY: APPS.PV_PROCESS_RULE_PVT
Source
1 PACKAGE BODY PV_PROCESS_RULE_PVT as
2 /* $Header: pvrvprub.pls 115.21 2004/01/13 19:53:33 pklin ship $ */
3 -- Start of Comments
4 -- Package name : PV_PROCESS_RULE_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_PROCESS_RULE_PVT';
13 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvrvprub.pls';
14
15 -- -----------------------------------------------------------
16 --
17 -- -----------------------------------------------------------
18 G_PROCESS_TYPE VARCHAR2(30) := NULL;
19 G_ACTION VARCHAR2(30) := NULL;
20
21
22 TYPE NUMBER_TABLE IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
23
24
25 -- Hint: Primary key needs to be returned.
26 AS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
27 AS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
28 AS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
29
30 PROCEDURE Create_process_rule(
31 P_Api_Version_Number IN NUMBER,
32 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
33 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
34 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
35 P_Identity_Resource_Id IN NUMBER,
36 P_PROCESS_RULE_Rec IN PV_RULE_RECTYPE_PUB.RULES_REC_TYPE
37 := PV_RULE_RECTYPE_PUB.G_MISS_RULES_REC,
38 X_PROCESS_RULE_ID OUT NOCOPY NUMBER,
39 X_Return_Status OUT NOCOPY VARCHAR2,
40 X_Msg_Count OUT NOCOPY NUMBER,
41 X_Msg_Data OUT NOCOPY VARCHAR2
42 )
43
44 IS
45 l_api_name CONSTANT VARCHAR2(30) := 'Create_process_rule';
46 l_api_version_number CONSTANT NUMBER := 2.0;
47 l_return_status_full VARCHAR2(1);
48 l_access_flag VARCHAR2(1);
49 BEGIN
50 -- Standard Start of API savepoint
51 SAVEPOINT CREATE_PROCESS_RULE_PVT;
52
53 -- Standard call to check for call compatibility.
54 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
55 p_api_version_number,
56 l_api_name,
57 G_PKG_NAME)
58 THEN
59 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
60 END IF;
61
62
63 -- Initialize message list if p_init_msg_list is set to TRUE.
64 IF FND_API.to_Boolean( p_init_msg_list )
65 THEN
66 FND_MSG_PUB.initialize;
67 END IF;
68
69
70 -- Debug Message
71 IF (AS_DEBUG_HIGH_ON) THEN
72
73 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
74 END IF;
75
76
77 -- Initialize API return status to SUCCESS
78 x_return_status := FND_API.G_RET_STS_SUCCESS;
79
80 --
81 -- API body
82 --
83 -- ******************************************************************
84 -- Validate Environment
85 -- ******************************************************************
86 IF FND_GLOBAL.User_Id IS NULL
87 THEN
88 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
89 THEN
90 FND_MESSAGE.Set_Name('PV', 'UT_CANNOT_GET_PROFILE_VALUE');
91 FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
92 FND_MSG_PUB.ADD;
93 END IF;
94 RAISE FND_API.G_EXC_ERROR;
95 END IF;
96
97 -- Debug message
98 IF (AS_DEBUG_HIGH_ON) THEN
99
100 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_process_rule');
101 END IF;
102
103 -- Invoke validation procedures
104 Validate_process_rule(
105 p_init_msg_list => FND_API.G_FALSE,
106 p_validation_level => p_validation_level,
107 p_validation_mode => AS_UTILITY_PVT.G_CREATE,
108 P_PROCESS_RULE_Rec => p_PROCESS_RULE_rec,
109 x_return_status => x_return_status,
110 x_msg_count => x_msg_count,
111 x_msg_data => x_msg_data);
112
113 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
114 RAISE FND_API.G_EXC_ERROR;
115 END IF;
116
117 /*
118 --
119 -- ========================================================================
120 FND_MESSAGE.Set_Name('PV', 'UT_CANNOT_GET_PROFILE_VALUE');
121 FND_MESSAGE.Set_Token('TEXT', 'parent_rule_id:' || p_PROCESS_RULE_rec.PARENT_RULE_ID);
122 FND_MESSAGE.Set_Token('TEXT', 'child_rule_id:' || x_PROCESS_RULE_ID);
123 FND_MESSAGE.Set_Token('TEXT', 'rank:' || p_PROCESS_RULE_rec.rank);
124 FND_MSG_PUB.ADD;
125 RAISE FND_API.G_EXC_ERROR;
126 -- ========================================================================
127 */
128 Validate_rank(
129 P_Init_Msg_List => FND_API.G_FALSE,
130 P_Validation_mode => AS_UTILITY_PVT.G_CREATE,
131 P_Parent_Rule_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID,
132 P_Child_Rule_ID => x_PROCESS_RULE_ID,
133 P_RANK => p_PROCESS_RULE_rec.rank,
134 X_Return_Status => x_return_status,
135 X_Msg_Count => x_msg_count,
136 X_Msg_Data => x_msg_data);
137
138 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
139 RAISE FND_API.G_EXC_ERROR;
140 END IF;
141
142 Validate_enddate(
143 P_Init_Msg_List => FND_API.G_FALSE,
144 P_Validation_mode => AS_UTILITY_PVT.G_CREATE,
145 P_START_DATE => p_PROCESS_RULE_rec.start_date,
146 P_END_DATE => p_PROCESS_RULE_rec.end_date,
147 X_Return_Status => x_return_status,
148 X_Msg_Count => x_msg_count,
149 X_Msg_Data => x_msg_data);
150
151 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
152 RAISE FND_API.G_EXC_ERROR;
153 END IF;
154
155 Validate_startdate(
156 P_Init_Msg_List => FND_API.G_FALSE,
157 P_Validation_mode => AS_UTILITY_PVT.G_CREATE,
158 P_Parent_Rule_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID,
159 P_START_DATE => p_PROCESS_RULE_rec.start_date,
160 X_Return_Status => x_return_status,
161 X_Msg_Count => x_msg_count,
162 X_Msg_Data => x_msg_data);
163
164 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
165 RAISE FND_API.G_EXC_ERROR;
166 END IF;
167
168 Validate_status(
169 P_Init_Msg_List => FND_API.G_FALSE,
170 P_Validation_mode => AS_UTILITY_PVT.G_CREATE,
171 P_Parent_Rule_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID,
172 P_STATUS => p_PROCESS_RULE_rec.status_code,
173 X_Return_Status => x_return_status,
174 X_Msg_Count => x_msg_count,
175 X_Msg_Data => x_msg_data);
176
177 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
178 RAISE FND_API.G_EXC_ERROR;
179 END IF;
180
181 -- Debug Message
182 IF (AS_DEBUG_HIGH_ON) THEN
183
184 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling create table handler');
185 END IF;
186
187
188 -- Invoke table handler(PV_PROCESS_RULES_B_PKG.Insert_Row)
189 PV_PROCESS_RULES_PKG.Insert_Row(
190 px_PROCESS_RULE_ID => x_PROCESS_RULE_ID
191 ,p_PARENT_RULE_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID
192 ,p_LAST_UPDATE_DATE => SYSDATE
193 ,p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID
194 ,p_CREATION_DATE => SYSDATE
195 ,p_CREATED_BY => FND_GLOBAL.USER_ID
196 ,p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID
197 ,p_OBJECT_VERSION_NUMBER => p_PROCESS_RULE_rec.OBJECT_VERSION_NUMBER
198 ,p_REQUEST_ID => p_PROCESS_RULE_rec.REQUEST_ID
199 ,p_PROGRAM_APPLICATION_ID => p_PROCESS_RULE_rec.PROGRAM_APPLICATION_ID
200 ,p_PROGRAM_ID => p_PROCESS_RULE_rec.PROGRAM_ID
201 ,p_PROGRAM_UPDATE_DATE => p_PROCESS_RULE_rec.PROGRAM_UPDATE_DATE
202 ,p_PROCESS_TYPE => p_PROCESS_RULE_rec.PROCESS_TYPE
203 ,p_RANK => p_PROCESS_RULE_rec.RANK
204 ,p_STATUS_CODE => p_PROCESS_RULE_rec.STATUS_CODE
205 ,p_START_DATE => p_PROCESS_RULE_rec.START_DATE
206 ,p_END_DATE => p_PROCESS_RULE_rec.END_DATE
207 ,p_ACTION => p_PROCESS_RULE_rec.ACTION
208 ,p_ACTION_VALUE => p_PROCESS_RULE_rec.ACTION_VALUE
209 ,p_OWNER_RESOURCE_ID => p_PROCESS_RULE_rec.OWNER_RESOURCE_ID
210 ,p_CURRENCY_CODE => p_PROCESS_RULE_rec.CURRENCY_CODE
211 ,p_PROCESS_RULE_NAME => p_PROCESS_RULE_rec.PROCESS_RULE_NAME
212 ,p_DESCRIPTION => p_PROCESS_RULE_rec.DESCRIPTION
213 ,p_ATTRIBUTE_CATEGORY => p_PROCESS_RULE_rec.ATTRIBUTE_CATEGORY
214 ,p_ATTRIBUTE1 => p_PROCESS_RULE_rec.ATTRIBUTE1
215 ,p_ATTRIBUTE2 => p_PROCESS_RULE_rec.ATTRIBUTE2
216 ,p_ATTRIBUTE3 => p_PROCESS_RULE_rec.ATTRIBUTE3
217 ,p_ATTRIBUTE4 => p_PROCESS_RULE_rec.ATTRIBUTE4
218 ,p_ATTRIBUTE5 => p_PROCESS_RULE_rec.ATTRIBUTE5
219 ,p_ATTRIBUTE6 => p_PROCESS_RULE_rec.ATTRIBUTE6
220 ,p_ATTRIBUTE7 => p_PROCESS_RULE_rec.ATTRIBUTE7
221 ,p_ATTRIBUTE8 => p_PROCESS_RULE_rec.ATTRIBUTE8
222 ,p_ATTRIBUTE9 => p_PROCESS_RULE_rec.ATTRIBUTE9
223 ,p_ATTRIBUTE10 => p_PROCESS_RULE_rec.ATTRIBUTE10
224 ,p_ATTRIBUTE11 => p_PROCESS_RULE_rec.ATTRIBUTE11
225 ,p_ATTRIBUTE12 => p_PROCESS_RULE_rec.ATTRIBUTE12
226 ,p_ATTRIBUTE13 => p_PROCESS_RULE_rec.ATTRIBUTE13
227 ,p_ATTRIBUTE14 => p_PROCESS_RULE_rec.ATTRIBUTE14
228 ,p_ATTRIBUTE15 => p_PROCESS_RULE_rec.ATTRIBUTE15
229 );
230
231 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
232 RAISE FND_API.G_EXC_ERROR;
233 END IF;
234
235 --
236 -- End of API body
237 --
238
239 -- Standard check for p_commit
240 IF FND_API.to_Boolean( p_commit )
241 THEN
242 COMMIT WORK;
243 END IF;
244
245
246 -- Debug Message
247 IF (AS_DEBUG_HIGH_ON) THEN
248
249 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
250 END IF;
251
252
253 -- Standard call to get message count and if count is 1, get message info.
254 FND_MSG_PUB.Count_And_Get
255 ( p_count => x_msg_count,
256 p_data => x_msg_data
257 );
258
259 EXCEPTION
260 WHEN FND_API.G_EXC_ERROR THEN
261 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
262 P_API_NAME => L_API_NAME
263 ,P_PKG_NAME => G_PKG_NAME
264 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
265 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
266 ,X_MSG_COUNT => X_MSG_COUNT
267 ,X_MSG_DATA => X_MSG_DATA
268 ,X_RETURN_STATUS => X_RETURN_STATUS);
269
270 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
271 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
272 P_API_NAME => L_API_NAME
273 ,P_PKG_NAME => G_PKG_NAME
274 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
275 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
276 ,X_MSG_COUNT => X_MSG_COUNT
277 ,X_MSG_DATA => X_MSG_DATA
278 ,X_RETURN_STATUS => X_RETURN_STATUS);
279
280 WHEN OTHERS THEN
281 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
282 P_API_NAME => L_API_NAME
283 ,P_PKG_NAME => G_PKG_NAME
284 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
285 ,P_SQLCODE => SQLCODE
286 ,P_SQLERRM => SQLERRM
287 ,P_PACKAGE_TYPE => AS_UTILITY_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 End Create_process_rule;
292
293
294 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
295 PROCEDURE Update_process_rule(
296 P_Api_Version_Number IN NUMBER,
297 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
298 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
299 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
300 P_Identity_Resource_Id IN NUMBER,
301 P_PROCESS_RULE_Rec IN PV_RULE_RECTYPE_PUB.RULES_REC_TYPE,
302 X_Return_Status OUT NOCOPY VARCHAR2,
303 X_Msg_Count OUT NOCOPY NUMBER,
304 X_Msg_Data OUT NOCOPY VARCHAR2
305 )
306
307 IS
308
309 Cursor C_Get_process_rule(pc_PROCESS_RULE_ID Number) IS
310 Select OBJECT_VERSION_NUMBER
311 From PV_PROCESS_RULES_B
312 where process_rule_id = pc_process_rule_id
313 For Update NOWAIT;
314
315 l_api_name CONSTANT VARCHAR2(30) := 'Update_process_rule';
316 l_api_version_number CONSTANT NUMBER := 2.0;
317 -- Local Variables
318 l_ref_PROCESS_RULE_rec PV_RULE_RECTYPE_PUB.RULES_REC_TYPE;
319 l_tar_PROCESS_RULE_rec PV_RULE_RECTYPE_PUB.RULES_REC_TYPE := P_PROCESS_RULE_Rec;
320 BEGIN
321 -- Standard Start of API savepoint
322 SAVEPOINT UPDATE_PROCESS_RULE_PVT;
323
324 -- Standard call to check for call compatibility.
325 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
326 p_api_version_number,
327 l_api_name,
328 G_PKG_NAME)
329 THEN
330 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
331 END IF;
332
333
334 -- Initialize message list if p_init_msg_list is set to TRUE.
335 IF FND_API.to_Boolean( p_init_msg_list )
336 THEN
337 FND_MSG_PUB.initialize;
338 END IF;
339
340
341 -- Debug Message
342 IF (AS_DEBUG_HIGH_ON) THEN
343
344 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
345 END IF;
346
347
348 -- Initialize API return status to SUCCESS
349 x_return_status := FND_API.G_RET_STS_SUCCESS;
350
351 --
352 -- Api body
353 --
354
355 -- Debug Message
356 IF (AS_DEBUG_HIGH_ON) THEN
357
358 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Open Cursor to Select');
359 END IF;
360
361
362 Open C_Get_process_rule( l_tar_PROCESS_RULE_rec.PROCESS_RULE_ID);
363
364 Fetch C_Get_process_rule into
365 l_ref_PROCESS_RULE_rec.OBJECT_VERSION_NUMBER;
366
367 If ( C_Get_process_rule%NOTFOUND) Then
368 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
369 THEN
370 FND_MESSAGE.Set_Name('AS', 'API_MISSING_UPDATE_TARGET');
371 FND_MESSAGE.Set_Token ('INFO', 'process_rule', FALSE);
372 FND_MSG_PUB.Add;
373 END IF;
374 Close C_Get_process_rule;
375 raise FND_API.G_EXC_ERROR;
376 END IF;
377 -- Debug Message
378 IF (AS_DEBUG_HIGH_ON) THEN
379
380 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
381 END IF;
382 Close C_Get_process_rule;
383
384 If (l_tar_PROCESS_RULE_rec.object_version_number is NULL or
385 l_tar_PROCESS_RULE_rec.object_version_number = FND_API.G_MISS_NUM ) Then
386 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
387 THEN
388 FND_MESSAGE.Set_Name('AS', 'API_MISSING_ID');
389 FND_MESSAGE.Set_Token('COLUMN', 'object_version_number', FALSE);
390 FND_MSG_PUB.ADD;
391 END IF;
392 raise FND_API.G_EXC_ERROR;
393 End if;
394 -- Check Whether record has been changed by someone else
395 If (l_tar_PROCESS_RULE_rec.object_version_number <> l_ref_PROCESS_RULE_rec.object_version_number) Then
396 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
397 THEN
398 FND_MESSAGE.Set_Name('AS', 'API_RECORD_CHANGED');
399 FND_MESSAGE.Set_Token('INFO', 'process_rule', FALSE);
400 FND_MSG_PUB.ADD;
401 END IF;
402 raise FND_API.G_EXC_ERROR;
403 End if;
404
405 -- Debug message
406 IF (AS_DEBUG_HIGH_ON) THEN
407
408 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_process_rule');
409 END IF;
410
411 -- Invoke validation procedures
412 Validate_process_rule(
413 p_init_msg_list => FND_API.G_FALSE,
414 p_validation_level => p_validation_level,
415 p_validation_mode => AS_UTILITY_PVT.G_UPDATE,
416 P_PROCESS_RULE_Rec => P_PROCESS_RULE_Rec,
417 x_return_status => x_return_status,
418 x_msg_count => x_msg_count,
419 x_msg_data => x_msg_data);
420
421 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
422 RAISE FND_API.G_EXC_ERROR;
423 END IF;
424
425
426 Validate_rank(
427 P_Init_Msg_List => FND_API.G_FALSE,
428 P_Validation_mode => AS_UTILITY_PVT.G_UPDATE,
429 P_Parent_Rule_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID,
430 P_Child_Rule_ID => P_PROCESS_RULE_Rec.PROCESS_RULE_ID,
431 P_RANK => p_PROCESS_RULE_rec.rank,
432 X_Return_Status => x_return_status,
433 X_Msg_Count => x_msg_count,
434 X_Msg_Data => x_msg_data);
435
436 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
437 RAISE FND_API.G_EXC_ERROR;
438 END IF;
439
440
441 Validate_enddate(
442 P_Init_Msg_List => FND_API.G_FALSE,
443 P_Validation_mode => AS_UTILITY_PVT.G_UPDATE,
444 P_START_DATE => p_PROCESS_RULE_rec.start_date,
445 P_END_DATE => p_PROCESS_RULE_rec.end_date,
446 X_Return_Status => x_return_status,
447 X_Msg_Count => x_msg_count,
448 X_Msg_Data => x_msg_data);
449
450 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
451 RAISE FND_API.G_EXC_ERROR;
452 END IF;
453
454 Validate_startdate(
455 P_Init_Msg_List => FND_API.G_FALSE,
456 P_Validation_mode => AS_UTILITY_PVT.G_UPDATE,
457 P_Parent_Rule_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID,
458 P_START_DATE => p_PROCESS_RULE_rec.start_date,
459 X_Return_Status => x_return_status,
460 X_Msg_Count => x_msg_count,
461 X_Msg_Data => x_msg_data);
462
463 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
464 RAISE FND_API.G_EXC_ERROR;
465 END IF;
466
467 G_PROCESS_TYPE := p_PROCESS_RULE_rec.process_type;
468 G_ACTION := 'UPDATE';
469
470 Validate_status(
471 P_Init_Msg_List => FND_API.G_FALSE,
472 P_Validation_mode => AS_UTILITY_PVT.G_UPDATE,
473 P_Parent_Rule_ID => p_PROCESS_RULE_rec.process_RULE_ID,
474 P_STATUS => p_PROCESS_RULE_rec.status_code,
475 X_Return_Status => x_return_status,
476 X_Msg_Count => x_msg_count,
477 X_Msg_Data => x_msg_data);
478
479 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
480 RAISE FND_API.G_EXC_ERROR;
481 END IF;
482
483
484 -- Debug Message
485 IF (AS_DEBUG_HIGH_ON) THEN
486
487 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling update table handler');
488 END IF;
489
490 -- Invoke table handler(PV_PROCESS_RULES_B_PKG.Update_Row)
491 PV_PROCESS_RULES_PKG.Update_Row(
492 p_PROCESS_RULE_ID => p_PROCESS_RULE_rec.PROCESS_RULE_ID
493 ,p_LAST_UPDATE_DATE => SYSDATE
494 ,p_LAST_UPDATED_BY => FND_GLOBAL.USER_ID
495 ,p_CREATION_DATE => FND_API.G_MISS_DATE
496 ,p_CREATED_BY => FND_API.G_MISS_NUM
497 ,p_LAST_UPDATE_LOGIN => FND_GLOBAL.CONC_LOGIN_ID
498 ,p_OBJECT_VERSION_NUMBER => p_PROCESS_RULE_rec.OBJECT_VERSION_NUMBER
499 ,p_REQUEST_ID => p_PROCESS_RULE_rec.REQUEST_ID
500 ,p_PROGRAM_APPLICATION_ID => p_PROCESS_RULE_rec.PROGRAM_APPLICATION_ID
501 ,p_PROGRAM_ID => p_PROCESS_RULE_rec.PROGRAM_ID
502 ,p_PROGRAM_UPDATE_DATE => p_PROCESS_RULE_rec.PROGRAM_UPDATE_DATE
503 ,p_PROCESS_TYPE => p_PROCESS_RULE_rec.PROCESS_TYPE
504 ,p_RANK => p_PROCESS_RULE_rec.RANK
505 ,p_STATUS_CODE => p_PROCESS_RULE_rec.STATUS_CODE
506 ,p_START_DATE => p_PROCESS_RULE_rec.START_DATE
507 ,p_END_DATE => p_PROCESS_RULE_rec.END_DATE
508 ,p_ACTION => p_PROCESS_RULE_rec.ACTION
509 ,p_ACTION_VALUE => p_PROCESS_RULE_rec.ACTION_VALUE
510 ,p_OWNER_RESOURCE_ID => p_PROCESS_RULE_rec.OWNER_RESOURCE_ID
511 ,p_CURRENCY_CODE => p_PROCESS_RULE_rec.CURRENCY_CODE
512 ,p_PROCESS_RULE_NAME => p_PROCESS_RULE_rec.PROCESS_RULE_NAME
513 ,p_DESCRIPTION => p_PROCESS_RULE_rec.DESCRIPTION
514 ,p_ATTRIBUTE_CATEGORY => p_PROCESS_RULE_rec.ATTRIBUTE_CATEGORY
515 ,p_ATTRIBUTE1 => p_PROCESS_RULE_rec.ATTRIBUTE1
516 ,p_ATTRIBUTE2 => p_PROCESS_RULE_rec.ATTRIBUTE2
517 ,p_ATTRIBUTE3 => p_PROCESS_RULE_rec.ATTRIBUTE3
518 ,p_ATTRIBUTE4 => p_PROCESS_RULE_rec.ATTRIBUTE4
519 ,p_ATTRIBUTE5 => p_PROCESS_RULE_rec.ATTRIBUTE5
520 ,p_ATTRIBUTE6 => p_PROCESS_RULE_rec.ATTRIBUTE6
521 ,p_ATTRIBUTE7 => p_PROCESS_RULE_rec.ATTRIBUTE7
522 ,p_ATTRIBUTE8 => p_PROCESS_RULE_rec.ATTRIBUTE8
523 ,p_ATTRIBUTE9 => p_PROCESS_RULE_rec.ATTRIBUTE9
524 ,p_ATTRIBUTE10 => p_PROCESS_RULE_rec.ATTRIBUTE10
525 ,p_ATTRIBUTE11 => p_PROCESS_RULE_rec.ATTRIBUTE11
526 ,p_ATTRIBUTE12 => p_PROCESS_RULE_rec.ATTRIBUTE12
527 ,p_ATTRIBUTE13 => p_PROCESS_RULE_rec.ATTRIBUTE13
528 ,p_ATTRIBUTE14 => p_PROCESS_RULE_rec.ATTRIBUTE14
529 ,p_ATTRIBUTE15 => p_PROCESS_RULE_rec.ATTRIBUTE15
530 );
531 --
532 -- End of API body.
533 --
534
535 -- Standard check for p_commit
536 IF FND_API.to_Boolean( p_commit )
537 THEN
538 COMMIT WORK;
539 END IF;
540
541
542 -- Debug Message
543 IF (AS_DEBUG_HIGH_ON) THEN
544
545 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
546 END IF;
547
548
549 -- Standard call to get message count and if count is 1, get message info.
550 FND_MSG_PUB.Count_And_Get
551 ( p_count => x_msg_count,
552 p_data => x_msg_data
553 );
554
555 EXCEPTION
556 WHEN FND_API.G_EXC_ERROR THEN
557 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
558 P_API_NAME => L_API_NAME
559 ,P_PKG_NAME => G_PKG_NAME
560 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
561 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
562 ,X_MSG_COUNT => X_MSG_COUNT
563 ,X_MSG_DATA => X_MSG_DATA
564 ,X_RETURN_STATUS => X_RETURN_STATUS);
565
566 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
567 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
568 P_API_NAME => L_API_NAME
569 ,P_PKG_NAME => G_PKG_NAME
570 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
571 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
572 ,X_MSG_COUNT => X_MSG_COUNT
573 ,X_MSG_DATA => X_MSG_DATA
574 ,X_RETURN_STATUS => X_RETURN_STATUS);
575
576 WHEN OTHERS THEN
577 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
578 P_API_NAME => L_API_NAME
579 ,P_PKG_NAME => G_PKG_NAME
580 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
581 ,P_SQLCODE => SQLCODE
582 ,P_SQLERRM => SQLERRM
583 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
584 ,X_MSG_COUNT => X_MSG_COUNT
585 ,X_MSG_DATA => X_MSG_DATA
586 ,X_RETURN_STATUS => X_RETURN_STATUS);
587 End Update_process_rule;
588
589 -- ----------------------------------------------------------------------------------------
590 -- Delete_Process_Rule
591 --
592 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
593 -- The Master delete procedure may not be needed depends on different business requirements.
594 -- ----------------------------------------------------------------------------------------
595 PROCEDURE Delete_process_rule(
596 P_Api_Version_Number IN NUMBER,
597 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
598 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
599 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
600 P_Identity_Resource_Id IN NUMBER,
601 P_PROCESS_RULE_Rec IN PV_RULE_RECTYPE_PUB.RULES_REC_TYPE,
602 X_Return_Status OUT NOCOPY VARCHAR2,
603 X_Msg_Count OUT NOCOPY NUMBER,
604 X_Msg_Data OUT NOCOPY VARCHAR2
605 )
606
607 IS
608 l_api_name CONSTANT VARCHAR2(30) := 'Delete_process_rule';
609 l_api_version_number CONSTANT NUMBER := 2.0;
610
611 -- ------------------------------------------------------------------------
612 -- These columns can be retrieved from the VO to save a database call.
613 -- However, OSO has a bug that doesn't allow parent_Rule_id to be returned.
614 -- ------------------------------------------------------------------------
615 /*
616 cursor lc_retrieve_rule_components(pc_rule_id number) is
617 select parent_rule_id, process_type
618 from pv_process_rules_vl
619 where process_rule_id = pc_rule_id;
620 */
621
622 -- ------------------------------------------------------------------------
623 -- SQL is tuned to make use of an index on fnd_profile_option_values
624 -- ------------------------------------------------------------------------
625 cursor lc_validate_rule_profile_ref(pc_rule_id number) is
626 select process_rule_name
627 from fnd_profile_option_values a, pv_process_rules_tl b,
628 fnd_profile_options c
629 where a.profile_option_value = to_char(pc_rule_id)
630 and a.profile_option_value = b.process_rule_id AND
631 b.language = USERENV('LANG') and
632 a.application_Id = 691 and
633 a.profile_option_id = c.profile_option_id AND
634 c.profile_option_name = 'PV_AUTO_MATCHING_RULE';
635
636
637 /* ------------------------------------------------------
638 cursor lc_validate_rule_referenced(pc_rule_id number) is
639 select process_rule_name
640 from pv_entity_rules_applied a, pv_process_rules_vl b
641 where a.process_rule_id = pc_rule_id
642 and a.process_rule_id = b.process_rule_id;
643 ------------------------------------------------------- */
644 cursor lc_validate_rule_referenced1(pc_rule_id number) is
645 SELECT process_rule_name
646 FROM pv_process_rules_vl a
647 WHERE process_rule_id = pc_rule_id AND
648 EXISTS (SELECT 'x' FROM pv_entity_rules_applied b
649 WHERE a.process_rule_id = b.process_rule_id);
650
651 cursor lc_validate_rule_referenced2(pc_rule_id number) is
652 SELECT process_rule_name
653 FROM pv_process_rules_vl a
654 WHERE process_rule_id = pc_rule_id AND
655 EXISTS (SELECT 'x' FROM pv_entity_rules_applied b
656 WHERE b.parent_process_rule_id = a.process_rule_id);
657
658
659 cursor lc_get_selcrit (pc_rule_id number) is
660 select selection_criteria_id
661 from pv_enty_select_criteria
662 where process_rule_id = pc_rule_id;
663
664 cursor lc_get_attr_mapping (pc_rule_id number) is
665 select mapping_id
666 from pv_entity_attr_mappings
667 where process_rule_id = pc_rule_id;
668
669 cursor lc_get_entity_routing (pc_rule_id number) is
670 select entity_routing_id
671 from pv_entity_routings
672 where process_rule_id = pc_rule_id;
673
674 cursor lc_get_parent_rule_id (pc_rule_id number) is
675 select process_rule_id
676 from pv_process_rules_vl
677 where parent_rule_id = pc_rule_id;
678
679
680 l_ENTYROUT_rec PV_RULE_RECTYPE_PUB.ENTYROUT_Rec_Type;
681 l_ENTYATTMAP_rec PV_RULE_RECTYPE_PUB.ENTYATTMAP_Rec_Type;
682 l_SELCRIT_rec PV_RULE_RECTYPE_PUB.SELCRIT_Rec_Type;
683
684 l_process_rule_name varchar2(100);
685 l_selection_criteria_id number;
686 l_mapping_id number;
687 l_entity_routing_id number;
688
689 l_is_main_rule_flag BOOLEAN;
690 l_process_type VARCHAR2(30);
691 l_process_rule_id NUMBER;
692
693
694 BEGIN
695 -- Standard Start of API savepoint
696 SAVEPOINT DELETE_PROCESS_RULE_PVT;
697
698 -- Standard call to check for call compatibility.
699 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
700 p_api_version_number,
701 l_api_name,
702 G_PKG_NAME)
703 THEN
704 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
705 END IF;
706
707
708 -- Initialize message list if p_init_msg_list is set to TRUE.
709 IF FND_API.to_Boolean( p_init_msg_list )
710 THEN
711 FND_MSG_PUB.initialize;
712 END IF;
713
714
715 -- Debug Message
716 IF (AS_DEBUG_HIGH_ON) THEN
717
718 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
719 END IF;
720
721
722 -- Initialize API return status to SUCCESS
723 x_return_status := FND_API.G_RET_STS_SUCCESS;
724
725 --
726 -- Api body
727 --
728 -- ------------------------------------------------------------------
729 -- Find out if the current rule is a main rule or a subrule.
730 -- ------------------------------------------------------------------
731 FOR x IN (
732 SELECT parent_rule_id, process_type
733 FROM pv_process_rules_vl
734 WHERE process_rule_id = p_PROCESS_RULE_rec.PROCESS_RULE_ID)
735 LOOP
736 IF (x.parent_rule_id IS NOT NULL) THEN
737 l_is_main_rule_flag := FALSE;
738
739 ELSE
740 l_is_main_rule_flag := TRUE;
741 END IF;
742
743 l_process_type := x.process_type;
744 END LOOP;
745
746
747 open lc_validate_rule_profile_ref (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
748 fetch lc_validate_rule_profile_ref into l_process_rule_name;
749 close lc_validate_rule_profile_ref;
750
751 if l_process_rule_name is not null then
752
753 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
754 THEN
755 FND_MESSAGE.Set_Name('PV', 'PV_RULE_REF_BY_PROFILE');
756 FND_MESSAGE.Set_Token('PROCESS_RULE_NAME',l_process_rule_name);
757 FND_MSG_PUB.Add;
758 END IF;
759
760 RAISE FND_API.G_EXC_ERROR;
761
762 l_process_rule_name := null;
763
764 end if;
765
766 -- ------------------------------------------------------------------
767 -- Check if the rule is referenced by any leads.
768 -- ------------------------------------------------------------------
769 IF (l_process_type IN ('LEAD_RATING', 'CHANNEL_SELECTION', 'LEAD_QUALIFICATION') AND
770 l_is_main_rule_flag)
771 THEN
772 open lc_validate_rule_referenced2 (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
773 fetch lc_validate_rule_referenced2 into l_process_rule_name;
774 close lc_validate_rule_referenced2;
775
776 ELSE
777 open lc_validate_rule_referenced1 (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
778 fetch lc_validate_rule_referenced1 into l_process_rule_name;
779 close lc_validate_rule_referenced1;
780 END IF;
781
782 if l_process_rule_name is not null then
783
784 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
785 THEN
786 FND_MESSAGE.Set_Name('PV', 'PV_RULE_REFERENCED');
787 FND_MESSAGE.Set_Token('PROCESS_RULE_NAME',l_process_rule_name);
788 FND_MSG_PUB.Add;
789 END IF;
790
791 RAISE FND_API.G_EXC_ERROR;
792
793 end if;
794
795 begin
796
797 open lc_get_entity_routing (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
798 loop
799
800 fetch lc_get_entity_routing into l_entity_routing_id;
801 exit when lc_get_entity_routing%notfound;
802
803 l_entyrout_rec.entity_routing_id := l_entity_routing_id;
804
805 PV_entyrout_PVT.Delete_entyrout(
806 P_Api_Version_Number => 2.0,
807 P_Init_Msg_List => FND_API.G_FALSE,
808 P_Commit => p_commit,
809 P_Validation_Level => p_Validation_Level,
810 P_Identity_Resource_Id => P_Identity_Resource_Id,
811 P_ENTYROUT_Rec => l_ENTYROUT_Rec,
812 X_Return_Status => x_return_status,
813 X_Msg_Count => x_msg_count,
814 X_Msg_Data => x_msg_data);
815
816 -- Check return status from the above procedure call
817 IF x_return_status = FND_API.G_RET_STS_ERROR then
818 raise FND_API.G_EXC_ERROR;
819 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
820 raise FND_API.G_EXC_UNEXPECTED_ERROR;
821 END IF;
822
823 end loop;
824 close lc_get_entity_routing;
825
826 exception
827 when others then
828 close lc_get_entity_routing;
829 raise;
830 end;
831
832 begin
833
834 open lc_get_attr_mapping (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
835 loop
836
837 fetch lc_get_attr_mapping into l_mapping_id;
838 exit when lc_get_attr_mapping%notfound;
839
840 l_entyattmap_rec.mapping_id := l_mapping_id;
841
842
843 PV_entyattmap_PVT.Delete_entyattmap(
844 P_Api_Version_Number => 2.0,
845 P_Init_Msg_List => FND_API.G_FALSE,
846 P_Commit => p_commit,
847 P_Validation_Level => p_Validation_Level,
848 P_Identity_Resource_Id => P_Identity_Resource_Id,
849 P_ENTYATTMAP_Rec => l_ENTYATTMAP_Rec,
850 X_Return_Status => x_return_status,
851 X_Msg_Count => x_msg_count,
852 X_Msg_Data => x_msg_data);
853
854 -- Check return status from the above procedure call
855 IF x_return_status = FND_API.G_RET_STS_ERROR then
856 raise FND_API.G_EXC_ERROR;
857 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
858 raise FND_API.G_EXC_UNEXPECTED_ERROR;
859 END IF;
860
861 end loop;
862 close lc_get_attr_mapping;
863
864 exception
865 when others then
866 close lc_get_attr_mapping;
867 raise;
868 end;
869
870 begin
871
872 open lc_get_selcrit (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
873 loop
874
875 fetch lc_get_selcrit into l_selection_criteria_id;
876 exit when lc_get_selcrit%notfound;
877
878 l_selcrit_rec.selection_criteria_id := l_selection_criteria_id;
879
880 PV_selcrit_PVT.Delete_selcrit(
881 P_Api_Version_Number => 2.0,
882 P_Init_Msg_List => FND_API.G_FALSE,
883 P_Commit => p_commit,
884 P_Validation_Level => p_Validation_Level,
885 P_Identity_Resource_Id => P_Identity_Resource_Id,
886 P_SELCRIT_Rec => l_SELCRIT_Rec,
887 X_Return_Status => x_return_status,
888 X_Msg_Count => x_msg_count,
889 X_Msg_Data => x_msg_data);
890
891 -- Check return status from the above procedure call
892 IF x_return_status = FND_API.G_RET_STS_ERROR then
893 raise FND_API.G_EXC_ERROR;
894 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
895 raise FND_API.G_EXC_UNEXPECTED_ERROR;
896 END IF;
897
898 end loop;
899 close lc_get_selcrit;
900
901 exception
902 when others then
903 close lc_get_selcrit;
904 raise;
905 end;
906
907 -- Debug Message
908 IF (AS_DEBUG_HIGH_ON) THEN
909
910 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: PV_PROCESS_RULES_PKG.Delete_Row');
911 END IF;
912
913 -- Invoke table handler(PV_PROCESS_RULES_B_PKG.Delete_Row)
914 PV_PROCESS_RULES_PKG.Delete_Row(
915 p_PROCESS_RULE_ID => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
916 --
917 -- End of API body
918 --
919
920 -- Code change by ryellapu to delete the child rules when parent rule is deleted
921 -- Invoke table handler(PV_PROCESS_RULES_B_PKG.Delete_Row) to DELETE the child rows
922
923 -- BEGIN OF CHILD RULE DELETION
924
925 begin
926 open lc_get_parent_rule_id (pc_rule_id => p_PROCESS_RULE_rec.PROCESS_RULE_ID);
927 loop
928 fetch lc_get_parent_rule_id into l_process_rule_id;
929 exit when lc_get_parent_rule_id%notfound;
930
931 PV_PROCESS_RULES_PKG.Delete_Row(
932 p_PROCESS_RULE_ID => l_process_rule_id);
933
934 -- Check return status from the above procedure call
935 IF x_return_status = FND_API.G_RET_STS_ERROR then
936 raise FND_API.G_EXC_ERROR;
937 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
938 raise FND_API.G_EXC_UNEXPECTED_ERROR;
939 END IF;
940 end loop;
941 close lc_get_parent_rule_id;
942 exception
943 when others then
944 close lc_get_parent_rule_id;
945 raise;
946 end;
947
948 -- END OF CHILD RULE DELETION
949
950 -- Standard check for p_commit
951 IF FND_API.to_Boolean( p_commit )
952 THEN
953 COMMIT WORK;
954 END IF;
955
956
957 -- Debug Message
958 IF (AS_DEBUG_HIGH_ON) THEN
959
960 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
961 END IF;
962
963
964 -- Standard call to get message count and if count is 1, get message info.
965 FND_MSG_PUB.Count_And_Get
966 ( p_count => x_msg_count,
967 p_data => x_msg_data
968 );
969
970 EXCEPTION
971 WHEN FND_API.G_EXC_ERROR THEN
972 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
973 P_API_NAME => L_API_NAME
974 ,P_PKG_NAME => G_PKG_NAME
975 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
976 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
977 ,X_MSG_COUNT => X_MSG_COUNT
978 ,X_MSG_DATA => X_MSG_DATA
979 ,X_RETURN_STATUS => X_RETURN_STATUS);
980
981 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
982 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
983 P_API_NAME => L_API_NAME
984 ,P_PKG_NAME => G_PKG_NAME
985 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
986 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
987 ,X_MSG_COUNT => X_MSG_COUNT
988 ,X_MSG_DATA => X_MSG_DATA
989 ,X_RETURN_STATUS => X_RETURN_STATUS);
990
991 WHEN OTHERS THEN
992 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
993 P_API_NAME => L_API_NAME
994 ,P_PKG_NAME => G_PKG_NAME
995 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
996 ,P_SQLCODE => SQLCODE
997 ,P_SQLERRM => SQLERRM
998 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
999 ,X_MSG_COUNT => X_MSG_COUNT
1000 ,X_MSG_DATA => X_MSG_DATA
1001 ,X_RETURN_STATUS => X_RETURN_STATUS);
1002 End Delete_process_rule;
1003
1004
1005 -- Hint: Primary key needs to be returned.
1006 PROCEDURE Copy_process_rule(
1007 P_Api_Version_Number IN NUMBER,
1008 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1009 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
1010 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1011 P_Identity_Resource_Id IN NUMBER,
1012 P_PROCESS_RULE_Rec IN PV_RULE_RECTYPE_PUB.RULES_REC_TYPE
1013 := PV_RULE_RECTYPE_PUB.G_MISS_RULES_REC,
1014 X_PROCESS_RULE_ID OUT NOCOPY NUMBER,
1015 X_Return_Status OUT NOCOPY VARCHAR2,
1016 X_Msg_Count OUT NOCOPY NUMBER,
1017 X_Msg_Data OUT NOCOPY VARCHAR2
1018 )
1019
1020 IS
1021 l_api_name CONSTANT VARCHAR2(30) := 'Copy_process_rule';
1022 l_api_version_number CONSTANT NUMBER := 2.0;
1023 l_return_status_full VARCHAR2(1);
1024 l_access_flag VARCHAR2(1);
1025
1026 Cursor C_Get_parent_process_rules(pc_PROCESS_RULE_ID Number) IS
1027 Select RLSB.PROCESS_RULE_ID, RLSB.LAST_UPDATE_DATE, RLSB.LAST_UPDATED_BY, RLSB.CREATION_DATE, RLSB.CREATED_BY,
1028 RLSB.LAST_UPDATE_LOGIN, RLSB.OBJECT_VERSION_NUMBER, RLSB.REQUEST_ID, RLSB.PROGRAM_APPLICATION_ID, RLSB.PROGRAM_ID,
1029 RLSB.PROGRAM_UPDATE_DATE, PROCESS_RULE_NAME, PARENT_RULE_ID, PROCESS_TYPE , RANK, STATUS_CODE, START_DATE, END_DATE,
1030 ACTION, ACTION_VALUE, OWNER_RESOURCE_ID, CURRENCY_CODE, LANGUAGE, SOURCE_LANG ,DESCRIPTION, ATTRIBUTE_CATEGORY,
1031 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8, ATTRIBUTE9,
1032 ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14, ATTRIBUTE15
1033 From PV_PROCESS_RULES_B RLSB,PV_PROCESS_RULES_TL RLST
1034 where RLSB.process_rule_id = RLST.process_rule_id and
1035 (RLSB.parent_rule_id = pc_process_rule_id or RLSB.process_rule_id = pc_process_rule_id) and
1036 RLST.language = USERENV('LANG') order by parent_rule_id desc;
1037
1038 Cursor C_Get_enty_select_criteria(pc_PROCESS_RULE_ID Number) IS
1039 Select SELECTION_CRITERIA_ID, LAST_UPDATE_DATE, LAST_UPDATED_BY, CREATION_DATE, CREATED_BY, LAST_UPDATE_LOGIN,
1040 OBJECT_VERSION_NUMBER,REQUEST_ID,PROGRAM_APPLICATION_ID,PROGRAM_ID,PROGRAM_UPDATE_DATE,PROCESS_RULE_ID,
1041 ATTRIBUTE_ID, SELECTION_TYPE_CODE, OPERATOR, RANK, ATTRIBUTE_CATEGORY, ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3,
1042 ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12,
1043 ATTRIBUTE13, ATTRIBUTE14, ATTRIBUTE15
1044 From PV_ENTY_SELECT_CRITERIA
1045 Where process_rule_id = pc_PROCESS_RULE_ID;
1046
1047 Cursor C_Get_selected_attr_values(pc_SELECTION_CRITERIA_ID Number) IS
1048 Select ATTR_VALUE_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER,
1049 REQUEST_ID,PROGRAM_APPLICATION_ID,PROGRAM_ID,PROGRAM_UPDATE_DATE,SELECTION_CRITERIA_ID,ATTRIBUTE_VALUE,
1050 ATTRIBUTE_TO_VALUE,ATTRIBUTE_CATEGORY,ATTRIBUTE1,ATTRIBUTE2,ATTRIBUTE3,ATTRIBUTE4,ATTRIBUTE5,ATTRIBUTE6,
1051 ATTRIBUTE7,ATTRIBUTE8,ATTRIBUTE9,ATTRIBUTE10,ATTRIBUTE11,ATTRIBUTE12,ATTRIBUTE13,ATTRIBUTE14,ATTRIBUTE15,SCORE
1052 From PV_SELECTED_ATTR_VALUES
1053 Where SELECTION_CRITERIA_ID = pc_SELECTION_CRITERIA_ID;
1054
1055 Cursor C_Get_entity_attr_mappings(pc_PROCESS_RULE_ID Number) IS
1056 Select MAPPING_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER,
1057 REQUEST_ID,PROGRAM_APPLICATION_ID,PROGRAM_ID,PROGRAM_UPDATE_DATE,PROCESS_RULE_ID,SOURCE_ATTR_TYPE,
1058 SOURCE_ATTR_ID,TARGET_ATTR_TYPE,TARGET_ATTR_ID,OPERATOR,ATTRIBUTE_CATEGORY,ATTRIBUTE1,ATTRIBUTE2,
1059 ATTRIBUTE3,ATTRIBUTE4,ATTRIBUTE5,ATTRIBUTE6,ATTRIBUTE7,ATTRIBUTE8,ATTRIBUTE9,ATTRIBUTE10,ATTRIBUTE11,
1060 ATTRIBUTE12,ATTRIBUTE13,ATTRIBUTE14,ATTRIBUTE15
1061 From PV_ENTITY_ATTR_MAPPINGS
1062 Where process_rule_id = pc_PROCESS_RULE_ID;
1063
1064 Cursor C_Get_entity_routings(pc_PROCESS_RULE_ID Number) IS
1065 Select ENTITY_ROUTING_ID,LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,LAST_UPDATE_LOGIN,OBJECT_VERSION_NUMBER,
1066 REQUEST_ID,PROGRAM_APPLICATION_ID,PROGRAM_ID,PROGRAM_UPDATE_DATE,PROCESS_RULE_ID,DISTANCE_FROM_CUSTOMER,
1067 DISTANCE_UOM_CODE,MAX_NEAREST_PARTNER,ROUTING_TYPE,BYPASS_CM_OK_FLAG,CM_TIMEOUT,CM_TIMEOUT_UOM_CODE,PARTNER_TIMEOUT,
1068 PARTNER_TIMEOUT_UOM_CODE,UNMATCHED_INT_RESOURCE_ID,UNMATCHED_CALL_TAP_FLAG,ATTRIBUTE_CATEGORY,ATTRIBUTE1,
1069 ATTRIBUTE2,ATTRIBUTE3,ATTRIBUTE4,ATTRIBUTE5,ATTRIBUTE6,ATTRIBUTE7,ATTRIBUTE8,ATTRIBUTE9,ATTRIBUTE10,ATTRIBUTE11,
1070 ATTRIBUTE12,ATTRIBUTE13,ATTRIBUTE14,ATTRIBUTE15
1071 From PV_ENTITY_ROUTINGS
1072 Where process_rule_id = pc_PROCESS_RULE_ID;
1073
1074 --l_PROCESS_RULE_rec PV_RULE_RECTYPE_PUB.RULES_REC_TYPE;
1075 --l_ENTY_SELECT_CRITERIA_rec PV_RULE_RECTYPE_PUB.SELCRIT_REC_TYPE;
1076 --l_SELECT_ATTR_VALUES_rec PV_RULE_RECTYPE_PUB.SELATTVAL_REC_TYPE;
1077 --l_ENTITY_ATTR_MAPPINGS_rec PV_RULE_RECTYPE_PUB.ENTYATTMAP_REC_TYPE;
1078 --l_ENTITY_ROUTINGS_rec PV_RULE_RECTYPE_PUB.ENTYROUT_REC_TYPE;
1079 --l_api_version_number CONSTANT NUMBER := 2.0;
1080 --l_Init_Msg_List VARCHAR2(30) := FND_API.G_FALSE;
1081 --l_Commit VARCHAR2(30) := FND_API.G_FALSE;
1082 --l_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL;
1083 --L_API_NAME VARCHAR2(30) := 'PV_RULES_COPY_PUB';
1084 --l_PROCESS_RULE_ID NUMBER ;
1085
1086 l_Return_Status VARCHAR2(30);
1087 l_Msg_Count NUMBER;
1088 l_Msg_Data VARCHAR2(1000);
1089 l_copy_exists NUMBER := 0;
1090 l_rule_length NUMBER := 0;
1091 l_rule_suffix VARCHAR2(200);
1092 v_selection_criteria_id NUMBER;
1093 x_selection_criteria_id NUMBER;
1094 x_entity_routing_id NUMBER;
1095 x_mapping_id NUMBER;
1096 x_attr_value_id NUMBER;
1097 v_dummy NUMBER;
1098 l_parent_rule_id_tbl NUMBER_TABLE;
1099 l_parent_rule_id_index NUMBER :=1;
1100
1101 BEGIN
1102 -- Standard Start of API savepoint
1103 SAVEPOINT COPY_PROCESS_RULE_PVT;
1104
1105 -- Standard call to check for call compatibility.
1106 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1107 p_api_version_number,
1108 l_api_name,
1109 G_PKG_NAME)
1110 THEN
1111 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1112 END IF;
1113
1114
1115 -- Initialize message list if p_init_msg_list is set to TRUE.
1116 IF FND_API.to_Boolean( p_init_msg_list )
1117 THEN
1118 FND_MSG_PUB.initialize;
1119 END IF;
1120
1121
1122 -- Debug Message
1123 IF (AS_DEBUG_HIGH_ON) THEN
1124
1125 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
1126 END IF;
1127
1128
1129 -- Initialize API return status to SUCCESS
1130 x_return_status := FND_API.G_RET_STS_SUCCESS;
1131
1132 --
1133 -- API body
1134 --
1135 -- ******************************************************************
1136 -- Validate Environment
1137 -- ******************************************************************
1138 IF FND_GLOBAL.User_Id IS NULL
1139 THEN
1140 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1141 THEN
1142 FND_MESSAGE.Set_Name('PV', 'UT_CANNOT_GET_PROFILE_VALUE');
1143 FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
1144 FND_MSG_PUB.ADD;
1145 END IF;
1146 RAISE FND_API.G_EXC_ERROR;
1147 END IF;
1148
1149 -- Debug message
1150 IF (AS_DEBUG_HIGH_ON) THEN
1151
1152 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_process_rule');
1153 END IF;
1154
1155 -- Invoke validation procedures
1156 Validate_process_rule(
1157 p_init_msg_list => FND_API.G_FALSE,
1158 p_validation_level => p_validation_level,
1159 p_validation_mode => AS_UTILITY_PVT.G_CREATE,
1160 P_PROCESS_RULE_Rec => P_PROCESS_RULE_Rec,
1161 x_return_status => x_return_status,
1162 x_msg_count => x_msg_count,
1163 x_msg_data => x_msg_data);
1164
1165 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1166 RAISE FND_API.G_EXC_ERROR;
1167 END IF;
1168
1169
1170 FOR V_Get_parent_process_rules IN C_Get_parent_process_rules(P_PROCESS_RULE_Rec.Process_Rule_Id) LOOP
1171 if C_Get_parent_process_rules%found then
1172
1173 if l_parent_rule_id_tbl.count > 0 then
1174 V_Get_parent_process_rules.parent_rule_id := l_parent_rule_id_tbl(2);
1175 V_Get_parent_process_rules.last_update_date := null;
1176 V_Get_parent_process_rules.last_updated_by := null;
1177 V_Get_parent_process_rules.creation_date := null;
1178 V_Get_parent_process_rules.created_by := null;
1179 V_Get_parent_process_rules.last_update_login := null;
1180 V_Get_parent_process_rules.object_version_number := null;
1181 else
1182 V_Get_parent_process_rules.process_rule_name := P_PROCESS_RULE_Rec.process_rule_name;
1183 V_Get_parent_process_rules.description := P_PROCESS_RULE_Rec.description;
1184 V_Get_parent_process_rules.status_code := P_PROCESS_RULE_Rec.status_code;
1185 V_Get_parent_process_rules.start_date := P_PROCESS_RULE_Rec.start_date;
1186 V_Get_parent_process_rules.end_date := P_PROCESS_RULE_Rec.end_date;
1187 V_Get_parent_process_rules.rank := P_PROCESS_RULE_Rec.rank;
1188 V_Get_parent_process_rules.owner_resource_id := P_PROCESS_RULE_Rec.owner_resource_id;
1189 V_Get_parent_process_rules.currency_code := P_PROCESS_RULE_Rec.currency_code;
1190
1191 V_Get_parent_process_rules.last_update_date := null;
1192 V_Get_parent_process_rules.last_updated_by := null;
1193 V_Get_parent_process_rules.creation_date := null;
1194 V_Get_parent_process_rules.created_by := null;
1195 V_Get_parent_process_rules.last_update_login := null;
1196 V_Get_parent_process_rules.object_version_number := null;
1197 end if;
1198
1199 PV_PROCESS_RULE_PVT.Create_process_rule(p_api_version_number,p_Init_Msg_List,p_Commit,p_validation_level,
1200 P_Identity_Resource_Id,V_Get_parent_process_rules,
1201 x_PROCESS_RULE_ID,x_Return_Status,x_Msg_Count,x_Msg_Data);
1202
1203 l_parent_rule_id_index := l_parent_rule_id_index+1;
1204 l_parent_rule_id_tbl(l_parent_rule_id_index) := x_PROCESS_RULE_ID;
1205 V_Get_parent_process_rules.parent_rule_id := l_parent_rule_id_tbl(2);
1206
1207
1208 if l_parent_rule_id_index > 2 then
1209
1210 FOR V_Get_enty_select_criteria IN C_Get_enty_select_criteria(V_Get_parent_process_rules.process_rule_id) LOOP
1211 if C_Get_enty_select_criteria%found then
1212 V_Get_enty_select_criteria.process_rule_id := x_PROCESS_RULE_ID;
1213 v_selection_criteria_id := V_Get_enty_select_criteria.SELECTION_CRITERIA_ID;
1214 V_Get_enty_select_criteria.SELECTION_CRITERIA_ID := null;
1215 PV_SELCRIT_PVT.Create_selcrit(p_api_version_number,p_Init_Msg_List,p_Commit,p_validation_level,
1216 P_Identity_Resource_Id,V_Get_enty_select_criteria,x_selection_criteria_id,x_Return_Status,
1217 x_Msg_Count,x_Msg_Data);
1218
1219 FOR V_Get_selected_attr_values IN C_Get_selected_attr_values(v_selection_criteria_id) LOOP
1220 if C_Get_selected_attr_values%found then
1221 V_Get_selected_attr_values.SELECTION_CRITERIA_ID := x_selection_criteria_id;
1222 V_Get_selected_attr_values.ATTR_VALUE_ID := null;
1223 PV_SELATTVAL_PVT.Create_selattval(p_api_version_number,
1224 p_Init_Msg_List,
1225 p_Commit,
1226 p_validation_level,
1227 P_Identity_Resource_Id,
1228 V_Get_selected_attr_values,
1229 x_attr_value_id,
1230 x_Return_Status,
1231 x_Msg_Count,
1232 x_Msg_Data);
1233
1234 end if;
1235 END LOOP;
1236
1237
1238 end if;
1239 END LOOP;
1240 x_PROCESS_RULE_ID := l_parent_rule_id_tbl(2);
1241
1242 else
1243
1244 FOR V_Get_enty_select_criteria IN C_Get_enty_select_criteria(P_PROCESS_RULE_Rec.Process_Rule_Id) LOOP
1245 if C_Get_enty_select_criteria%found then
1246 V_Get_enty_select_criteria.process_rule_id := x_PROCESS_RULE_ID;
1247 v_selection_criteria_id := V_Get_enty_select_criteria.SELECTION_CRITERIA_ID;
1248 V_Get_enty_select_criteria.SELECTION_CRITERIA_ID := null;
1249 PV_SELCRIT_PVT.Create_selcrit(p_api_version_number,p_Init_Msg_List,p_Commit,p_validation_level,
1250 P_Identity_Resource_Id,V_Get_enty_select_criteria,x_selection_criteria_id,x_Return_Status,
1251 x_Msg_Count,x_Msg_Data);
1252
1253 FOR V_Get_selected_attr_values IN C_Get_selected_attr_values(v_selection_criteria_id) LOOP
1254 if C_Get_selected_attr_values%found then
1255 V_Get_selected_attr_values.SELECTION_CRITERIA_ID := x_selection_criteria_id;
1256 V_Get_selected_attr_values.ATTR_VALUE_ID := null;
1257 PV_SELATTVAL_PVT.Create_selattval(p_api_version_number,p_Init_Msg_List,p_Commit,p_validation_level,
1258 P_Identity_Resource_Id,V_Get_selected_attr_values,x_attr_value_id,x_Return_Status,
1259 x_Msg_Count,x_Msg_Data);
1260
1261 end if;
1262 END LOOP;
1263
1264 end if;
1265 END LOOP;
1266
1267 end if;
1268
1269 FOR V_Get_entity_attr_mappings IN C_Get_entity_attr_mappings(P_PROCESS_RULE_Rec.Process_Rule_Id) LOOP
1270 if C_Get_entity_attr_mappings%found then
1271 V_Get_entity_attr_mappings.process_rule_id := x_PROCESS_RULE_ID;
1272 V_Get_entity_attr_mappings.MAPPING_ID := null;
1273 PV_ENTYATTMAP_PVT.Create_entyattmap(p_api_version_number,p_Init_Msg_List,p_Commit,p_validation_level,
1274 P_Identity_Resource_Id,V_Get_entity_attr_mappings,x_mapping_id,x_Return_Status,
1275 x_Msg_Count,x_Msg_Data);
1276 end if;
1277 END LOOP;
1278
1279 FOR V_Get_entity_routings IN C_Get_entity_routings(P_PROCESS_RULE_Rec.Process_Rule_Id) LOOP
1280 if C_Get_entity_routings%found then
1281 V_Get_entity_routings.process_rule_id := x_PROCESS_RULE_ID;
1282 V_Get_entity_routings.ENTITY_ROUTING_ID := null;
1283 PV_ENTYROUT_PVT.Create_entyrout(p_api_version_number,p_Init_Msg_List,p_Commit,p_validation_level,
1284 P_Identity_Resource_Id,V_Get_entity_routings,x_entity_routing_id,x_Return_Status,
1285 x_Msg_Count,x_Msg_Data);
1286 end if;
1287 END LOOP;
1288
1289 end if;
1290 END LOOP;
1291
1292 --
1293 -- End of API body
1294 --
1295
1296 -- Standard check for p_commit
1297 IF FND_API.to_Boolean( p_commit )
1298 THEN
1299 COMMIT WORK;
1300 END IF;
1301
1302
1303 -- Debug Message
1304 IF (AS_DEBUG_HIGH_ON) THEN
1305
1306 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
1307 END IF;
1308
1309
1310 -- Standard call to get message count and if count is 1, get message info.
1311 FND_MSG_PUB.Count_And_Get
1312 ( p_count => x_msg_count,
1313 p_data => x_msg_data
1314 );
1315
1316 EXCEPTION
1317 WHEN FND_API.G_EXC_ERROR THEN
1318 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1319 P_API_NAME => L_API_NAME
1320 ,P_PKG_NAME => G_PKG_NAME
1321 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1322 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1323 ,X_MSG_COUNT => X_MSG_COUNT
1324 ,X_MSG_DATA => X_MSG_DATA
1325 ,X_RETURN_STATUS => X_RETURN_STATUS);
1326
1327 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1328 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1329 P_API_NAME => L_API_NAME
1330 ,P_PKG_NAME => G_PKG_NAME
1331 ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1332 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1333 ,X_MSG_COUNT => X_MSG_COUNT
1334 ,X_MSG_DATA => X_MSG_DATA
1335 ,X_RETURN_STATUS => X_RETURN_STATUS);
1336
1337 WHEN OTHERS THEN
1338 AS_UTILITY_PVT.HANDLE_EXCEPTIONS(
1339 P_API_NAME => L_API_NAME
1340 ,P_PKG_NAME => G_PKG_NAME
1341 ,P_EXCEPTION_LEVEL => AS_UTILITY_PVT.G_EXC_OTHERS
1342 ,P_SQLCODE => SQLCODE
1343 ,P_SQLERRM => SQLERRM
1344 ,P_PACKAGE_TYPE => AS_UTILITY_PVT.G_PVT
1345 ,X_MSG_COUNT => X_MSG_COUNT
1346 ,X_MSG_DATA => X_MSG_DATA
1347 ,X_RETURN_STATUS => X_RETURN_STATUS);
1348 End Copy_process_rule;
1349
1350 -- Item-level validation procedures
1351 PROCEDURE Validate_PROCESS_RULE_ID (
1352 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1353 P_Validation_mode IN VARCHAR2,
1354 P_PROCESS_RULE_ID IN NUMBER,
1355 X_Return_Status OUT NOCOPY VARCHAR2,
1356 X_Msg_Count OUT NOCOPY NUMBER,
1357 X_Msg_Data OUT NOCOPY VARCHAR2
1358 )
1359 IS
1360 CURSOR C_Process_Rule_Id_Exists (c_process_rule_id NUMBER) IS
1361 SELECT 'X'
1362 FROM pv_process_rules_b
1363 WHERE process_rule_id = c_process_rule_id;
1364
1365 l_val VARCHAR2(1);
1366
1367 BEGIN
1368
1369 -- Initialize message list if p_init_msg_list is set to TRUE.
1370 IF FND_API.to_Boolean( p_init_msg_list )
1371 THEN
1372 FND_MSG_PUB.initialize;
1373 END IF;
1374
1375
1376 -- Initialize API return status to SUCCESS
1377 x_return_status := FND_API.G_RET_STS_SUCCESS;
1378
1379 IF(p_validation_mode = AS_UTILITY_PVT.G_CREATE)
1380 THEN
1381 IF (p_process_rule_id IS NOT NULL) AND
1382 (p_process_rule_id <> FND_API.G_MISS_NUM)
1383 THEN
1384 OPEN C_Process_Rule_Id_Exists (p_process_rule_id);
1385 FETCH C_Process_Rule_Id_Exists into l_val;
1386
1387 IF C_Process_Rule_Id_Exists%NOTFOUND
1388 THEN
1389 AS_UTILITY_PVT.Set_Message(
1390 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1391 p_msg_name => 'API_INVALID_ID',
1392 p_token1 => 'COLUMN',
1393 p_token1_value => 'PROCESS_RULE_ID',
1394 p_token2 => 'VALUE',
1395 p_token2_value => p_process_rule_id);
1396
1397 x_return_status := FND_API.G_RET_STS_ERROR;
1398 END IF;
1399 CLOSE C_Process_Rule_Id_Exists ;
1400 END IF;
1401
1402 ELSIF(p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1403 THEN
1404 -- validate NOT NULL column
1405 IF (p_process_rule_id IS NULL) OR
1406 (p_process_rule_id = FND_API.G_MISS_NUM)
1407 THEN
1408 AS_UTILITY_PVT.Set_Message(
1409 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1410 p_msg_name => 'API_MISSING_ID',
1411 p_token1 => 'COLUMN',
1412 p_token1_value => 'PROCESS_RULE_ID');
1413
1414 x_return_status := FND_API.G_RET_STS_ERROR;
1415 ELSE
1416 OPEN C_Process_Rule_Id_Exists (p_process_rule_id);
1417 FETCH C_Process_Rule_Id_Exists into l_val;
1418
1419 IF C_Process_Rule_Id_Exists%NOTFOUND
1420 THEN
1421 AS_UTILITY_PVT.Set_Message(
1422 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1423 p_msg_name => 'API_INVALID_ID',
1424 p_token1 => 'COLUMN',
1425 p_token1_value => 'PROCESS_RULE_ID',
1426 p_token2 => 'VALUE',
1427 p_token2_value => p_process_rule_id);
1428
1429 x_return_status := FND_API.G_RET_STS_ERROR;
1430 END IF;
1431
1432 CLOSE C_Process_Rule_Id_Exists;
1433 END IF;
1434 END IF;
1435
1436 -- Standard call to get message count and if count is 1, get message info.
1437 FND_MSG_PUB.Count_And_Get
1438 ( p_count => x_msg_count,
1439 p_data => x_msg_data
1440 );
1441
1442 END Validate_PROCESS_RULE_ID;
1443
1444
1445 PROCEDURE Validate_OWNER_RESOURCE_ID (
1446 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1447 P_Validation_mode IN VARCHAR2,
1448 P_OWNER_RESOURCE_ID IN NUMBER,
1449 X_Return_Status OUT NOCOPY VARCHAR2,
1450 X_Msg_Count OUT NOCOPY NUMBER,
1451 X_Msg_Data OUT NOCOPY VARCHAR2
1452 )
1453 IS
1454 Cursor C_Check_Resource_Id (C_Resource_Id NUMBER) IS
1455 SELECT 'X'
1456 FROM jtf_rs_resource_extns res
1457 WHERE res.resource_id = c_resource_id;
1458
1459 l_val VARCHAR2(1);
1460 BEGIN
1461
1462 -- Initialize message list if p_init_msg_list is set to TRUE.
1463 IF FND_API.to_Boolean( p_init_msg_list )
1464 THEN
1465 FND_MSG_PUB.initialize;
1466 END IF;
1467
1468
1469 -- Initialize API return status to SUCCESS
1470 x_return_status := FND_API.G_RET_STS_SUCCESS;
1471
1472 -- Validate RESOURCE_ID
1473 IF (p_owner_resource_id IS NOT NULL
1474 AND p_owner_resource_id <> FND_API.G_MISS_NUM)
1475 THEN
1476 OPEN C_Check_Resource_Id (p_owner_resource_id);
1477 FETCH C_Check_Resource_Id INTO l_val;
1478 IF (C_Check_Resource_Id%NOTFOUND)
1479 THEN
1480 AS_UTILITY_PVT.Set_Message(
1481 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1482 p_msg_name => 'API_INVALID_ID',
1483 p_token1 => 'COLUMN',
1484 p_token1_value => 'OWNER_RESOURCE_ID',
1485 p_token2 => 'VALUE',
1486 p_token2_value => p_OWNER_RESOURCE_ID );
1487
1488 x_return_status := FND_API.G_RET_STS_ERROR;
1489 END IF;
1490 CLOSE C_Check_Resource_Id;
1491 END IF;
1492
1493 -- Standard call to get message count and if count is 1, get message info.
1494 FND_MSG_PUB.Count_And_Get
1495 ( p_count => x_msg_count,
1496 p_data => x_msg_data
1497 );
1498
1499 END Validate_OWNER_RESOURCE_ID;
1500
1501
1502 PROCEDURE Validate_CURRENCY_CODE (
1503 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1504 P_Validation_mode IN VARCHAR2,
1505 P_CURRENCY_CODE IN VARCHAR2,
1506 X_Return_Status OUT NOCOPY VARCHAR2,
1507 X_Msg_Count OUT NOCOPY NUMBER,
1508 X_Msg_Data OUT NOCOPY VARCHAR2
1509 )
1510 IS
1511 CURSOR C_Currency_Exists (C_Currency_Code VARCHAR2) IS
1512 SELECT 'X'
1513 FROM fnd_currencies
1514 WHERE currency_code = C_Currency_Code
1515 and nvl(start_date_active, sysdate) <= sysdate
1516 and nvl(end_date_active, sysdate) >= sysdate
1517 and enabled_flag = 'Y';
1518
1519 l_val VARCHAR2(1);
1520 BEGIN
1521
1522 -- Initialize message list if p_init_msg_list is set to TRUE.
1523 IF FND_API.to_Boolean( p_init_msg_list )
1524 THEN
1525 FND_MSG_PUB.initialize;
1526 END IF;
1527
1528 -- Initialize API return status to SUCCESS
1529 x_return_status := FND_API.G_RET_STS_SUCCESS;
1530
1531 -- Validate Currency Code
1532 IF (p_currency_code is NOT NULL
1533 AND p_currency_code <> FND_API.G_MISS_CHAR)
1534 THEN
1535 OPEN C_Currency_Exists ( p_currency_code );
1536 FETCH C_Currency_Exists into l_val;
1537 IF C_Currency_Exists%NOTFOUND THEN
1538 AS_UTILITY_PVT.Set_Message(
1539 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1540 p_msg_name => 'API_INVALID_ID',
1541 p_token1 => 'COLUMN',
1542 p_token1_value => 'CURRENCY',
1543 p_token2 => 'VALUE',
1544 p_token2_value => p_CURRENCY_CODE );
1545
1546 x_return_status := FND_API.G_RET_STS_ERROR;
1547 END IF;
1548 CLOSE C_Currency_Exists;
1549 END IF;
1550
1551 -- Standard call to get message count and if count is 1, get message info.
1552 FND_MSG_PUB.Count_And_Get
1553 ( p_count => x_msg_count,
1554 p_data => x_msg_data
1555 );
1556
1557 END Validate_CURRENCY_CODE;
1558
1559 PROCEDURE Validate_RANK (
1560 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1561 P_Validation_mode IN VARCHAR2,
1562 P_Parent_Rule_ID IN NUMBER,
1563 P_Child_Rule_ID IN NUMBER,
1564 P_RANK IN NUMBER,
1565 X_Return_Status OUT NOCOPY VARCHAR2,
1566 X_Msg_Count OUT NOCOPY NUMBER,
1567 X_Msg_Data OUT NOCOPY VARCHAR2
1568 )
1569 IS
1570 -- pklin
1571 cursor lc_chk_criterion_dups (pc_parent_rule_id number,
1572 pc_child_rule_id number,
1573 pc_rank number) is
1574 SELECT child.rank
1575 FROM pv_process_rules_vl parent,
1576 pv_process_rules_vl child
1577 WHERE parent.process_rule_id = pc_parent_rule_id AND
1578 parent.process_rule_id = child.parent_rule_id AND
1579 child.process_rule_id <> NVL(pc_child_rule_id, 0) AND
1580 child.rank = pc_rank;
1581
1582 l_rank NUMBER;
1583
1584 BEGIN
1585
1586 -- Initialize message list if p_init_msg_list is set to TRUE.
1587 IF FND_API.to_Boolean( p_init_msg_list )
1588 THEN
1589 FND_MSG_PUB.initialize;
1590 END IF;
1591
1592
1593 -- Initialize API return status to SUCCESS
1594 x_return_status := FND_API.G_RET_STS_SUCCESS;
1595
1596 IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE OR
1597 p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1598 THEN
1599 IF (p_rank IS NULL) OR (p_rank = FND_API.G_MISS_NUM) THEN
1600 AS_UTILITY_PVT.Set_Message(
1601 p_msg_level => FND_MSG_PUB.G_MSG_LVL_ERROR,
1602 p_msg_name => 'API_MISSING_RANK',
1603 p_token1 => 'RANK',
1604 p_token1_value => p_rank);
1605
1606 x_return_status := FND_API.G_RET_STS_ERROR;
1607
1608 -- -------------------------------------------------------------------------
1609 -- Check for the duplicate criteria, which are criteria with the same rank
1610 -- (Order of Evaluation).
1611 -- -------------------------------------------------------------------------
1612 ELSE
1613 OPEN lc_chk_criterion_dups(P_Parent_Rule_ID, P_Child_Rule_ID, P_Rank);
1614 Fetch lc_chk_criterion_dups into l_rank;
1615
1616 IF (lc_chk_criterion_dups%FOUND) THEN
1617 FND_MESSAGE.Set_Name('PV', 'PV_DUPLICATE_CRITERION');
1618 FND_MSG_PUB.Add;
1619
1620 CLOSE lc_chk_criterion_dups;
1621 RAISE FND_API.G_EXC_ERROR;
1622 END IF;
1623
1624 -- Debug Message
1625 IF (AS_DEBUG_HIGH_ON) THEN
1626
1627 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
1628 END IF;
1629 CLOSE lc_chk_criterion_dups;
1630 END IF;
1631 END IF;
1632
1633 -- Standard call to get message count and if count is 1, get message info.
1634 FND_MSG_PUB.Count_And_Get
1635 ( p_count => x_msg_count,
1636 p_data => x_msg_data
1637 );
1638
1639 END Validate_Rank;
1640
1641
1642 PROCEDURE Validate_enddate(
1643 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1644 P_Validation_mode IN VARCHAR2,
1645 P_START_DATE IN DATE,
1646 P_END_DATE IN DATE,
1647 X_Return_Status OUT NOCOPY VARCHAR2,
1648 X_Msg_Count OUT NOCOPY NUMBER,
1649 X_Msg_Data OUT NOCOPY VARCHAR2
1650 )
1651 IS
1652 l_api_name CONSTANT VARCHAR2(30) := 'Validate_end_date';
1653 BEGIN
1654 -- Initialize message list if p_init_msg_list is set to TRUE.
1655 IF FND_API.to_Boolean( p_init_msg_list )
1656 THEN
1657 FND_MSG_PUB.initialize;
1658 END IF;
1659
1660 -- Initialize API return status to SUCCESS
1661 x_return_status := FND_API.G_RET_STS_SUCCESS;
1662
1663 IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE OR
1664 p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1665 THEN
1666 IF (P_START_DATE is not null and P_END_DATE is not null)
1667 THEN
1668 IF P_END_DATE < P_START_DATE
1669 THEN
1670 FND_MESSAGE.Set_Name('PV', 'PV_END_DATE_GREATER_START_DATE');
1671 FND_MSG_PUB.Add;
1672 RAISE FND_API.G_EXC_ERROR;
1673 END IF;
1674 END IF;
1675 -- Debug Message
1676 IF (AS_DEBUG_HIGH_ON) THEN
1677 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
1678 END IF;
1679 END IF;
1680
1681 -- Standard call to get message count and if count is 1, get message info.
1682 FND_MSG_PUB.Count_And_Get
1683 ( p_count => x_msg_count,
1684 p_data => x_msg_data
1685 );
1686 END Validate_enddate;
1687
1688 PROCEDURE Validate_startdate(
1689 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1690 P_Validation_mode IN VARCHAR2,
1691 P_Parent_Rule_ID IN NUMBER,
1692 P_START_DATE IN DATE,
1693 X_Return_Status OUT NOCOPY VARCHAR2,
1694 X_Msg_Count OUT NOCOPY NUMBER,
1695 X_Msg_Data OUT NOCOPY VARCHAR2
1696 )
1697 IS
1698 l_api_name CONSTANT VARCHAR2(30) := 'Validate_start_date';
1699
1700 BEGIN
1701 -- Initialize message list if p_init_msg_list is set to TRUE.
1702 IF FND_API.to_Boolean( p_init_msg_list )
1703 THEN
1704 FND_MSG_PUB.initialize;
1705 END IF;
1706
1707 -- Initialize API return status to SUCCESS
1708 x_return_status := FND_API.G_RET_STS_SUCCESS;
1709
1710 IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE OR p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1711 THEN
1712 IF (P_PARENT_RULE_ID is null or P_PARENT_RULE_ID = FND_API.G_MISS_NUM) then
1713 IF (P_START_DATE is null or P_START_DATE = FND_API.G_MISS_DATE) then
1714 FND_MESSAGE.Set_Name('PV', 'PV_STARTDATE_NOTNULL');
1715 FND_MSG_PUB.Add;
1716 RAISE FND_API.G_EXC_ERROR;
1717 END IF;
1718 END IF;
1719 IF (AS_DEBUG_HIGH_ON) THEN
1720 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
1721 END IF;
1722 END IF;
1723 -- Standard call to get message count and if count is 1, get message info.
1724 FND_MSG_PUB.Count_And_Get
1725 ( p_count => x_msg_count,
1726 p_data => x_msg_data
1727 );
1728 END Validate_startdate;
1729
1730 -- ------------------------------------------------------------------------------
1731 -- Validate_status
1732 -- ------------------------------------------------------------------------------
1733 PROCEDURE Validate_status(
1734 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1735 P_Validation_mode IN VARCHAR2,
1736 P_Parent_Rule_ID IN NUMBER,
1737 P_STATUS IN VARCHAR2,
1738 X_Return_Status OUT NOCOPY VARCHAR2,
1739 X_Msg_Count OUT NOCOPY NUMBER,
1740 X_Msg_Data OUT NOCOPY VARCHAR2
1741 )
1742 IS
1743 l_api_name CONSTANT VARCHAR2(30) := 'Validate_status';
1744 l_previous_status VARCHAR2(30);
1745 l_result VARCHAR2(1);
1746
1747 CURSOR lc_check_rule_reference IS
1748 SELECT 'x' result
1749 FROM fnd_profile_options a,
1750 fnd_profile_option_values b
1751 WHERE a.profile_option_id = b.profile_option_id AND
1752 a.profile_option_name = 'PV_AUTO_MATCHING_RULE' AND
1753 b.application_id = 691 AND
1754 b.profile_option_value = TO_CHAR(p_parent_rule_id);
1755
1756 BEGIN
1757
1758 -- Initialize message list if p_init_msg_list is set to TRUE.
1759 IF FND_API.to_Boolean( p_init_msg_list )
1760 THEN
1761 FND_MSG_PUB.initialize;
1762 END IF;
1763
1764 -- Initialize API return status to SUCCESS
1765 x_return_status := FND_API.G_RET_STS_SUCCESS;
1766
1767 IF (p_validation_mode = AS_UTILITY_PVT.G_CREATE OR p_validation_mode = AS_UTILITY_PVT.G_UPDATE)
1768 THEN
1769 IF (P_PARENT_RULE_ID is null or P_PARENT_RULE_ID = FND_API.G_MISS_NUM) then
1770 IF (P_STATUS is null or P_STATUS = FND_API.G_MISS_CHAR) then
1771 FND_MESSAGE.Set_Name('PV', 'PV_STATUS_NOTNULL');
1772 FND_MSG_PUB.Add;
1773 RAISE FND_API.G_EXC_ERROR;
1774 END IF;
1775 END IF;
1776 IF (AS_DEBUG_HIGH_ON) THEN
1777 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
1778 END IF;
1779 END IF;
1780
1781 -- ---------------------------------------------------------------------
1782 -- Status check for LEAD_MONITOR rules. This is checked only in the case
1783 -- of an update.
1784 -- The requirements of LEAD_MONITOR rules are such that when the status
1785 -- of the rule is 'ACTIVE', nothing on the html page is updatable.
1786 -- ---------------------------------------------------------------------
1787 IF (G_PROCESS_TYPE = 'LEAD_MONITOR' AND G_ACTION = 'UPDATE' AND
1788 p_status = 'ACTIVE') THEN
1789 -- --------------------------------------------------------------
1790 -- Check the database for the "before" image. We need to compare
1791 -- the before image to the after image.
1792 -- --------------------------------------------------------------
1793 FOR x IN (SELECT status_code FROM pv_process_rules_b
1794 WHERE process_rule_id = p_parent_rule_id)
1795 LOOP
1796 l_previous_status := x.status_code;
1797 END LOOP;
1798
1799 IF (l_previous_status = 'ACTIVE') THEN
1800 FND_MESSAGE.Set_Name('PV', 'PV_MONITOR_RULE_ACTIVE');
1801 FND_MSG_PUB.Add;
1802 RAISE FND_API.G_EXC_ERROR;
1803 END IF;
1804
1805 ELSIF (G_PROCESS_TYPE = 'PARTNER_MATCHING' AND G_ACTION = 'UPDATE' AND
1806 p_status <> 'ACTIVE')
1807 THEN
1808 FOR x IN lc_check_rule_reference LOOP
1809 l_result := x.result;
1810 END LOOP;
1811
1812 IF l_result IS NOT NULL THEN
1813 FND_MESSAGE.Set_Name('PV', 'PV_RULE_REF_BY_PROFILE_STATUS');
1814 FND_MSG_PUB.Add;
1815 RAISE FND_API.G_EXC_ERROR;
1816 END IF;
1817 END IF;
1818
1819 -- Standard call to get message count and if count is 1, get message info.
1820 FND_MSG_PUB.Count_And_Get
1821 ( p_count => x_msg_count,
1822 p_data => x_msg_data
1823 );
1824 END Validate_status;
1825
1826
1827
1828 PROCEDURE Validate_process_rule(
1829 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1830 P_Validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1831 P_Validation_mode IN VARCHAR2,
1832 P_PROCESS_RULE_Rec IN PV_RULE_RECTYPE_PUB.RULES_REC_TYPE,
1833 X_Return_Status OUT NOCOPY VARCHAR2,
1834 X_Msg_Count OUT NOCOPY NUMBER,
1835 X_Msg_Data OUT NOCOPY VARCHAR2
1836 )
1837 IS
1838 l_api_name CONSTANT VARCHAR2(30) := 'Validate_process_rule';
1839 BEGIN
1840
1841 -- Debug Message
1842 IF (AS_DEBUG_HIGH_ON) THEN
1843
1844 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
1845 END IF;
1846
1847
1848 -- Initialize API return status to SUCCESS
1849 x_return_status := FND_API.G_RET_STS_SUCCESS;
1850
1851 IF (p_validation_level >= AS_UTILITY_PUB.G_VALID_LEVEL_ITEM) THEN
1852 -- Hint: We provide validation procedure for every column. Developer should delete
1853 -- unnecessary validation procedures.
1854 Validate_PROCESS_RULE_ID(
1855 p_init_msg_list => FND_API.G_FALSE,
1856 p_validation_mode => p_validation_mode,
1857 p_PROCESS_RULE_ID => P_PROCESS_RULE_Rec.PROCESS_RULE_ID,
1858 x_return_status => x_return_status,
1859 x_msg_count => x_msg_count,
1860 x_msg_data => x_msg_data);
1861 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1862 raise FND_API.G_EXC_ERROR;
1863 END IF;
1864
1865 PV_COMMON_CHECKS_PVT.Validate_OBJECT_VERSION_NUMBER(
1866 p_init_msg_list => FND_API.G_FALSE,
1867 p_validation_mode => p_validation_mode,
1868 p_OBJECT_VERSION_NUMBER => P_PROCESS_RULE_Rec.OBJECT_VERSION_NUMBER,
1869 x_return_status => x_return_status,
1870 x_msg_count => x_msg_count,
1871 x_msg_data => x_msg_data);
1872 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1873 raise FND_API.G_EXC_ERROR;
1874 END IF;
1875
1876 PV_COMMON_CHECKS_PVT.Validate_Lookup(
1877 p_init_msg_list => FND_API.G_FALSE,
1878 p_validation_mode => p_validation_mode,
1879 p_TABLE_NAME => 'PV_PROCESS_RULES_B',
1880 p_COLUMN_NAME => 'PROCESS_TYPE',
1881 p_LOOKUP_TYPE => 'PV_PROCESS_TYPE',
1882 p_LOOKUP_CODE => P_PROCESS_RULE_Rec.PROCESS_TYPE,
1883 x_return_status => x_return_status,
1884 x_msg_count => x_msg_count,
1885 x_msg_data => x_msg_data);
1886 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1887 raise FND_API.G_EXC_ERROR;
1888 END IF;
1889
1890 if p_PROCESS_RULE_Rec.STATUS_CODE is NOT NULL and
1891 p_PROCESS_RULE_Rec.STATUS_CODE <> FND_API.G_MISS_CHAR then
1892
1893 PV_COMMON_CHECKS_PVT.Validate_Lookup(
1894 p_init_msg_list => FND_API.G_FALSE,
1895 p_validation_mode => p_validation_mode,
1896 p_TABLE_NAME => 'PV_PROCESS_RULES_B',
1897 p_COLUMN_NAME => 'STATUS_CODE',
1898 p_LOOKUP_TYPE => 'PV_RULE_STATUS_CODE',
1899 p_LOOKUP_CODE => P_PROCESS_RULE_Rec.STATUS_CODE,
1900 x_return_status => x_return_status,
1901 x_msg_count => x_msg_count,
1902 x_msg_data => x_msg_data);
1903 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1904 raise FND_API.G_EXC_ERROR;
1905 END IF;
1906
1907 end if;
1908
1909 Validate_OWNER_RESOURCE_ID(
1910 p_init_msg_list => FND_API.G_FALSE,
1911 p_validation_mode => p_validation_mode,
1912 p_OWNER_RESOURCE_ID => P_PROCESS_RULE_Rec.OWNER_RESOURCE_ID,
1913 x_return_status => x_return_status,
1914 x_msg_count => x_msg_count,
1915 x_msg_data => x_msg_data);
1916 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1917 raise FND_API.G_EXC_ERROR;
1918 END IF;
1919
1920 Validate_CURRENCY_CODE(
1921 p_init_msg_list => FND_API.G_FALSE,
1922 p_validation_mode => p_validation_mode,
1923 p_CURRENCY_CODE => P_PROCESS_RULE_Rec.CURRENCY_CODE,
1924 x_return_status => x_return_status,
1925 x_msg_count => x_msg_count,
1926 x_msg_data => x_msg_data);
1927 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1928 raise FND_API.G_EXC_ERROR;
1929 END IF;
1930
1931 /*
1932 Validate_RANK(
1933 p_init_msg_list => FND_API.G_FALSE,
1934 p_validation_mode => p_validation_mode,
1935 P_Parent_Rule_ID => p_PROCESS_RULE_rec.PARENT_RULE_ID,
1936 P_Child_Rule_ID => p_CHILD_RULE_ID,
1937 p_RANK => P_PROCESS_RULE_Rec.RANK,
1938 x_return_status => x_return_status,
1939 x_msg_count => x_msg_count,
1940 x_msg_data => x_msg_data);
1941
1942 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1943 raise FND_API.G_EXC_ERROR;
1944 END IF;
1945 */
1946 END IF;
1947
1948 -- Debug Message
1949 IF (AS_DEBUG_HIGH_ON) THEN
1950
1951 AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
1952 END IF;
1953
1954 END Validate_process_rule;
1955
1956 End PV_PROCESS_RULE_PVT;