[Home] [Help]
PACKAGE BODY: APPS.CN_RT_QUOTA_ASGNS_PVT
Source
1 PACKAGE BODY CN_RT_QUOTA_ASGNS_PVT as
2 /* $Header: cnxvrqab.pls 120.2 2007/08/10 20:35:41 rnagired ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30) := 'CN_RT_QUOTA_ASGNS_PVT';
5 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cnxvrqab.pls';
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 G_ROWID VARCHAR2(30);
12 G_PROGRAM_TYPE VARCHAR2(30);
13 --|------------------------------------------------------------------------+
14 --| Procedure Name : Validate_Rt_quota_Asgns
15 --| Description: Validate the Rate Quota Informations like
16 --| Start Date is mandatory, Rate schedule Name is mandatory ,
17 --| End Date must be greater than start date
18 --| Start Date and end must be within the range of quota start date
19 --| and end date
20 --|------------------------------------------------------------------------+
21 PROCEDURE Validate_rt_Quota_asgns
22 (
23 x_return_status OUT NOCOPY VARCHAR2 ,
24 x_msg_count OUT NOCOPY NUMBER ,
25 x_msg_data OUT NOCOPY VARCHAR2 ,
26 p_rt_quota_asgns_rec IN cn_plan_element_pub.rt_quota_asgns_rec_type,
27 x_rate_schedule_id OUT NOCOPY NUMBER,
28 x_rt_quota_asgn_id OUT NOCOPY NUMBER,
29 x_calc_formula_id OUT NOCOPY NUMBER,
30 p_quota_id IN NUMBER,
31 p_quota_name IN cn_quotas.name%TYPE,
32 p_org_id IN NUMBER,
33 p_loading_status IN VARCHAR2,
34 x_loading_status OUT NOCOPY VARCHAR2
35 )
36 IS
37
38 -- Cursor
39 -- CURSOR rt_quota_asgns_seq_curs(l_quota_id NUMBER) IS
40 -- SELECT end_date,
41 -- quota_id
42 -- FROM cn_rt_quota_asgns
43 -- WHERE quota_id = l_quota_id
44 -- ORDER BY start_date DESC ;
45
46 l_tmp NUMBER;
47 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Rt_Quota_Asgns';
48 l_lkup_meaning cn_lookups.meaning%TYPE;
49 l_calc_formula_id cn_calc_formulas.calc_formula_id%TYPE;
50 l_loading_status VARCHAR2(80);
51
52 BEGIN
53 -- Initialize API return status to success
54 x_return_status := FND_API.G_RET_STS_SUCCESS;
55 x_loading_status := p_loading_status ;
56
57
58 -- Check Rate Schedule Name is not null
59
60 l_lkup_meaning := cn_api.get_lkup_meaning('RATE_SCHEDULE_NAME','PE_OBJECT_TYPE');
61 IF ( (cn_api.chk_null_char_para
62 (p_char_para => p_rt_quota_asgns_rec.rate_schedule_name,
63 p_obj_name => l_lkup_meaning,
64 p_loading_status => x_loading_status,
65 x_loading_status => l_loading_status)) = FND_API.G_TRUE ) THEN
66 RAISE FND_API.G_EXC_ERROR ;
67 END IF;
68
69
70 -- Check Start Date is not null
71
72 l_lkup_meaning := cn_api.get_lkup_meaning('RATE_START_DATE','PE_OBJECT_TYPE');
73 IF ( (cn_api.chk_null_char_para
74 (p_char_para => p_rt_quota_asgns_rec.start_date,
75 p_obj_name => l_lkup_meaning,
76 p_loading_status => x_loading_status,
77 x_loading_status => l_loading_status)) = FND_API.G_TRUE ) THEN
78 RAISE FND_API.G_EXC_ERROR ;
79 END IF;
80
81
82 -- get rate Schedule ID, raise an error if rate schedule id not found.
83
84 x_rate_schedule_id
85 := cn_api.get_rate_table_id(p_rt_quota_asgns_rec.rate_schedule_name,p_rt_quota_asgns_rec.org_id);
86
87 l_calc_formula_id
88 := cn_chk_plan_element_pkg.get_calc_formula_id(
89 p_rt_quota_asgns_rec.calc_formula_name,p_org_id);
90 x_calc_formula_id := l_calc_formula_id;
91
92 -- Raise an error, if rate schedule id is null, not exists in the database
93 IF x_rate_schedule_id IS NULL THEN
94 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
95 THEN
96 FND_MESSAGE.SET_NAME ('CN' , 'CN_RATE_SCH_NOT_EXIST');
97 FND_MSG_PUB.Add;
98 END IF;
99 x_loading_status := 'RATE_SCH_NOT_EXIST';
100 RAISE FND_API.G_EXC_ERROR ;
101 END IF;
102
103
104 -- Validate Rule : End period must be greater than Start period
105
106 IF (p_rt_quota_asgns_rec.end_date IS NOT NULL
107 AND trunc(p_rt_quota_asgns_rec.end_date) < Trunc(p_rt_quota_asgns_rec.start_date)) THEN
108 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
109 THEN
110 FND_MESSAGE.SET_NAME ('CN' , 'CN_INVALID_DATE_RANGE');
111 FND_MSG_PUB.Add;
112 END IF;
113 x_loading_status := 'INVALID_END_DATE';
114 RAISE FND_API.G_EXC_ERROR ;
115 END IF;
116
117
118 -- get the rt_quota Asgns ID if any one of the old value is not null
119 -- for Update only
120 -- clku, 8/27/2001, If condition enhanced to fix bug 1951983
121 IF ( (p_rt_quota_asgns_rec.start_date_old IS NOT NULL AND
122 p_rt_quota_asgns_rec.start_date_old <> cn_api.g_miss_date) OR
123 (p_rt_quota_asgns_rec.end_date_old IS NOT NULL AND
124 p_rt_quota_asgns_rec.end_date_old <> cn_api.g_miss_date) OR
125 (p_rt_quota_asgns_rec.rate_schedule_name_old IS NOT NULL AND
126 p_rt_quota_asgns_rec.rate_schedule_name_old <> cn_api.g_miss_char)) THEN
127
128 -- Get the rt_quota_asgn_id to Update the exact record.
129
130 x_rt_quota_asgn_id := cn_chk_plan_element_pkg.get_rt_quota_asgn_id
131 (p_quota_id => p_quota_id,
132 p_rate_schedule_id => cn_api.get_rate_table_id
133 (p_rt_quota_asgns_rec.rate_schedule_name_old,p_rt_quota_asgns_rec.org_id),
134 p_calc_formula_id => l_calc_formula_id,
135 p_start_date => p_rt_quota_asgns_rec.start_date_old,
136 p_end_date => p_rt_quota_asgns_rec.end_date_old
137 );
138
139
140 -- check the rt_quota_asgns_id is Not null and exists in the database
141
142 IF x_rt_quota_asgn_id IS NULL THEN
143 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
144 THEN
145 FND_MESSAGE.SET_NAME ('CN' , 'CN_RT_QUOTA_NOT_EXISTS');
146 FND_MESSAGE.SET_TOKEN('QUOTA_NAME',p_quota_name);
147 FND_MESSAGE.SET_TOKEN('RATE_SCHEDULE_NAME',p_rt_quota_asgns_rec.rate_schedule_name_old );
148 FND_MESSAGE.SET_TOKEN('START_DATE',p_rt_quota_asgns_rec.start_date_old );
149 FND_MSG_PUB.Add;
150 END IF;
151 x_loading_status := 'RT_QUOTA_NOT_EXISTS';
152 RAISE FND_API.G_EXC_ERROR ;
153 END IF;
154 END IF;
155
156
157 -- Check Duplicate or invalid Sequence Date only
158
159 SELECT COUNT(*)
160 INTO l_tmp
161 FROM cn_rt_Quota_asgns
162 WHERE quota_id = p_quota_id
163 AND calc_formula_id = l_calc_formula_id
164 AND rt_quota_asgn_id <> Nvl(x_rt_quota_asgn_id,0)
165 AND Trunc(start_date) = Trunc(p_rt_quota_Asgns_rec.start_date)
166 ;
167 IF (l_tmp <> 0) THEN
168 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
169 THEN
170 FND_MESSAGE.SET_NAME ('CN' , 'CN_RT_QUOTA_EXISTS');
171 FND_MSG_PUB.Add;
172 END IF;
173 x_loading_status := 'RT_QUOTA_EXISTS';
174 END IF ;
175
176 -- Check date Effetcivity, quota rate assigns start date and end must
177 -- be with start date and end date of the quota date
178
179 cn_chk_plan_element_pkg.chk_date_effective
180 (
181 x_return_status => x_return_status,
182 p_start_date => p_rt_quota_asgns_rec.start_date,
183 p_end_date => p_rt_quota_asgns_rec.end_date,
184 p_quota_id => p_quota_id,
185 p_object_type => 'RATE',
186 p_loading_status => x_loading_status,
187 x_loading_status => l_loading_status );
188
189 x_loading_status := l_loading_status;
190
191 -- check quota type, if quota type is NONE you cannot have rates
192
193 IF Nvl(cn_chk_plan_element_pkg.get_quota_type ( p_quota_id ),'NONE') = 'NONE' THEN
194 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
195 THEN
196 FND_MESSAGE.SET_NAME ('CN' , 'CN_QUOTA_CANNOT_HAVE_RATE' );
197 FND_MSG_PUB.Add;
198 END IF;
199 x_loading_status := 'QUOTA_CANNOT_HAVE_RATE';
200 RAISE FND_API.G_EXC_ERROR ;
201 END IF;
202
203 -- End of Validate rt Quota Asigns .
204 -- Standard call to get message count and if count is 1, get message info.
205
206 FND_MSG_PUB.Count_And_Get
207 (
208 p_count => x_msg_count,
209 p_data => x_msg_data,
210 p_encoded => FND_API.G_FALSE
211 );
212
213 EXCEPTION
214 WHEN FND_API.G_EXC_ERROR THEN
215 x_return_status := FND_API.G_RET_STS_ERROR ;
216 FND_MSG_PUB.Count_And_Get
217 (
218 p_count => x_msg_count ,
219 p_data => x_msg_data ,
220 p_encoded => FND_API.G_FALSE
221 );
222 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
223 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
224 x_loading_status := 'UNEXPECTED_ERR';
225 FND_MSG_PUB.Count_And_Get
226 (
227 p_count => x_msg_count ,
228 p_data => x_msg_data ,
229 p_encoded => FND_API.G_FALSE
230 );
231 WHEN OTHERS THEN
232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
233 x_loading_status := 'UNEXPECTED_ERR';
234 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
235 THEN
236 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
237 END IF;
238 FND_MSG_PUB.Count_And_Get
239 (
240 p_count => x_msg_count,
241 p_data => x_msg_data,
242 p_encoded=> FND_API.G_FALSE
243 );
244
245 END Validate_rt_quota_asgns;
246 --|-----------------------------------------------------------------------+
247 --| Procedure Name : Create rt Quota Asgns
248 --|
249 --|-----------------------------------------------------------------------+
250 PROCEDURE Create_rt_quota_asgns
251 (
252 p_api_version IN NUMBER,
253 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
254 p_commit IN VARCHAR2 := FND_API.G_FALSE,
255 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
256 x_return_status OUT NOCOPY VARCHAR2,
257 x_msg_count OUT NOCOPY NUMBER,
258 x_msg_data OUT NOCOPY VARCHAR2,
259 p_quota_name IN cn_quotas.name%TYPE,
260 p_org_id IN NUMBER,
261 p_rt_quota_asgns_rec_tbl IN cn_plan_element_pub.rt_quota_asgns_rec_tbl_type
262 := cn_plan_element_pub.g_miss_rt_quota_asgns_rec_tbl,
263 x_loading_status OUT NOCOPY VARCHAR2,
264 x_object_version_number IN OUT NOCOPY NUMBER
265 ) IS
266
267 l_api_name CONSTANT VARCHAR2(30)
268 := 'Create_Rt_Quota_Asgns';
269 l_api_version CONSTANT NUMBER := 1.0;
270 l_rt_quota_asgn_id NUMBER;
271 l_quota_id NUMBER;
272 l_rate_schedule_id NUMBER;
273 l_tmp NUMBER;
274 l_rate_date_seq_rec_tbl rate_date_seq_rec_tbl_type;
275 l_calc_formula_id NUMBER;
276 l_loading_status VARCHAR2(80);
277
278 BEGIN
279
280 -- Standard Start of API savepoint
281
282 SAVEPOINT create_rt_quota_asgns ;
283
284
285 -- Standard call to check for call compatibility.
286
287 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
288 p_api_version ,
289 l_api_name ,
290 G_PKG_NAME )
291 THEN
292 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
293 END IF;
294
295
296 -- Initialize message list if p_init_msg_list is set to TRUE.
297
298 IF FND_API.to_Boolean( p_init_msg_list ) THEN
299 FND_MSG_PUB.initialize;
300 END IF;
301
302
303 -- Initialize API return status to success
304
305 x_return_status := FND_API.G_RET_STS_SUCCESS;
306 x_loading_status := 'CN_INSERTED';
307
308
309 -- API body
310 -- Validate the Rt quota Assgns
311
312 IF p_rt_quota_asgns_rec_tbl.COUNT > 0 THEN
313
314 -- check quota name is missing or null, mandatory
315 IF ( (cn_api.chk_miss_char_para
316 ( p_char_para => p_quota_name,
317 p_para_name => CN_CHK_PLAN_ELEMENT_PKG.G_PE_NAME,
318 p_loading_status => x_loading_status,
319 x_loading_status => l_loading_status)) = FND_API.G_TRUE) THEN
320 RAISE FND_API.G_EXC_ERROR ;
321 ELSIF ( (cn_api.chk_null_char_para
322 (p_char_para => p_quota_name,
323 p_obj_name => CN_CHK_PLAN_ELEMENT_PKG.G_PE_NAME,
324 p_loading_status => x_loading_status,
325 x_loading_status => l_loading_status)) = FND_API.G_TRUE ) THEN
326 RAISE FND_API.G_EXC_ERROR ;
327 END IF;
328
329
330 -- get Quota ID
331
332 l_quota_id := cn_chk_plan_element_pkg.get_quota_id(p_quota_name,p_org_id);
333
334
335 -- if Quota id is null and name is not null then raise an error
336
337 IF (p_quota_name IS NOT NULL
338 AND l_quota_id IS NULL )
339 THEN
340 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
341 THEN
342 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
343 THEN
344 FND_MESSAGE.SET_NAME('CN' , 'CN_PLN_NOT_EXIST');
345 FND_MESSAGE.SET_TOKEN('PE_NAME',p_quota_name);
346 FND_MSG_PUB.Add;
347 END IF;
348 x_loading_status := 'CN_PLN_NOT_EXIST' ;
349 RAISE FND_API.G_EXC_ERROR;
350 END IF;
351 END IF;
352
353
354 -- loop through if more than one record in the PL/SQL table
355
356 l_tmp := p_rt_quota_asgns_rec_tbl.COUNT;
357
358 -- FOR I IN 1..p_rt_quota_asgns_rec_tbl.COUNT
359 -- LOOP
360 FOR I IN p_rt_quota_asgns_rec_tbl.FIRST..p_rt_quota_asgns_rec_tbl.LAST LOOP
361
362 -- Validate the Quota Rate Assigns
363
364 Validate_rt_quota_asgns
365 (
366 x_return_status => x_return_status,
367 x_msg_count => x_msg_count,
368 x_msg_data => x_msg_data,
369 p_rt_quota_asgns_rec => p_rt_quota_asgns_rec_tbl(i),
370 p_quota_name => p_quota_name,
371 p_org_id => p_org_id,
372 p_quota_id => l_quota_id,
373 x_rate_schedule_id => l_rate_schedule_id,
374 x_rt_quota_asgn_id => l_rt_quota_asgn_id,
375 x_calc_formula_id => l_calc_formula_id,
376 p_loading_status => x_loading_status,
377 x_loading_status => l_loading_status
378 );
379
380 x_loading_status := l_loading_status;
381 -- Check the Return Status and Loading Status
382
383 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
384 RAISE FND_API.G_EXC_ERROR ;
385 ELSIF ( x_return_status = FND_API.G_RET_STS_SUCCESS )
386 AND ( x_loading_status <> 'RT_QUOTA_EXISTS' )
387 THEN
388
389 -- Insert the Rt_quota assigns record.
390
391
392 CN_RT_QUOTA_ASGNS_PKG.begin_record
393 (x_org_id => p_org_id,
394 x_Operation => 'INSERT'
395 ,x_Rowid => G_ROWID
396 ,x_rt_quota_asgn_id => l_rt_quota_asgn_id
397 ,x_calc_formula_id => l_calc_formula_id
398 ,x_quota_id => l_quota_id
399 ,x_start_date => p_rt_quota_asgns_rec_tbl(i).start_date
400 ,x_end_date => p_rt_quota_asgns_rec_tbl(i).end_date
401 ,x_rate_schedule_id => l_rate_schedule_id
402 ,x_attribute_category => p_rt_quota_asgns_rec_tbl(i).attribute_category
403 ,x_attribute1 => p_rt_quota_asgns_rec_tbl(i).attribute1
404 ,x_attribute2 => p_rt_quota_asgns_rec_tbl(i).attribute2
405 ,x_attribute3 => p_rt_quota_asgns_rec_tbl(i).attribute3
406 ,x_attribute4 => p_rt_quota_asgns_rec_tbl(i).attribute4
407 ,x_attribute5 => p_rt_quota_asgns_rec_tbl(i).attribute5
408 ,x_attribute6 => p_rt_quota_asgns_rec_tbl(i).attribute6
409 ,x_attribute7 => p_rt_quota_asgns_rec_tbl(i).attribute7
410 ,x_attribute8 => p_rt_quota_asgns_rec_tbl(i).attribute8
411 ,x_attribute9 => p_rt_quota_asgns_rec_tbl(i).attribute9
412 ,x_attribute10 => p_rt_quota_asgns_rec_tbl(i).attribute10
413 ,x_attribute11 => p_rt_quota_asgns_rec_tbl(i).attribute11
414 ,x_attribute12 => p_rt_quota_asgns_rec_tbl(i).attribute12
415 ,x_attribute13 => p_rt_quota_asgns_rec_tbl(i).attribute13
416 ,x_attribute14 => p_rt_quota_asgns_rec_tbl(i).attribute14
417 ,x_attribute15 => p_rt_quota_asgns_rec_tbl(i).attribute15
418 ,x_last_update_date => G_LAST_UPDATE_DATE
419 ,x_last_updated_by => G_LAST_UPDATED_BY
420 ,x_creation_date => G_CREATION_DATE
421 ,x_created_by => G_CREATED_BY
422 ,x_last_update_login => G_LAST_UPDATE_LOGIN
423 ,x_Program_type => G_program_type,
424 x_object_version_number => x_object_version_number ) ;
425
426 l_rate_date_seq_rec_tbl(i).start_date := p_rt_quota_asgns_rec_tbl(i).start_date;
427 l_rate_date_seq_rec_tbl(i).start_date_old :=
428 p_rt_quota_asgns_rec_tbl(i).start_date_old;
429 l_rate_date_seq_rec_tbl(i).end_date := p_rt_quota_asgns_rec_tbl(i).end_date ;
430 l_rate_date_seq_rec_tbl(i).end_date_old :=p_rt_quota_asgns_rec_tbl(i).end_date_old;
431
432 l_rate_date_seq_rec_tbl(i).quota_id := l_quota_id;
433
434 l_rate_date_seq_rec_tbl(i).rt_quota_asgn_id := l_rt_quota_asgn_id ;
435
436
437
438 ELSIF x_loading_status = 'RT_QUOTA_EXISTS' THEN
439 RAISE FND_API.G_EXC_ERROR ;
440 END IF ;
441 END LOOP;
442
443 -- We need to check one level After than
444
445 -- Check the Sequence, are there any records exists before this
446 -- record, if exists it should be
447
448
449 --FOR I IN 1..l_rate_date_seq_rec_tbl.COUNT
450 --LOOP
451 FOR I IN l_rate_date_seq_rec_tbl.FIRST..l_rate_date_seq_rec_tbl.LAST LOOP
452 IF (( Trunc(l_rate_date_seq_rec_tbl(i).start_date_old)
453 <> Trunc(l_rate_date_seq_rec_tbl(i).start_date) OR
454 Nvl(Trunc(l_rate_date_seq_rec_tbl(i).end_date_old),fnd_api.g_miss_date) <>
455 Nvl(Trunc(l_rate_date_seq_rec_tbl(i).end_date),fnd_api.g_miss_date)))
456 THEN
457
458
459 -- Check the sequence and overlap of the start date and the end date
460
461 cn_chk_plan_element_pkg.chk_rate_quota_iud
462 (
463 x_return_status => x_return_status,
464 p_start_Date => l_rate_date_seq_rec_tbl(i).start_date,
465 p_end_date => l_rate_date_seq_rec_tbl(i).end_date,
466 p_iud_flag => 'U',
467 p_quota_id => l_rate_date_seq_rec_tbl(i).quota_id,
468 p_calc_formula_id => l_calc_formula_id,
469 p_rt_quota_asgn_id => l_rate_date_seq_rec_tbl(i).rt_quota_asgn_id,
470 p_loading_status => x_loading_status,
471 x_loading_status => l_loading_status
472 );
473
474 x_loading_status := l_loading_status;
475 -- Raise an error if the return status is not success
476
477 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
478 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
479 THEN
480 FND_MESSAGE.SET_NAME ('CN' , 'CN_INVALID_DATE_SEQUENCE' );
481 FND_MSG_PUB.Add;
482 END IF;
483 x_loading_status := 'CN_INVALID_DATE_SEQUENCE';
484 RAISE FND_API.G_EXC_ERROR ;
485 END IF;
486 END IF;
487
488 END LOOP;
489 END IF;
490 -- End of API body.
491 -- Standard check of p_commit.
492
493 IF FND_API.To_Boolean( p_commit ) THEN
494 COMMIT WORK;
495 END IF;
496
497 -- Standard call to get message count and if count is 1, get message info.
498
499 FND_MSG_PUB.Count_And_Get
500 (
501 p_count => x_msg_count ,
502 p_data => x_msg_data ,
503 p_encoded => FND_API.G_FALSE
504 );
505 EXCEPTION
506 WHEN FND_API.G_EXC_ERROR THEN
507 ROLLBACK TO create_rt_quota_asgns;
508 x_return_status := FND_API.G_RET_STS_ERROR ;
509 FND_MSG_PUB.Count_And_Get
510 (
511 p_count => x_msg_count ,
512 p_data => x_msg_data ,
513 p_encoded => FND_API.G_FALSE
514 );
515 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
516 ROLLBACK TO create_rt_quota_asgns;
517 x_loading_status := 'UNEXPECTED_ERR';
518 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
519 FND_MSG_PUB.Count_And_Get
520 (
521 p_count => x_msg_count ,
522 p_data => x_msg_data ,
523 p_encoded => FND_API.G_FALSE
524 );
525 WHEN OTHERS THEN
526 ROLLBACK TO create_rt_quota_asgns;
527 x_loading_status := 'UNEXPECTED_ERR';
528 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
529 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
530 THEN
531 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
532 END IF;
533 FND_MSG_PUB.Count_And_Get
534 (
535 p_count => x_msg_count ,
536 p_data => x_msg_data ,
537 p_encoded => FND_API.G_FALSE
538 );
539
540 END Create_rt_quota_Asgns;
541 --|-------------------------------------------------------------------------+
542 --| Procedure Name : Update rt Quota Asgns
543 --|
544 --|-------------------------------------------------------------------------+
545 PROCEDURE Update_rt_quota_asgns
546 (
547 p_api_version IN NUMBER,
548 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
549 p_commit IN VARCHAR2 := FND_API.G_FALSE,
550 p_validation_level IN NUMBER :=
551 FND_API.G_VALID_LEVEL_FULL,
552 x_return_status OUT NOCOPY VARCHAR2,
553 x_msg_count OUT NOCOPY NUMBER,
554 x_msg_data OUT NOCOPY VARCHAR2,
555 p_quota_name IN cn_quotas.name%TYPE,
556 p_org_id IN NUMBER,
557 p_rt_quota_asgns_rec_tbl IN cn_plan_element_pub.rt_quota_asgns_rec_tbl_type
558 := cn_plan_element_pub.g_miss_rt_quota_asgns_rec_tbl,
559 x_loading_status OUT NOCOPY VARCHAR2,
560 x_object_version_number IN OUT NOCOPY NUMBER
561 ) IS
562
563 l_api_name CONSTANT VARCHAR2(30)
564 := 'Update_Rt_Quota_Asgns';
565 l_api_version CONSTANT NUMBER := 1.0;
566 l_rt_quota_asgn_id NUMBER;
567 l_quota_id NUMBER;
568 l_rate_schedule_id NUMBER;
569 l_calc_formula_id NUMBER;
570 l_rate_date_seq_rec_tbl rate_date_seq_rec_tbl_type;
571 l_loading_status VARCHAR2(80);
572
573 BEGIN
574
575 -- Standard Start of API savepoint
576
577 SAVEPOINT Update_Plan_element ;
578
579 -- Standard call to check for call compatibility.
580
581 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
582 p_api_version ,
583 l_api_name ,
584 G_PKG_NAME )
585 THEN
586 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
587 END IF;
588
589
590 -- Initialize message list if p_init_msg_list is set to TRUE.
591
592 IF FND_API.to_Boolean( p_init_msg_list ) THEN
593 FND_MSG_PUB.initialize;
594 END IF;
595
596
597 -- Initialize API return status to success
598
599 x_return_status := FND_API.G_RET_STS_SUCCESS;
600 x_loading_status := 'CN_UPDATED';
601
602
603 -- API body
604 -- Validate the Rate Quota assigns
605
606 IF p_rt_quota_asgns_rec_tbl.COUNT > 0 THEN
607
608 -- check quota name is missing or null, mandatory
609 IF ( (cn_api.chk_miss_char_para
610 ( p_char_para => p_quota_name,
611 p_para_name => CN_CHK_PLAN_ELEMENT_PKG.G_PE_NAME,
612 p_loading_status => x_loading_status,
613 x_loading_status => l_loading_status)) = FND_API.G_TRUE) THEN
614 RAISE FND_API.G_EXC_ERROR ;
615 ELSIF ( (cn_api.chk_null_char_para
616 (p_char_para => p_quota_name,
617 p_obj_name => CN_CHK_PLAN_ELEMENT_PKG.G_PE_NAME,
618 p_loading_status => x_loading_status,
619 x_loading_status => l_loading_status)) = FND_API.G_TRUE ) THEN
620 RAISE FND_API.G_EXC_ERROR ;
621 END IF;
622
623 l_quota_id := cn_chk_plan_element_pkg.get_quota_id(p_quota_name,p_org_id);
624
625 -- get Quota id, if id is null and name is not null then raise an error
626
627 IF (p_quota_name IS NOT NULL
628 AND l_quota_id IS NULL )
629 THEN
630 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
631 THEN
632 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
633 THEN
634 FND_MESSAGE.SET_NAME('CN' , 'CN_PLN_NOT_EXIST');
635 FND_MESSAGE.SET_TOKEN('PE_NAME',p_quota_name);
636 FND_MSG_PUB.Add;
637 END IF;
638 x_loading_status := 'CN_PLN_NOT_EXIST' ;
639 RAISE FND_API.G_EXC_ERROR ;
640 END IF;
641 END IF;
642
643
644 -- loop through if more than one record in the PL/SQL table
645
646 FOR i IN 1..p_rt_quota_asgns_rec_tbl.COUNT LOOP
647
648 -- Validate the new record and get the old id for update
649 Validate_rt_quota_asgns
650 (
651 x_return_status => x_return_status,
652 x_msg_count => x_msg_count,
653 x_msg_data => x_msg_data,
654 p_rt_quota_asgns_rec => p_rt_quota_asgns_rec_tbl(i),
655 p_quota_name => p_quota_name,
656 p_org_id => p_org_id,
657 p_quota_id => l_quota_id,
658 x_rate_schedule_id => l_rate_schedule_id,
659 x_rt_quota_asgn_id => l_rt_quota_asgn_id,
660 x_calc_formula_id => l_calc_formula_id,
661 p_loading_status => x_loading_status,
662 x_loading_status => l_loading_status
663 );
664 x_loading_status := l_loading_status;
665
666 -- Check the Return Status and the Loading Status
667
668 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
669 RAISE FND_API.G_EXC_ERROR ;
670 ELSIF ( x_return_status = FND_API.G_RET_STS_SUCCESS )
671 AND ( x_loading_status = 'CN_UPDATED' )
672 THEN
673 -- Update Rt Quota Assigns
674 CN_RT_QUOTA_ASGNS_PKG.begin_record
675 (x_org_id => p_org_id,
676 x_Operation => 'UPDATE'
677 ,x_Rowid => G_ROWID
678 ,x_rt_quota_asgn_id => l_rt_quota_asgn_id
679 ,x_calc_formula_id => l_calc_formula_id
680 ,x_quota_id => l_quota_id
681 ,x_start_date => p_rt_quota_asgns_rec_tbl(i).start_date
682 ,x_end_date => p_rt_quota_asgns_rec_tbl(i).end_date
683 ,x_rate_schedule_id => l_rate_schedule_id
684 ,x_attribute_category => p_rt_quota_asgns_rec_tbl(i).attribute_category
685 ,x_attribute1 => p_rt_quota_asgns_rec_tbl(i).attribute1
686 ,x_attribute2 => p_rt_quota_asgns_rec_tbl(i).attribute2
687 ,x_attribute3 => p_rt_quota_asgns_rec_tbl(i).attribute3
688 ,x_attribute4 => p_rt_quota_asgns_rec_tbl(i).attribute4
689 ,x_attribute5 => p_rt_quota_asgns_rec_tbl(i).attribute5
690 ,x_attribute6 => p_rt_quota_asgns_rec_tbl(i).attribute6
691 ,x_attribute7 => p_rt_quota_asgns_rec_tbl(i).attribute7
692 ,x_attribute8 => p_rt_quota_asgns_rec_tbl(i).attribute8
693 ,x_attribute9 => p_rt_quota_asgns_rec_tbl(i).attribute9
694 ,x_attribute10 => p_rt_quota_asgns_rec_tbl(i).attribute10
695 ,x_attribute11 => p_rt_quota_asgns_rec_tbl(i).attribute11
696 ,x_attribute12 => p_rt_quota_asgns_rec_tbl(i).attribute12
697 ,x_attribute13 => p_rt_quota_asgns_rec_tbl(i).attribute13
698 ,x_attribute14 => p_rt_quota_asgns_rec_tbl(i).attribute14
699 ,x_attribute15 => p_rt_quota_asgns_rec_tbl(i).attribute15
700 ,x_last_update_date => G_LAST_UPDATE_DATE
701 ,x_last_updated_by => G_LAST_UPDATED_BY
702 ,x_creation_date => G_CREATION_DATE
703 ,x_created_by => G_CREATED_BY
704 ,x_last_update_login => G_LAST_UPDATE_LOGIN
705 ,x_Program_type => G_program_type,
706 x_object_version_number => x_object_version_number ) ;
707
708 l_rate_date_seq_rec_tbl(i).start_date := p_rt_quota_asgns_rec_tbl(i).start_date;
709 l_rate_date_seq_rec_tbl(i).start_date_old :=
710 p_rt_quota_asgns_rec_tbl(i).start_date_old;
711 l_rate_date_seq_rec_tbl(i).end_date := p_rt_quota_asgns_rec_tbl(i).end_date ;
712 l_rate_date_seq_rec_tbl(i).end_date_old :=p_rt_quota_asgns_rec_tbl(i).end_date_old;
713
714 l_rate_date_seq_rec_tbl(i).quota_id := l_quota_id;
715
716 l_rate_date_seq_rec_tbl(i).rt_quota_asgn_id := l_rt_quota_asgn_id ;
717
718 ELSIF x_loading_status = 'RT_QUOTA_EXISTS' THEN
719 RAISE FND_API.G_EXC_ERROR ;
720 END IF ;
721 END LOOP;
722
723 -- We need to check one level After than
724
725 -- Check the Sequence, are there any records exists before this
726 -- record, if exists it should be
727
728
729 FOR I IN 1..l_rate_date_seq_rec_tbl.COUNT
730 LOOP
731
732 IF (( Trunc(l_rate_date_seq_rec_tbl(i).start_date_old)
733 <> Trunc(l_rate_date_seq_rec_tbl(i).start_date) OR
734 Nvl(Trunc(l_rate_date_seq_rec_tbl(i).end_date_old),fnd_api.g_miss_date) <>
735 Nvl(Trunc(l_rate_date_seq_rec_tbl(i).end_date),fnd_api.g_miss_date)))
736 THEN
737
738
739 -- Check the sequence and overlap of the start date and the end date
740
741 cn_chk_plan_element_pkg.chk_rate_quota_iud
742 (
743 x_return_status => x_return_status,
744 p_start_Date => l_rate_date_seq_rec_tbl(i).start_date,
745 p_end_date => l_rate_date_seq_rec_tbl(i).end_date,
746 p_iud_flag => 'U',
747 p_quota_id => l_rate_date_seq_rec_tbl(i).quota_id,
748 p_calc_formula_id => l_calc_formula_id,
749 p_rt_quota_asgn_id => l_rate_date_seq_rec_tbl(i).rt_quota_asgn_id,
750 p_loading_status => x_loading_status,
751 x_loading_status => l_loading_status
752 );
753 x_loading_status := l_loading_status;
754
755
756 -- Raise an error if the return status is not success
757
758 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
759 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
760 THEN
761 FND_MESSAGE.SET_NAME ('CN' , 'CN_INVALID_DATE_SEQUENCE' );
762 FND_MSG_PUB.Add;
763 END IF;
764 x_loading_status := 'CN_INVALID_DATE_SEQUENCE';
765 RAISE FND_API.G_EXC_ERROR ;
766 END IF;
767 END IF;
768
769 END LOOP;
770 END IF;
771 -- End of Update API body.
772 -- Standard check of p_commit.
773
774 IF FND_API.To_Boolean( p_commit ) THEN
775 COMMIT WORK;
776 END IF;
777
778 -- Standard call to get message count and if count is 1, get message info.
779
780 FND_MSG_PUB.Count_And_Get
781 (
782 p_count => x_msg_count ,
783 p_data => x_msg_data ,
784 p_encoded => FND_API.G_FALSE
785 );
786
787 EXCEPTION
788 WHEN FND_API.G_EXC_ERROR THEN
789 ROLLBACK TO update_Plan_element;
790 x_return_status := FND_API.G_RET_STS_ERROR ;
791 FND_MSG_PUB.Count_And_Get
792 (
793 p_count => x_msg_count ,
794 p_data => x_msg_data ,
795 p_encoded => FND_API.G_FALSE
796 );
797 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
798 ROLLBACK TO update_Plan_Element;
799 x_loading_status := 'UNEXPECTED_ERR';
800 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
801 FND_MSG_PUB.Count_And_Get
802 (
803 p_count => x_msg_count ,
804 p_data => x_msg_data ,
805 p_encoded => FND_API.G_FALSE
806 );
807 WHEN OTHERS THEN
808 ROLLBACK TO update_plan_element;
809 x_loading_status := 'UNEXPECTED_ERR';
810 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
811 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
812 THEN
813 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
814 END IF;
815 FND_MSG_PUB.Count_And_Get
816 (
817 p_count => x_msg_count ,
818 p_data => x_msg_data ,
819 p_encoded => FND_API.G_FALSE
820 );
821 END Update_rt_quota_Asgns;
822 --|-------------------------------------------------------------------------+
823 --| Procedure Name : Delete rt Quota Asgns
824 --| Desc: Delete the Rate Quota assgns
825 --|-------------------------------------------------------------------------+
826 PROCEDURE Delete_rt_quota_asgns
827 (
828 p_api_version IN NUMBER,
829 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
830 p_commit IN VARCHAR2 := FND_API.G_FALSE,
831 p_validation_level IN NUMBER :=
832 FND_API.G_VALID_LEVEL_FULL,
833 x_return_status OUT NOCOPY VARCHAR2,
834 x_msg_count OUT NOCOPY NUMBER,
835 x_msg_data OUT NOCOPY VARCHAR2,
836 p_quota_name IN cn_quotas.name%TYPE,
837 p_org_id IN NUMBER,
838 p_rt_quota_asgns_rec_tbl IN cn_plan_element_pub.rt_quota_asgns_rec_tbl_type
839 := cn_plan_element_pub.g_miss_rt_quota_asgns_rec_tbl,
840 x_loading_status OUT NOCOPY VARCHAR2
841
842 ) IS
843
844 l_api_name CONSTANT VARCHAR2(30)
845 := 'Delete_Rt_Quota_Asgns';
846 l_api_version CONSTANT NUMBER := 1.0;
847
848 l_rt_quota_asgn_id NUMBER;
849 l_quota_id NUMBER;
850 l_loading_status VARCHAR2(80);
851 l_object_version_number NUMBER;
852 BEGIN
853 -- Delete RT_QUOTA_ASGNS API, Currently called from Forms Only
854
855 -- Standard Start of API savepoint
856
857 SAVEPOINT Delete_Rt_Quota_Asgns ;
858 --
859 -- Standard call to check for call compatibility.
860 --
861 IF NOT FND_API.Compatible_API_Call ( l_api_version ,
862 p_api_version ,
863 l_api_name ,
864 G_PKG_NAME )
865 THEN
866 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
867 END IF;
868
869 -- Initialize message list if p_init_msg_list is set to TRUE.
870
871 IF FND_API.to_Boolean( p_init_msg_list ) THEN
872 FND_MSG_PUB.initialize;
873 END IF;
874
875 -- Initialize API return status to success
876
877 x_return_status := FND_API.G_RET_STS_SUCCESS;
878 x_loading_status := 'CN_DELETED';
879
880 -- API body
881 -- Validate the Rate Quota assigns
882
883 --
884 -- get the Rt quota Asign ID to Delete the exact record.
885
886 IF p_rt_quota_asgns_rec_tbl.COUNT > 0 THEN
887
888 -- check quota name is missing or null, mandatory
889
890 IF ( (cn_api.chk_miss_char_para
891 ( p_char_para => p_quota_name,
892 p_para_name => CN_CHK_PLAN_ELEMENT_PKG.G_PE_NAME,
893 p_loading_status => x_loading_status,
894 x_loading_status => l_loading_status)) = FND_API.G_TRUE) THEN
895 RAISE FND_API.G_EXC_ERROR ;
896 ELSIF ( (cn_api.chk_null_char_para
897 (p_char_para => p_quota_name,
898 p_obj_name => CN_CHK_PLAN_ELEMENT_PKG.G_PE_NAME,
899 p_loading_status => x_loading_status,
900 x_loading_status => l_loading_status)) = FND_API.G_TRUE ) THEN
901 RAISE FND_API.G_EXC_ERROR ;
902 END IF;
903
904 l_quota_id := cn_chk_plan_element_pkg.get_quota_id(p_quota_name,p_org_id);
905
906 -- get Quota id, if id is null and name is not null then raise an error
907
908 IF (p_quota_name IS NOT NULL
909 AND l_quota_id IS NULL )
910 THEN
911 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
912 THEN
913 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
914 THEN
915 FND_MESSAGE.SET_NAME('CN' , 'CN_PLN_NOT_EXIST');
916 FND_MESSAGE.SET_TOKEN('PE_NAME',p_quota_name);
917 FND_MSG_PUB.Add;
918 END IF;
919 x_loading_status := 'CN_PLN_NOT_EXIST' ;
920 RAISE FND_API.G_EXC_ERROR ;
921 END IF;
922 END IF;
923
924
925 FOR i IN 1..p_rt_quota_asgns_rec_tbl.COUNT
926 LOOP
927
928 -- get rt quota Assign ID to delete the record
929
930 l_rt_quota_asgn_id := cn_chk_plan_element_pkg.get_rt_quota_asgn_id
931 (
932 p_quota_id => l_quota_id,
933 p_rate_schedule_id => cn_api.get_rate_table_id(
934 p_rt_quota_asgns_rec_tbl(i).rate_schedule_name,p_rt_quota_asgns_rec_tbl(i).org_id),
935 p_calc_formula_id => cn_chk_plan_element_pkg.get_calc_formula_id(
936 p_rt_quota_asgns_rec_tbl(i).calc_formula_name,p_org_id),
937 p_start_date => p_rt_quota_asgns_rec_tbl(i).start_date,
938 p_end_date => p_rt_quota_asgns_rec_tbl(i).end_date
939 );
940
941 -- if rate_quota_assign_id is NULL then Unable to find the record from database
942
943 IF l_rt_quota_asgn_id IS NULL THEN
944 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
945 THEN
946 FND_MESSAGE.SET_NAME ('CN' , 'CN_RT_QUOTA_NOT_EXISTS');
947 FND_MESSAGE.SET_TOKEN('QUOTA_NAME',p_quota_name);
948 FND_MESSAGE.SET_TOKEN('RATE_SCHEDULE_NAME',p_rt_quota_asgns_rec_tbl(i).rate_schedule_name );
949 FND_MESSAGE.SET_TOKEN('START_DATE',p_rt_quota_asgns_rec_tbl(i).start_date );
950 FND_MSG_PUB.Add;
951 END IF;
952 x_loading_status := 'RT_QUOTA_NOT_EXISTS';
953 RAISE FND_API.G_EXC_ERROR ;
954 END IF;
955
956 -- Check wheather delete is Allowed, this only first and last record can be deleted
957
958 cn_chk_plan_element_pkg.chk_rate_quota_iud
959 (
960 x_return_status => x_return_status,
961 p_start_Date => p_rt_quota_asgns_rec_tbl(i).start_date,
962 p_end_date => p_rt_quota_asgns_rec_tbl(i).end_date,
963 p_iud_flag => 'D',
964 p_quota_id => l_quota_id,
965 p_calc_formula_id => cn_chk_plan_element_pkg.get_calc_formula_id(
966 p_rt_quota_asgns_rec_tbl(i).calc_formula_name,p_org_id),
967 p_rt_quota_asgn_id => l_rt_quota_asgn_id,
968 p_loading_status => x_loading_status,
969 x_loading_status => l_loading_status
970 );
971 x_loading_status := l_loading_status;
972
973 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
974 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
975 THEN
976 FND_MESSAGE.SET_NAME ('CN' , 'CN_RATE_DELETE_NOT_ALLOWED' );
977 FND_MSG_PUB.Add;
978 END IF;
979 x_loading_status := 'CN_RATE_DELETE_NOT_ALLOWED';
980 RAISE FND_API.G_EXC_ERROR ;
981 END IF;
982
983 -- If the the status is success and the lasding status is CN_DELETED then
984 -- delete the record.
985 IF ( x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
986 RAISE FND_API.G_EXC_ERROR ;
987 ELSIF ( x_return_status = FND_API.G_RET_STS_SUCCESS )
988 AND ( x_loading_status = 'CN_DELETED' )
989 THEN
990 -- Delete RT quota Assigns
991 CN_RT_QUOTA_ASGNS_PKG.begin_record
992 (x_org_id => p_org_id,
993 x_Operation => 'DELETE'
994 ,x_Rowid => G_ROWID
995 ,x_rt_quota_asgn_id => l_rt_quota_asgn_id
996 ,x_calc_formula_id => NULL
997 ,x_quota_id => NULL
998 ,x_start_date => NULL
999 ,x_end_date => NULL
1000 ,x_rate_schedule_id => NULL
1001 ,x_attribute_category => NULL
1002 ,x_attribute1 => NULL
1003 ,x_attribute2 => NULL
1004 ,x_attribute3 => NULL
1005 ,x_attribute4 => NULL
1006 ,x_attribute5 => NULL
1007 ,x_attribute6 => NULL
1008 ,x_attribute7 => NULL
1009 ,x_attribute8 => NULL
1010 ,x_attribute9 => NULL
1011 ,x_attribute10 => NULL
1012 ,x_attribute11 => NULL
1013 ,x_attribute12 => NULL
1014 ,x_attribute13 => NULL
1015 ,x_attribute14 => NULL
1016 ,x_attribute15 => NULL
1017 ,x_last_update_date => NULL
1018 ,x_last_updated_by => NULL
1019 ,x_creation_date => NULL
1020 ,x_created_by => NULL
1021 ,x_last_update_login => NULL
1022 ,x_Program_type => NULL,
1023 x_object_version_number => l_object_version_number) ;
1024 ELSE
1025 RAISE FND_API.G_EXC_ERROR ;
1026 END IF ;
1027 END LOOP;
1028 END IF;
1029
1030 -- End of Delete API body.
1031 -- Standard check of p_commit.
1032
1033 IF FND_API.To_Boolean( p_commit ) THEN
1034 COMMIT WORK;
1035 END IF;
1036
1037
1038 -- Standard call to get message count and if count is 1, get message info.
1039
1040 FND_MSG_PUB.Count_And_Get
1041 (
1042 p_count => x_msg_count ,
1043 p_data => x_msg_data ,
1044 p_encoded => FND_API.G_FALSE
1045 );
1046
1047 EXCEPTION
1048 WHEN FND_API.G_EXC_ERROR THEN
1049 ROLLBACK TO delete_rt_quota_asgns;
1050 x_return_status := FND_API.G_RET_STS_ERROR ;
1051 FND_MSG_PUB.Count_And_Get
1052 (
1053 p_count => x_msg_count ,
1054 p_data => x_msg_data ,
1055 p_encoded => FND_API.G_FALSE
1056 );
1057 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1058 ROLLBACK TO delete_rt_quota_asgns;
1059 x_loading_status := 'UNEXPECTED_ERR';
1060 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1061 FND_MSG_PUB.Count_And_Get
1062 (
1063 p_count => x_msg_count ,
1064 p_data => x_msg_data ,
1065 p_encoded => FND_API.G_FALSE
1066 );
1067 WHEN OTHERS THEN
1068 ROLLBACK TO delete_rt_quota_asgns;
1069 x_loading_status := 'UNEXPECTED_ERR';
1070 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1071 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1072 THEN
1073 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME ,l_api_name );
1074 END IF;
1075 FND_MSG_PUB.Count_And_Get
1076 (
1077 p_count => x_msg_count ,
1078 p_data => x_msg_data ,
1079 p_encoded => FND_API.G_FALSE
1080 );
1081 END Delete_rt_quota_Asgns;
1082
1083 END CN_RT_QUOTA_ASGNS_PVT ;