[Home] [Help]
PACKAGE BODY: APPS.CN_RULESET_PUB
Source
1 PACKAGE BODY CN_Ruleset_PUB AS
2 --$Header: cnprsetb.pls 120.1 2005/08/25 23:38:29 rramakri noship $
3
4 --Global Variables
5 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CN_Ruleset_PUB';
6 G_LAST_UPDATE_DATE DATE := Sysdate;
7 G_LAST_UPDATED_BY NUMBER := fnd_global.user_id;
8 G_CREATION_DATE DATE := Sysdate;
9 G_CREATED_BY NUMBER := fnd_global.user_id;
10 G_LAST_UPDATE_LOGIN NUMBER := fnd_global.login_id;
11
12 -- Start of comments
13 -- API name : Create_Ruleset
14 -- Type : Public
15 -- Function : This public API can be used to create a ruleset
16 -- Pre-reqs : None.
17 -- Parameters :
18 -- IN : p_api_version IN NUMBER Required
19 -- p_init_msg_list IN VARCHAR2 Optional
20 -- Default = FND_API.G_FALSE
21 -- p_commit IN VARCHAR2 Optional
22 -- Default = FND_API.G_FALSE
23 -- p_validation_level IN NUMBER Optional
24 -- Default = FND_API.G_VALID_LEVEL_FULL
25 -- p_ruleset_rec IN
26 -- CN_Ruleset_PUB.ruleset_rec_type
27 --
28 -- OUT : x_return_status OUT VARCHAR2(1)
29 -- x_msg_count OUT NUMBER
30 -- x_msg_data OUT VARCHAR2(2000)
31 --
32 -- Version : Current version 1.0
33 -- 25-Mar-99 Renu Chintalapati
34 -- previous version y.y
35 -- Changed....
36 -- Initial version 1.0
37 -- 25-Mar-99 Renu Chintalapati
38 --
39 -- Notes : Note text
40 --
41 -- End of comments
42
43 PROCEDURE create_ruleset
44 ( p_api_version IN NUMBER,
45 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
46 p_commit IN VARCHAR2 := FND_API.G_FALSE,
47 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
48 x_return_status OUT NOCOPY VARCHAR2,
49 x_msg_count OUT NOCOPY NUMBER,
50 x_msg_data OUT NOCOPY VARCHAR2,
51 x_loading_status OUT NOCOPY VARCHAR2,
52 p_ruleset_rec IN CN_Ruleset_PUB.ruleset_rec_type
53 )
54 IS
55
56 l_api_name CONSTANT VARCHAR2(30) := 'Create_Ruleset';
57 l_api_version CONSTANT NUMBER := 1.0;
58 l_loading_status VARCHAR2(4000);
59 l_error_status NUMBER;
60 l_error_parameter VARCHAR2(30);
61 l_count NUMBER;
62 --SK l_ruleset_rec cn_ruleset_pvt.ruleset_rec_type;
63 l_ruleset_rec_pvt cn_ruleset_pvt.ruleset_rec_type;
64
65 --
66 -- Declaration for user hooks
67 --
68 l_ruleset_rec CN_Ruleset_PUB.ruleset_rec_type;
69 l_OAI_array JTF_USR_HKS.oai_data_array_type;
70 l_bind_data_id NUMBER;
71 l_return_code VARCHAR2(1);
72
73 l_ruleset_id NUMBER;
74
75 BEGIN
76
77 --
78 -- Standard Start of API savepoint
79 --
80 SAVEPOINT Create_Ruleset;
81
82 --
83 -- Standard call to check for call compatibility.
84 --
85 IF NOT FND_API.Compatible_API_Call ( l_api_version,
86 p_api_version,
87 l_api_name,
88 G_PKG_NAME )
89 THEN
90 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
91 END IF;
92
93 -- Initialize message list if p_init_msg_list is set to TRUE.
94 IF FND_API.to_Boolean( p_init_msg_list )
95 THEN
96 FND_MSG_PUB.initialize;
97 END IF;
98
99 --
100 -- Initialize API return status to success
101 --
102 x_return_status := FND_API.G_RET_STS_SUCCESS;
103 x_loading_status := 'CN_INSERTED';
104
105
106 --
107 -- Assign the parameter to a local variable
108 --
109 l_ruleset_rec := p_ruleset_rec;
110
111 --
112 -- User hooks
113 --
114
115 -- customer pre-processing section
116 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
117 'CREATE_RULESET',
118 'B',
119 'C')
120 THEN
121 --SK cn_ruleset_pvt.create_ruleset
122 cn_ruleset_pub_cuhk.create_ruleset_pre
123 (p_api_version => p_api_version,
124 p_init_msg_list => p_init_msg_list,
125 p_commit => p_commit,
126 p_validation_level => p_validation_level,
127 x_return_status => x_return_status,
128 x_msg_count => x_msg_count,
129 x_msg_data => x_msg_data,
130 x_loading_status => x_loading_status,
131 p_ruleset_rec => l_ruleset_rec);
132
133 IF x_return_status = fnd_api.g_ret_sts_error
134 THEN
135 RAISE fnd_api.g_exc_error;
136 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
137 THEN
138 RAISE fnd_api.g_exc_unexpected_error;
139 END IF;
140 END IF;
141
142 -- vertical industry pre-processing section
143 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
144 'CREATE_RULESET',
145 'B',
146 'V')
147 THEN
148 --SK cn_ruleset_pvt.create_ruleset
149 cn_ruleset_pub_vuhk.create_ruleset_pre
150 (p_api_version => p_api_version,
151 p_init_msg_list => p_init_msg_list,
152 p_commit => p_commit,
153 p_validation_level => p_validation_level,
154 x_return_status => x_return_status,
155 x_msg_count => x_msg_count,
156 x_msg_data => x_msg_data,
157 x_loading_status => x_loading_status,
158 p_ruleset_rec => l_ruleset_rec);
159
160 IF x_return_status = fnd_api.g_ret_sts_error
161 THEN
162 RAISE fnd_api.g_exc_error;
163 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
164 THEN
165 RAISE fnd_api.g_exc_unexpected_error;
166 END IF;
167 END IF;
168
169 --
170 -- API body
171 --
172
173 --Check for missing parameters in the p_ruleset_rec parameter
174
175 IF (cn_api.chk_miss_null_char_para
176 ( l_ruleset_rec.ruleset_name,
177 cn_api.get_lkup_meaning('RULESET_NAME', 'RULESET_TYPE'),
178 x_loading_status,
179 x_loading_status) = FND_API.G_TRUE )
180 THEN
181 RAISE fnd_api.g_exc_error;
182 END IF;
183 IF (cn_api.chk_miss_null_char_para
184 ( l_ruleset_rec.module_type,
185 cn_api.get_lkup_meaning('MODULE_TYPE', 'RULESET_TYPE'),
186 x_loading_status,
187 x_loading_status) = FND_API.G_TRUE )
188 THEN
189 RAISE fnd_api.g_exc_error;
190 END IF;
191
192 IF cn_api.chk_miss_null_date_para
193 ( l_ruleset_rec.end_date,
194 cn_api.get_lkup_meaning('END_DATE', 'RULESET_TYPE'),
195 x_loading_status,
196 x_loading_status) = fnd_api.g_true
197 THEN
198 RAISE fnd_api.g_exc_error;
199 END IF;
200
201 IF cn_api.chk_miss_null_date_para
202 (l_ruleset_rec.start_date,
203 cn_api.get_lkup_meaning('START_DATE', 'RULESET_TYPE'),
204 x_loading_status,
205 x_loading_status)= fnd_api.g_true
206 THEN
207 RAISE fnd_api.g_exc_error;
208 END IF;
209
210 --Now check if the ruleset exists.
211 --If it does, then raise error
212 --else use cn_rulesets_s.nextval
213 SELECT count(1)
214 INTO l_count
215 FROM cn_rulesets
216 WHERE name = l_ruleset_rec.ruleset_name
217 AND module_type = (SELECT lookup_code
218 FROM cn_lookups
219 WHERE lookup_type = 'MODULE_TYPE'
220 AND meaning = l_ruleset_rec.module_type)
221 AND start_date = l_ruleset_rec.start_date
222 AND end_date = l_ruleset_rec.end_date;
223
224 IF l_count <> 0
225 THEN
226 --Error condition
227 IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
228 THEN
229 fnd_message.set_name('CN', 'CN_RULESET_EXISTS');
230 fnd_msg_pub.add;
231 END IF;
232
233 x_loading_status := 'CN_RULESET_EXISTS';
234 RAISE FND_API.G_EXC_ERROR;
235
236 END IF;
237
238 l_ruleset_rec_pvt.ruleset_name := p_ruleset_rec.ruleset_name;
239 l_ruleset_rec_pvt.start_date := p_ruleset_rec.start_date;
240 l_ruleset_rec_pvt.end_date := p_ruleset_rec.end_date;
241 l_ruleset_rec_pvt.org_id := p_ruleset_rec.org_id;
242
243 SELECT lookup_code
244 INTO l_ruleset_rec_pvt.module_type
245 FROM cn_lookups
246 WHERE lookup_type = 'MODULE_TYPE'
247 AND meaning = l_ruleset_rec.module_type;
248
249 cn_ruleset_pvt.create_ruleset
250 (p_api_version => p_api_version,
251 p_init_msg_list => p_init_msg_list,
252 p_commit => p_commit,
253 p_validation_level => p_validation_level,
254 x_return_status => x_return_status,
255 x_msg_count => x_msg_count,
256 x_msg_data => x_msg_data,
257 x_loading_status => x_loading_status,
258 x_ruleset_id => l_ruleset_id,
259 p_ruleset_rec => l_ruleset_rec_pvt);
260
261 IF x_return_status = fnd_api.g_ret_sts_error
262 THEN
263 RAISE fnd_api.g_exc_error;
264 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
265 THEN
266 RAISE fnd_api.g_exc_unexpected_error;
267 END IF;
268
269 --
270 -- End of API body.
271 --
272
273 --
274 -- Post processing hooks
275 --
276
277 -- SK Start of post processing hooks
278
279 -- vertical post processing section
280 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
281 'CREATE_RULESET',
282 'A',
283 'V')
284 THEN
285 --SK cn_ruleset_pvt.create_ruleset
286 cn_ruleset_pub_vuhk.create_ruleset_post
287 (p_api_version => p_api_version,
288 p_init_msg_list => p_init_msg_list,
289 p_commit => p_commit,
290 p_validation_level => p_validation_level,
291 x_return_status => x_return_status,
292 x_msg_count => x_msg_count,
293 x_msg_data => x_msg_data,
294 x_loading_status => x_loading_status,
295 p_ruleset_rec => l_ruleset_rec);
296
297 IF x_return_status = fnd_api.g_ret_sts_error
298 THEN
299 RAISE fnd_api.g_exc_error;
300 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
301 THEN
302 RAISE fnd_api.g_exc_unexpected_error;
303 END IF;
304 END IF;
305
306 -- customer post processing section
307 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
308 'CREATE_RULESET',
309 'A',
310 'C')
311 THEN
312 --SK cn_ruleset_pvt.create_ruleset
313 cn_ruleset_pub_cuhk.create_ruleset_post
314 (p_api_version => p_api_version,
315 p_init_msg_list => p_init_msg_list,
316 p_commit => p_commit,
317 p_validation_level => p_validation_level,
318 x_return_status => x_return_status,
319 x_msg_count => x_msg_count,
320 x_msg_data => x_msg_data,
321 x_loading_status => x_loading_status,
322 p_ruleset_rec => l_ruleset_rec);
323
324 IF x_return_status = fnd_api.g_ret_sts_error
325 THEN
326 RAISE fnd_api.g_exc_error;
327 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
328 THEN
329 RAISE fnd_api.g_exc_unexpected_error;
330 END IF;
331 END IF;
332 -- SK End of post processing hooks
333
334
335 -- Message generation section.
336 IF JTF_USR_HKS.Ok_to_execute('CN_RULESET_PUB',
337 'CREATE_RULESET',
338 'M',
339 'M')
340 THEN
341 IF cn_ruleset_pub_cuhk.ok_to_generate_msg
342 (p_ruleset_rec => l_ruleset_rec)
343 THEN
344 -- Clear bind variables
345 -- XMLGEN.clearBindValues;
346
347 -- Set values for bind variables,
348 -- call this for all bind variables in the business object
349 -- XMLGEN.setBindValue('RULESET_NAME', l_ruleset_rec.ruleset_name);
350
351
352 -- get ID for all the bind_variables in a Business Object.
353 l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
354
355 JTF_USR_HKS.load_bind_data(l_bind_data_id, 'RULESET_NAME', l_ruleset_rec.ruleset_name, 'S', 'T');
356
357 -- Message generation API
358 JTF_USR_HKS.generate_message
359 (p_prod_code => 'CN',
360 p_bus_obj_code => 'CRT_RSET',
361 p_action_code => 'I',
362 p_bind_data_id => l_bind_data_id,
363 x_return_code => l_return_code) ;
364
365 IF (l_return_code = FND_API.G_RET_STS_ERROR)
366 THEN
367 RAISE FND_API.G_EXC_ERROR;
368 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR )
369 THEN
370 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
371 END IF;
372
373
374 /*
375 -- Message generation API
376 JTF_USR_HKS.generate_message
377 (p_prod_code => 'CN',
378 p_bus_obj_code => 'CRT_RSET',
379 p_bus_obj_name => 'RULESET',
380 p_action_code => 'I',
381 p_oai_param => null,
382 p_oai_array => l_oai_array,
383 x_return_code => x_return_status) ;
384
385 IF (x_return_status = FND_API.G_RET_STS_ERROR)
386 THEN
387 RAISE FND_API.G_EXC_ERROR;
388 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
389 THEN
390 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
391 END IF;
392 */
393 END IF;
394 END IF;
395
396
397
398 -- Standard check of p_commit.
399 IF FND_API.To_Boolean( p_commit )
400 THEN
401
402 COMMIT WORK;
403 END IF;
404
405
406 --
407 -- Standard call to get message count and if count is 1, get message info.
408 --
409
410 FND_MSG_PUB.Count_And_Get
411 (
412 p_count => x_msg_count ,
413 p_data => x_msg_data ,
414 p_encoded => FND_API.G_FALSE
415 );
416 EXCEPTION
417 WHEN FND_API.G_EXC_ERROR THEN
418 ROLLBACK TO Create_Ruleset;
419 x_return_status := FND_API.G_RET_STS_ERROR ;
420 FND_MSG_PUB.Count_And_Get
421 (
422 p_count => x_msg_count ,
423 p_data => x_msg_data ,
424 p_encoded => FND_API.G_FALSE
425 );
426 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
427 ROLLBACK TO Create_Ruleset;
428 x_loading_status := 'UNEXPECTED_ERR';
429 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
430 FND_MSG_PUB.Count_And_Get
431 (
432 p_count => x_msg_count ,
433 p_data => x_msg_data ,
434 p_encoded => FND_API.G_FALSE
435 );
436 WHEN OTHERS THEN
437 ROLLBACK TO Create_Ruleset;
438 x_loading_status := 'UNEXPECTED_ERR';
439 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
440 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
441 THEN
442 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
443 END IF;
444 FND_MSG_PUB.Count_And_Get
445 (
446 p_count => x_msg_count ,
447 p_data => x_msg_data ,
448 p_encoded => FND_API.G_FALSE
449 );
450 END Create_Ruleset;
451
452 -- Start of comments
453 -- API name : Update_Ruleset
454 -- Type : Public
455 -- Function : This Public API can be used to update a rule,
456 -- a ruleset or rule attributes in Oracle Sales
457 -- Compensation.
458 -- Pre-reqs : None.
459 -- Parameters :
460 -- IN : p_api_version IN NUMBER Required
461 -- p_init_msg_list IN VARCHAR2 Optional
462 -- Default = FND_API.G_FALSE
466 -- Default = FND_API.G_VALID_LEVEL_FULL
463 -- p_commit IN VARCHAR2 Optional
464 -- Default = FND_API.G_FALSE
465 -- p_validation_level IN NUMBER Optional
467 -- p_ruleset_rec_type IN
468 -- CN_Ruleset_PUB.ruleset_rec_type
469 --
470 -- OUT : x_return_status OUT VARCHAR2(1)
471 -- x_msg_count OUT NUMBER
472 -- x_msg_data OUT VARCHAR2(2000)
473 --
474 -- Version : Current version 1.0
475 -- 25-Mar-99 Renu Chintalapati
476 -- previous version y.y
477 -- Changed....
478 -- Initial version 1.0
479 -- 25-Mar-99 Renu Chintalapati
480 --
481 -- Notes : Note text
482 --
483 -- End of comments
484
485
486 PROCEDURE Update_Ruleset
487 ( p_api_version IN NUMBER,
488 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
489 p_commit IN VARCHAR2 := FND_API.G_FALSE,
490 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
491 x_return_status OUT NOCOPY VARCHAR2,
492 x_msg_count OUT NOCOPY NUMBER,
493 x_msg_data OUT NOCOPY VARCHAR2,
494 x_loading_status OUT NOCOPY VARCHAR2,
495 p_old_ruleset_rec IN OUT NOCOPY CN_Ruleset_PUB.ruleset_rec_type,
496 p_ruleset_rec IN OUT NOCOPY CN_Ruleset_PUB.ruleset_rec_type
497 ) IS
498
499 l_api_name CONSTANT VARCHAR2(30) := 'Update_Ruleset';
500 l_api_version CONSTANT NUMBER := 1.0;
501 l_loading_status VARCHAR2(4000);
502 l_count NUMBER;
503 l_old_ruleset_rec_pvt cn_ruleset_pvt.ruleset_rec_type;
504 l_ruleset_rec_pvt cn_ruleset_pvt.ruleset_rec_type;
505
506 --
507 --Declaration for user hooks
508 --
509 l_OAI_array JTF_USR_HKS.oai_data_array_type;
510 l_old_ruleset_rec CN_Ruleset_PUB.ruleset_rec_type;
511 l_ruleset_rec CN_Ruleset_PUB.ruleset_rec_type;
512 l_bind_data_id NUMBER;
513 l_return_code VARCHAR2(1);
514
515
516 BEGIN
517
518 -- Standard Start of API savepoint
519 SAVEPOINT Update_Ruleset;
520 -- Standard call to check for call compatibility.
521 IF NOT FND_API.Compatible_API_Call ( l_api_version,
522 p_api_version,
523 l_api_name,
524 G_PKG_NAME )
525 THEN
526 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
527 END IF;
528
529 -- Initialize message list if p_init_msg_list is set to TRUE.
530 IF FND_API.to_Boolean( p_init_msg_list )
531 THEN
532 FND_MSG_PUB.initialize;
533 END IF;
534
535 --
536 -- Initialize API return status to success
537 --
538 x_return_status := FND_API.G_RET_STS_SUCCESS;
539 x_loading_status := 'CN_UPDATED';
540
541 --
542 -- Assign the parameter to a local variable
543 --
544 l_old_ruleset_rec := p_old_ruleset_rec;
545 l_ruleset_rec := p_ruleset_rec;
546
547
548 --
549 -- User hooks
550 --
551
552 -- customer pre-processing section
553 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
554 'UPDATE_RULESET',
555 'B',
556 'C')
557 THEN
558 cn_ruleset_pub_cuhk.update_ruleset_pre
559 (p_api_version => p_api_version,
560 p_init_msg_list => p_init_msg_list,
561 p_commit => p_commit,
562 p_validation_level => p_validation_level,
563 x_return_status => x_return_status,
564 x_msg_count => x_msg_count,
565 x_msg_data => x_msg_data,
566 x_loading_status => x_loading_status,
567 p_ruleset_rec => l_ruleset_rec,
568 p_old_ruleset_rec => l_old_ruleset_rec);
569
570 IF x_return_status = fnd_api.g_ret_sts_error
571 THEN
572 RAISE fnd_api.g_exc_error;
573 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
574 THEN
575 RAISE fnd_api.g_exc_unexpected_error;
576 END IF;
577 END IF;
578
579 -- vertical industry pre-processing section
580 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
581 'UPDATE_RULESET',
582 'B',
583 'V')
584 THEN
585 cn_ruleset_pub_vuhk.update_ruleset_pre
586 (p_api_version => p_api_version,
587 p_init_msg_list => p_init_msg_list,
588 p_commit => p_commit,
589 p_validation_level => p_validation_level,
590 x_return_status => x_return_status,
591 x_msg_count => x_msg_count,
592 x_msg_data => x_msg_data,
593 x_loading_status => x_loading_status,
594 p_ruleset_rec => l_ruleset_rec,
595 p_old_ruleset_rec => l_old_ruleset_rec);
596
597 IF x_return_status = fnd_api.g_ret_sts_error
598 THEN
599 RAISE fnd_api.g_exc_error;
600 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
601 THEN
602 RAISE fnd_api.g_exc_unexpected_error;
603 END IF;
604 END IF;
605
606 --
607 -- API body
608 --
609
613 OR l_ruleset_rec.module_type <> l_old_ruleset_rec.module_type
610 IF l_ruleset_rec.ruleset_name <> l_old_ruleset_rec.ruleset_name
611 OR l_ruleset_rec.start_date <> l_old_ruleset_rec.start_date
612 OR l_ruleset_rec.end_date <> l_old_ruleset_rec.end_date
614 THEN
615 --ruleset needs to be updated
616
617 --Validate input parameters
618 --Check for missing parameters in the p_ruleset_rec parameter
619
620 IF (cn_api.chk_miss_null_char_para
621 ( l_old_ruleset_rec.ruleset_name,
622 cn_api.get_lkup_meaning('RULESET_NAME', 'RULESET_TYPE'),
623 x_loading_status,
624 x_loading_status) = FND_API.G_TRUE )
625 THEN
626 RAISE fnd_api.g_exc_error;
627 END IF;
628
629 IF cn_api.chk_miss_null_date_para
630 ( l_old_ruleset_rec.end_date,
631 cn_api.get_lkup_meaning('END_DATE', 'RULESET_TYPE'),
632 x_loading_status,
633 x_loading_status) = fnd_api.g_true
634 THEN
635 RAISE fnd_api.g_exc_error;
636 END IF;
637
638 IF cn_api.chk_miss_null_date_para
639 (l_old_ruleset_rec.start_date,
640 cn_api.get_lkup_meaning('START_DATE', 'RULESET_TYPE'),
641 x_loading_status,
642 x_loading_status)= fnd_api.g_true
643 THEN
644 RAISE fnd_api.g_exc_error;
645 END IF;
646
647
648 --Check for missing parameters in the p_ruleset_rec parameter
649
650 IF (cn_api.chk_miss_null_char_para
651 ( l_ruleset_rec.ruleset_name,
652 cn_api.get_lkup_meaning('RULESET_NAME', 'RULESET_TYPE'),
653 x_loading_status,
654 x_loading_status) = FND_API.G_TRUE )
655 THEN
656 RAISE fnd_api.g_exc_error;
657 END IF;
658
659 IF cn_api.chk_miss_null_date_para
660 ( l_ruleset_rec.end_date,
661 cn_api.get_lkup_meaning('END_DATE', 'RULESET_TYPE'),
662 x_loading_status,
663 x_loading_status) = fnd_api.g_true
664 THEN
665 RAISE fnd_api.g_exc_error;
666 END IF;
667
668 IF cn_api.chk_miss_null_date_para
669 (l_ruleset_rec.start_date,
670 cn_api.get_lkup_meaning('START_DATE', 'RULESET_TYPE'),
671 x_loading_status,
672 x_loading_status)= fnd_api.g_true
673 THEN
674 RAISE fnd_api.g_exc_error;
675 END IF;
676
677
678 --Now check if the ruleset exists.
679 --If it does, then raise error
680 --else use cn_rulesets_s.nextval
681 SELECT count(1)
682 INTO l_count
683 FROM cn_rulesets
684 WHERE name = l_old_ruleset_rec.ruleset_name
685 AND start_date = l_old_ruleset_rec.start_date
686 AND end_date = l_old_ruleset_rec.end_date;
687
688 IF l_count = 0
689 THEN
690 --Error condition
691 IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error)
692 THEN
693 fnd_message.set_name('CN', 'CN_INVALID_RULESET');
694 fnd_msg_pub.add;
695 END IF;
696
697 x_loading_status := 'CN_INVALID_RULESET';
698 RAISE FND_API.G_EXC_ERROR;
699 ELSE
700 SELECT ruleset_id
701 INTO l_old_ruleset_rec_pvt.ruleset_id
702 FROM cn_rulesets
703 WHERE name = l_old_ruleset_rec.ruleset_name
704 AND start_date = l_old_ruleset_rec.start_date
705 AND end_date = l_old_ruleset_rec.end_date;
706 END IF;
707
708 l_ruleset_rec_pvt.ruleset_id := l_old_ruleset_rec_pvt.ruleset_id;
709 l_ruleset_rec_pvt.ruleset_name := p_ruleset_rec.ruleset_name;
710 l_ruleset_rec_pvt.start_date := p_ruleset_rec.start_date;
711 l_ruleset_rec_pvt.end_date := p_ruleset_rec.end_date;
712 l_ruleset_rec_pvt.org_id := p_ruleset_rec.org_id;
713 SELECT lookup_code
714 INTO l_ruleset_rec_pvt.module_type
715 FROM cn_lookups
716 WHERE lookup_type = 'MODULE_TYPE'
717 AND meaning = p_ruleset_rec.module_type;
718
719 l_old_ruleset_rec_pvt.ruleset_name := p_old_ruleset_rec.ruleset_name;
720 l_old_ruleset_rec_pvt.start_date := p_old_ruleset_rec.start_date;
721 l_old_ruleset_rec_pvt.end_date := p_old_ruleset_rec.end_date;
722 l_old_ruleset_rec_pvt.org_id := p_old_ruleset_rec.org_id;
723
724 SELECT lookup_code
725 INTO l_old_ruleset_rec_pvt.module_type
726 FROM cn_lookups
727 WHERE lookup_type = 'MODULE_TYPE'
728 AND meaning = p_old_ruleset_rec.module_type;
729
730 cn_ruleset_pvt.update_ruleset
731 (p_api_version => p_api_version,
732 p_init_msg_list => p_init_msg_list,
733 p_commit => p_commit,
734 p_validation_level => p_validation_level,
735 x_return_status => x_return_status,
736 x_msg_count => x_msg_count,
737 x_msg_data => x_msg_data,
738 x_loading_status => x_loading_status,
739 p_ruleset_rec => l_ruleset_rec_pvt,
740 p_old_ruleset_rec => l_old_ruleset_rec_pvt);
741
742
743
744 END IF;
745
746 --
747 -- End of API body.
748 --
749
750
751 --
752 -- Post processing hooks
753 --
754
755 -- SK Start of post processing hooks
756
757 -- vertical post processing section
758 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
762 THEN
759 'UPDATE_RULESET',
760 'A',
761 'V')
763 cn_ruleset_pub_vuhk.update_ruleset_post
764 (p_api_version => p_api_version,
765 p_init_msg_list => p_init_msg_list,
766 p_commit => p_commit,
767 p_validation_level => p_validation_level,
768 x_return_status => x_return_status,
769 x_msg_count => x_msg_count,
770 x_msg_data => x_msg_data,
771 x_loading_status => x_loading_status,
772 p_ruleset_rec => l_ruleset_rec,
773 p_old_ruleset_rec => l_old_ruleset_rec);
774
775 IF x_return_status = fnd_api.g_ret_sts_error
776 THEN
777 RAISE fnd_api.g_exc_error;
778 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
779 THEN
780 RAISE fnd_api.g_exc_unexpected_error;
781 END IF;
782 END IF;
783
784 -- customer post processing section
785 IF JTF_USR_HKS.Ok_to_Execute('CN_RULESET_PUB',
786 'UPDATE_RULESET',
787 'A',
788 'C')
789 THEN
790 cn_ruleset_pub_cuhk.update_ruleset_post
791 (p_api_version => p_api_version,
792 p_init_msg_list => p_init_msg_list,
793 p_commit => p_commit,
794 p_validation_level => p_validation_level,
795 x_return_status => x_return_status,
796 x_msg_count => x_msg_count,
797 x_msg_data => x_msg_data,
798 x_loading_status => x_loading_status,
799 p_ruleset_rec => l_ruleset_rec,
800 p_old_ruleset_rec => l_old_ruleset_rec);
801
802 IF x_return_status = fnd_api.g_ret_sts_error
803 THEN
804 RAISE fnd_api.g_exc_error;
805 ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error
806 THEN
807 RAISE fnd_api.g_exc_unexpected_error;
808 END IF;
809 END IF;
810 -- SK End of post processing hooks
811
812
813 -- Message generation section.
814 IF JTF_USR_HKS.Ok_to_execute('CN_RULESET_PUB',
815 'UPDATE_RULESET',
816 'M',
817 'M')
818 THEN
819 IF cn_ruleset_pub_cuhk.ok_to_generate_msg
820 (p_ruleset_rec => l_ruleset_rec)
821 THEN
822 -- Clear bind variables
823 -- XMLGEN.clearBindValues;
824
825 -- Set values for bind variables,
826 -- call this for all bind variables in the business object
827 -- XMLGEN.setBindValue('RULESET_NAME', l_ruleset_rec.ruleset_name);
828
829 -- get ID for all the bind_variables in a Business Object.
830 l_bind_data_id := JTF_USR_HKS.get_bind_data_id;
831
832 JTF_USR_HKS.load_bind_data(l_bind_data_id, 'RULESET_NAME', l_ruleset_rec.ruleset_name, 'S', 'T');
833
834 -- Message generation API
835 JTF_USR_HKS.generate_message
836 (p_prod_code => 'CN',
837 p_bus_obj_code => 'UPD_RSET',
838 p_action_code => 'U',
839 p_bind_data_id => l_bind_data_id,
840 x_return_code => l_return_code) ;
841
842 IF (l_return_code = FND_API.G_RET_STS_ERROR)
843 THEN
844 RAISE FND_API.G_EXC_ERROR;
845 ELSIF (l_return_code = FND_API.G_RET_STS_UNEXP_ERROR )
846 THEN
847 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
848 END IF;
849
850
851 /*
852 -- Message generation API
853 JTF_USR_HKS.generate_message
854 (p_prod_code => 'CN',
855 p_bus_obj_code => 'UPD_RSET',
856 p_bus_obj_name => 'RULESET',
857 p_action_code => 'I',
858 p_oai_param => null,
859 p_oai_array => l_oai_array,
860 x_return_code => x_return_status) ;
861
862 IF (x_return_status = FND_API.G_RET_STS_ERROR)
863 THEN
864 RAISE FND_API.G_EXC_ERROR;
865 ELSIF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR )
866 THEN
867 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
868 END IF;
869 */
870 END IF;
871 END IF;
872
873
874
875 -- Standard check of p_commit.
876 IF FND_API.To_Boolean( p_commit )
877 THEN
878 COMMIT WORK;
879 END IF;
880
881
882 -- Standard call to get message count and if count is 1, get message info.
883 FND_MSG_PUB.Count_And_Get
884 (p_count => x_msg_count,
885 p_data => x_msg_data
886 );
887 EXCEPTION
888 WHEN FND_API.G_EXC_ERROR THEN
889 ROLLBACK TO Update_Ruleset;
890 x_return_status := FND_API.G_RET_STS_ERROR ;
891 FND_MSG_PUB.Count_And_Get
892 (p_count => x_msg_count,
893 p_data => x_msg_data
894 );
895 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
896 ROLLBACK TO Update_Ruleset;
897 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
898 FND_MSG_PUB.Count_And_Get
899 (p_count => x_msg_count,
900 p_data => x_msg_data
901 );
902 WHEN OTHERS THEN
903 ROLLBACK TO Update_Ruleset;
904 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
905 IF FND_MSG_PUB.Check_Msg_Level
906 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
907 THEN
908 FND_MSG_PUB.Add_Exc_Msg
909 (G_PKG_NAME,
910 l_api_name
911 );
912 END IF;
913 FND_MSG_PUB.Count_And_Get
914 (p_count => x_msg_count,
915 p_data => x_msg_data
916 );
917
918 END;
919
920 END CN_Ruleset_PUB;