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