DBA Data[Home] [Help]

PACKAGE BODY: APPS.CE_INTEREST_SCHED_PKG

Source


1 package body CE_INTEREST_SCHED_PKG  as
2 /* $Header: ceintscb.pls 120.1 2005/07/29 20:42:04 lkwan ship $ */
3 
4   l_DEBUG varchar2(1) := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
5 --  l_DEBUG varchar2(1) := 'Y';
6 
7 --
8 -- cursor used when update/delete schedule or remove/add accounts to schedule
9 --
10   CURSOR SCHED_XTR_ACCTS(P_INTEREST_SCHEDULE_ID NUMBER,
11 		         P_BANK_ACCOUNT_ID 	NUMBER)  IS
12 	SELECT BA.BANK_ACCOUNT_ID
13 	FROM CE_BANK_ACCT_USES_ALL  	BAU
14 	  , CE_BANK_ACCOUNTS		BA
15 	WHERE
16 	  BA.BANK_ACCOUNT_ID 	    = BAU.BANK_ACCOUNT_ID
17 	AND BAU.XTR_USE_ENABLE_FLAG = 'Y'
18 	AND BA.INTEREST_SCHEDULE_ID = P_INTEREST_SCHEDULE_ID
19 	AND BA.BANK_ACCOUNT_ID      = NVL(P_BANK_ACCOUNT_ID, BA.BANK_ACCOUNT_ID);
20 
21 /* --------------------------------------------------------------------
22 |  PRIVATE PROCEDURE                                                    |
23 |      xtr_schedule_update
24 |                                                                       |
25 |  CALLED BY                                                            |
26 |      update_schedule, remove_schedule_account, assign_schedule_account|
27 |                                                                       |
28 |  DESCRIPTION                                                          |
29 |      call xtr API when schedule related information has changed
30 |      Following API needs to be called when
31 |	-added a Treasury Bank account to an interest schedule
32 | 	-removed a treasury Bank account from an interest schedule.
33 |	-updated interest schedule information that is attached to a
34 | 		treasury bank account
35  --------------------------------------------------------------------- */
36 PROCEDURE  xtr_schedule_update(p_ce_bank_account_id 	IN 	number,
37 			   	p_interest_rounding 	IN 	varchar2,
38 				p_interest_includes 	IN 	varchar2,
39 				p_basis 		IN 	varchar2,
40 				p_day_count_basis 	IN 	varchar2,
41 				x_return_status 	   OUT NOCOPY varchar2,
42 				x_msg_count	 	   OUT NOCOPY number,
43 				x_msg_data	 	   OUT NOCOPY varchar2
44 			) IS
45   BEGIN
46   IF l_DEBUG in ('Y', 'C') THEN
47   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.xtr_schedule_update');
48   END IF;
49 
50   IF (p_ce_bank_account_id is not null ) THEN
51 
52     XTR_REPLICATE_BANK_ACCOUNTS_P.REPLICATE_INTEREST_SCHEDULES
53 		( p_ce_bank_account_id   	=> p_ce_bank_account_id,
54 		  p_interest_rounding 	 	=> p_interest_rounding ,
55 		  p_interest_includes 		=>  p_interest_includes,
56                   p_interest_calculation_basis 	=>  p_basis,
57                   p_day_count_basis 		=>  p_day_count_basis,
58                   x_return_status    		=>  x_return_status,
59                   x_msg_count     		=>  x_msg_count,
60                   x_msg_data     		=>  x_msg_data);
61 
62   ELSE
63     IF l_DEBUG in ('Y', 'C') THEN
64     	cep_standard.debug('EXCEPTION: CE_INTEREST_SCHED_PKG.xtr_schedule_update p_ce_bank_account_id missing');
65     END IF;
66     FND_MESSAGE.Set_Name('CE', 'CE_BANK_ACCOUNT_ID_MISSING');
67     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.xtr_schedule_update');
68     fnd_msg_pub.add;
69   END IF;
70 
71   IF l_DEBUG in ('Y', 'C') THEN
72   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.xtr_schedule_update');
73   END IF;
74 
75 EXCEPTION
76   when others then
77     IF l_DEBUG in ('Y', 'C') THEN
78     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.xtr_schedule_update');
79     END IF;
80     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
81     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.xtr_schedule_update');
82     fnd_msg_pub.add;
83 END xtr_schedule_update;
84 
85 /* --------------------------------------------------------------------
86 |  PRIVATE PROCEDURE                                                    |
87 |      remove_schedule_account	                                        |
88 |                                                                       |
89 |  CALLED BY                                                            |
90 |      InterestAMImpl (ScheduleBankAcctPG/CO)                           |
91 |      delete_schedule                                                  |
92 |                                                                       |
93 |  DESCRIPTION                                                          |
94 |      remove bank accounts that has been assign to schedule		|
95 |        CE_BANK_ACCOUNTS			                        |
96  --------------------------------------------------------------------- */
97 PROCEDURE  remove_schedule_account(p_interest_schedule_id IN	number,
98 				   p_bank_account_id 	  IN	number,
99 			      	   x_return_status        IN OUT NOCOPY VARCHAR2,
100     			      	   x_msg_count               OUT NOCOPY NUMBER,
101 			      	   x_msg_data                OUT NOCOPY VARCHAR2
102 		)  IS
103 
104  x_bank_account_id  	NUMBER;
105  BEGIN
106   IF l_DEBUG in ('Y', 'C') THEN
107   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.remove_schedule_account');
108   END IF;
109   -- initialize API return status to success.
110   x_return_status := fnd_api.g_ret_sts_success;
111 
112   IF (p_interest_schedule_id is not null and p_bank_account_id is not null)  THEN
113     UPDATE CE_BANK_ACCOUNTS
114     SET INTEREST_SCHEDULE_ID = NULL
115     WHERE INTEREST_SCHEDULE_ID = p_interest_schedule_id
116     and  BANK_ACCOUNT_ID = p_bank_account_id;
117   ELSIF (p_interest_schedule_id is not null and p_bank_account_id is null) THEN
118     UPDATE CE_BANK_ACCOUNTS
119     SET INTEREST_SCHEDULE_ID = NULL
120     WHERE INTEREST_SCHEDULE_ID = p_interest_schedule_id;
121 
122   END IF;
123 
124   IF (p_interest_schedule_id is not null ) THEN
125     OPEN SCHED_XTR_ACCTS(p_interest_schedule_id, p_bank_account_id);
126     LOOP
127       FETCH SCHED_XTR_ACCTS into   X_BANK_ACCOUNT_ID;
128       EXIT WHEN sched_xtr_accts%NOTFOUND OR sched_xtr_accts%NOTFOUND IS NULL;
129 
130 	xtr_schedule_update(p_ce_bank_account_id 	=> X_BANK_ACCOUNT_ID,
131 			   	p_interest_rounding 	=> null,
132 				p_interest_includes 	=> null,
133 				p_basis 		=> null,
134 				p_day_count_basis 	=> null,
135 				x_return_status 	=> x_return_status,
136 				x_msg_count	 	=> x_msg_count,
137 				x_msg_data	 	=> x_msg_data);
138     END LOOP; -- SCHED_XTR_ACCTS
139     CLOSE SCHED_XTR_ACCTS;
140   END IF;
141   FND_MSG_PUB.Count_And_Get(
142                 p_encoded => FND_API.G_FALSE,
143                 p_count => x_msg_count,
144                 p_data  => x_msg_data);
145 
146   IF x_msg_count > 0 THEN
147       x_return_status := fnd_api.g_ret_sts_error;
148   END IF;
149 
150 
151   IF l_DEBUG in ('Y', 'C') THEN
152   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.remove_schedule_account');
153   END IF;
154 
155 EXCEPTION
156   when others then
157     IF l_DEBUG in ('Y', 'C') THEN
158     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.remove_schedule_account');
159     END IF;
160     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
161     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.remove_schedule_account');
162     fnd_msg_pub.add;
163 END remove_schedule_account;
164 
165 /* --------------------------------------------------------------------
166 |  PRIVATE PROCEDURE                                                    |
167 |      assign_schedule_account	                                        |
168 |                                                                       |
169 |  CALLED BY                                                            |
170 |      InterestAMImpl (ScheduleBankAcctPG/CO)                           |
171 |                                                                       |
172 |  DESCRIPTION                                                          |
173 |      assign bank accounts for the interest schedule			|
174 |        CE_BANK_ACCOUNTS			                        |
175  --------------------------------------------------------------------- */
176 PROCEDURE  assign_schedule_account(p_interest_schedule_id IN 	number,
177 				   p_bank_account_id 	  IN	number,
178 			   	   p_basis 		  IN 	varchar2,
179 			   	   p_interest_includes 	  IN 	varchar2,
180 			   	   p_interest_rounding 	  IN 	varchar2,
181 			  	   p_day_count_basis 	  IN 	varchar2,
182 			      	   x_return_status        IN OUT NOCOPY VARCHAR2,
183     			      	   x_msg_count               OUT NOCOPY NUMBER,
184 			      	   x_msg_data                OUT NOCOPY VARCHAR2
185 				)  IS
186 
187  x_bank_account_id  	NUMBER;
188  x_ba_count	  	NUMBER;
189 BEGIN
190   IF l_DEBUG in ('Y', 'C') THEN
191   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.assign_schedule_account');
192   END IF;
193   -- initialize API return status to success.
194   x_return_status := fnd_api.g_ret_sts_success;
195 
196   IF (p_interest_schedule_id is not null ) THEN
197     SELECT count(1)
198     into x_ba_count
199     from  CE_BANK_ACCOUNTS
200     WHERE
201       nvl(interest_schedule_id, 1) =  p_interest_schedule_id
202     and bank_account_id = p_bank_account_id;
203 
204     IF (x_ba_count > 0)  THEN
205       FND_MESSAGE.Set_Name('CE', 'CE_ACCT_IS_ASSIGNED');
206       --FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.assign_schedule_account');
207       fnd_msg_pub.add;
208     ELSE
209       UPDATE CE_BANK_ACCOUNTS
210       SET INTEREST_SCHEDULE_ID = p_interest_schedule_id
211       WHERE INTEREST_SCHEDULE_ID is null
212       and  BANK_ACCOUNT_ID = p_bank_account_id;
213 
214       OPEN SCHED_XTR_ACCTS(p_interest_schedule_id,  p_bank_account_id);
215       LOOP
216         FETCH SCHED_XTR_ACCTS into   X_BANK_ACCOUNT_ID;
217         EXIT WHEN sched_xtr_accts%NOTFOUND OR sched_xtr_accts%NOTFOUND IS NULL;
218 
219 	  xtr_schedule_update(p_ce_bank_account_id 	=> X_BANK_ACCOUNT_ID,
220 			   	p_interest_rounding 	=> p_interest_rounding,
221 				p_interest_includes 	=> p_interest_includes,
222 				p_basis 		=> p_basis,
223 				p_day_count_basis 	=> p_day_count_basis,
224 				x_return_status 	=> x_return_status,
225 				x_msg_count	 	=> x_msg_count,
226 				x_msg_data	 	=> x_msg_data);
227       END LOOP; -- SCHED_XTR_ACCTS
228       CLOSE SCHED_XTR_ACCTS;
229 
230     END IF;
231   ELSE
232     IF l_DEBUG in ('Y', 'C') THEN
233     	cep_standard.debug('EXCEPTION: CE_INTEREST_SCHED_PKG.assign_schedule_account INTEREST_SCHEDULE_ID missing');
234     END IF;
235     FND_MESSAGE.Set_Name('CE', 'CE_INT_SCHED_ID_MISSING');
236     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.assign_schedule_account');
237     fnd_msg_pub.add;
238   END IF;
239 
240   FND_MSG_PUB.Count_And_Get(
241                 p_encoded => FND_API.G_FALSE,
242                 p_count => x_msg_count,
243                 p_data  => x_msg_data);
244 
245   IF x_msg_count > 0 THEN
246       x_return_status := fnd_api.g_ret_sts_error;
247   END IF;
248 
249   IF l_DEBUG in ('Y', 'C') THEN
250   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.assign_schedule_account');
251   END IF;
252 
253 EXCEPTION
254   when others then
255     IF l_DEBUG in ('Y', 'C') THEN
256     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.assign_schedule_account');
257     END IF;
258     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
259     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.assign_schedule_account');
260     fnd_msg_pub.add;
261 END assign_schedule_account;
262 
263 /* --------------------------------------------------------------------
264 |  PRIVATE PROCEDURE                                                    |
265 |      delete_interest_rates
266 |                                                                       |
267 |  CALLED BY                                                            |
268 |      InterestAMImpl (populateIntRate)    	                        |
269 |      delete_schedule                                                  |
270 |  DESCRIPTION                                                          |
271 |      delete interest_rates from
272 |        CE_INTEREST_RATES			                        |
273  --------------------------------------------------------------------- */
274 PROCEDURE  delete_interest_rates(p_interest_schedule_id number,
275 				 p_effective_date date) IS
276 
277  x_bank_account_id  	NUMBER;
278  x_interest_rate_count 	NUMBER;
279  BEGIN
280   IF l_DEBUG in ('Y', 'C') THEN
281   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.delete_interest_rates');
282   END IF;
283 
284   IF (p_effective_date is not null) THEN
285     select count(*)
286     into x_interest_rate_count
287     from  CE_INTEREST_RATES
288       WHERE BALANCE_RANGE_ID in (SELECT BALANCE_RANGE_ID FROM CE_INTEREST_BAL_RANGES
289 				WHERE INTEREST_SCHEDULE_ID = p_interest_schedule_id)
293     IF (x_interest_rate_count < 1) THEN
290       and EFFECTIVE_DATE = p_effective_date;
291 
292     -- make sure at least one transaction exist
294 
295       FND_MESSAGE.Set_Name('CE', 'CE_INT_RATE_DATE_NOT_EXIST');
296       FND_MESSAGE.Set_Token('EFFECTIVE_DATE',p_effective_date );
297       fnd_msg_pub.add;
298     END IF;
299   END IF;
300   IF (p_interest_schedule_id is not null and p_effective_date is not null)  THEN
301     DELETE FROM CE_INTEREST_RATES
302     WHERE BALANCE_RANGE_ID in (SELECT BALANCE_RANGE_ID FROM CE_INTEREST_BAL_RANGES
303 				WHERE INTEREST_SCHEDULE_ID = p_interest_schedule_id)
304     and EFFECTIVE_DATE = p_effective_date;
305 
306   ELSIF (p_interest_schedule_id is not null and p_effective_date is  null)  THEN
307     DELETE FROM CE_INTEREST_RATES
308     WHERE BALANCE_RANGE_ID in (SELECT BALANCE_RANGE_ID FROM CE_INTEREST_BAL_RANGES
309 				WHERE INTEREST_SCHEDULE_ID = p_interest_schedule_id);
310 
311   END IF;
312 
313 
314   IF l_DEBUG in ('Y', 'C') THEN
315   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.delete_interest_rates');
316   END IF;
317 
318 EXCEPTION
319   when others then
320     IF l_DEBUG in ('Y', 'C') THEN
321     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.delete_interest_rates');
322     END IF;
323     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
324     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.delete_interest_rates');
325     fnd_msg_pub.add;
326 END delete_interest_rates;
327 /* --------------------------------------------------------------------
328 |  PRIVATE PROCEDURE                                                    |
329 |      delete_bal_ranges;
330 |                                                                       |
331 |  CALLED BY                                                            |
332 |      delete_schedule
333 |                                                                       |
334 |  DESCRIPTION                                                          |
335 |      delete all balance ranges for a schedule
336 |
337  --------------------------------------------------------------------- */
338 PROCEDURE  delete_bal_ranges(  	p_interest_schedule_id number) IS
339   BEGIN
340   IF l_DEBUG in ('Y', 'C') THEN
341   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.delete_bal_ranges');
342   END IF;
343 
344   IF (p_interest_schedule_id is not null)  THEN
345     DELETE FROM CE_INTEREST_BAL_RANGES
346     WHERE INTEREST_SCHEDULE_ID = p_interest_schedule_id;
347 
348   END IF;
349 
350   IF l_DEBUG in ('Y', 'C') THEN
351   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.delete_bal_ranges');
352   END IF;
353 
354 EXCEPTION
355   when others then
356     IF l_DEBUG in ('Y', 'C') THEN
357     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.delete_bal_ranges');
358     END IF;
359     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
360     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.delete_bal_ranges');
361     fnd_msg_pub.add;
362 END delete_bal_ranges;
363 
364 /* --------------------------------------------------------------------
365 |  PRIVATE PROCEDURE                                                    |
366 |      delete_schedule
367 |                                                                       |
368 |  CALLED BY                                                            |
369 |      InterestAMImpl (deleteIntSchedInfo)    	                        |
370 |                                                                       |
371 |  DESCRIPTION                                                          |
372 |      delete all schedule related information
373 |
374  --------------------------------------------------------------------- */
375 PROCEDURE  delete_schedule(p_interest_schedule_id IN	number,
376 			   x_return_status	  IN OUT NOCOPY VARCHAR2,
377     			   x_msg_count      	     OUT NOCOPY NUMBER,
378 			   x_msg_data       	     OUT NOCOPY VARCHAR2
379 		) IS
380 p_effective_date date ;
381 p_bank_account_id number;
382   BEGIN
383   IF l_DEBUG in ('Y', 'C') THEN
384   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.delete_schedule');
385   END IF;
386   -- initialize API return status to success.
387   x_return_status := fnd_api.g_ret_sts_success;
388 
389   p_effective_date  := null;
390   p_bank_account_id := null;
391   IF (p_interest_schedule_id is not null ) THEN
392 
393     --deleteIntSchedule(interestScheduleId);
394     -- handle in OA
395     --deleteIntBalRanges(interestScheduleId);
396     delete_bal_ranges(p_interest_schedule_id);
397 
398     --deleteIntRate(interestScheduleId);
399     delete_interest_rates(p_interest_schedule_id, p_effective_date);
400 
401     --deleteIntBankAcct(interestScheduleId);
402     remove_schedule_account(p_interest_schedule_id, p_bank_account_id,
403 				 x_return_status,
404     			      	 x_msg_count,
405 			      	 x_msg_data);
406 
407   ELSE
408     IF l_DEBUG in ('Y', 'C') THEN
409     	cep_standard.debug('EXCEPTION: CE_INTEREST_SCHED_PKG.delete_schedule INTEREST_SCHEDULE_ID missing');
410     END IF;
411     FND_MESSAGE.Set_Name('CE', 'CE_INT_SCHED_ID_MISSING');
412     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.delete_schedule');
413     fnd_msg_pub.add;
414   END IF;
415 
416   FND_MSG_PUB.Count_And_Get(
417                 p_encoded => FND_API.G_FALSE,
418                 p_count => x_msg_count,
419                 p_data  => x_msg_data);
420 
421   IF x_msg_count > 0 THEN
422       x_return_status := fnd_api.g_ret_sts_error;
423   END IF;
424 
425   IF l_DEBUG in ('Y', 'C') THEN
426   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.delete_schedule');
427   END IF;
428 
429 EXCEPTION
433     END IF;
430   when others then
431     IF l_DEBUG in ('Y', 'C') THEN
432     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.delete_schedule');
434     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
435     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.delete_schedule');
436     fnd_msg_pub.add;
437 END delete_schedule;
438 
439 /* --------------------------------------------------------------------
440 |  PRIVATE PROCEDURE                                                    |
441 |      update_schedule
442 |                                                                       |
443 |  CALLED BY                                                            |
444 |      InterestAMImpl (updateIntSchedInfo)    	                        |
445 |                                                                       |
446 |  DESCRIPTION                                                          |
447 |      call xtr API when schedule related information has changed
448 |
449  --------------------------------------------------------------------- */
450 PROCEDURE  update_schedule(p_interest_schedule_id IN 	number,
451 			   p_basis 		  IN 	varchar2,
452 			   p_interest_includes 	  IN 	varchar2,
453 			   p_interest_rounding 	  IN 	varchar2,
454 			   p_day_count_basis 	  IN 	varchar2,
455 			   x_return_status	  IN OUT NOCOPY VARCHAR2,
456     			   x_msg_count      	     OUT NOCOPY NUMBER,
457 			   x_msg_data       	     OUT NOCOPY VARCHAR2
458 		) IS
459 
460   X_DAY_COUNT_BASIS	VARCHAR(30);
461   X_INTEREST_INCLUDES	VARCHAR(30);
462   X_INTEREST_ROUNDING	VARCHAR(30);
463   X_BASIS		VARCHAR(30);
464   X_BANK_ACCOUNT_ID	NUMBER;
465   --X_return_status
466 
467   BEGIN
468   IF l_DEBUG in ('Y', 'C') THEN
469   	 cep_standard.debug('>> CE_INTEREST_SCHED_PKG.update_schedule');
470   END IF;
471   -- initialize API return status to success.
472   x_return_status := fnd_api.g_ret_sts_success;
473 
474   IF (p_interest_schedule_id is not null ) THEN
475 
476     select
477       DAY_COUNT_BASIS,
478       INTEREST_INCLUDES,
479       INTEREST_ROUNDING,
480       BASIS
481     into
482       X_DAY_COUNT_BASIS,
483       X_INTEREST_INCLUDES,
484       X_INTEREST_ROUNDING,
485       X_BASIS
486     from ce_interest_schedules
487     where INTEREST_SCHEDULE_ID = p_interest_schedule_id;
488 
489 
490     IF ((X_DAY_COUNT_BASIS <> p_day_count_basis ) or
491         (X_INTEREST_INCLUDES <> p_interest_includes) or
492         (X_INTEREST_ROUNDING <> p_interest_rounding) or
493         (X_BASIS  <> p_basis )) THEN
494 
495       OPEN SCHED_XTR_ACCTS(p_interest_schedule_id, null);
496       LOOP
497         FETCH SCHED_XTR_ACCTS into   X_BANK_ACCOUNT_ID;
498         EXIT WHEN sched_xtr_accts%NOTFOUND OR sched_xtr_accts%NOTFOUND IS NULL;
499 
500 	  xtr_schedule_update(p_ce_bank_account_id 	=> X_BANK_ACCOUNT_ID,
501 			   	p_interest_rounding 	=> p_interest_rounding,
502 				p_interest_includes 	=> p_interest_includes,
503 				p_basis 		=> p_basis,
504 				p_day_count_basis 	=> p_day_count_basis,
505 				x_return_status 	=> x_return_status,
506 				x_msg_count	 	=> x_msg_count,
507 				x_msg_data	 	=> x_msg_data);
508 
509       END LOOP; -- SCHED_XTR_ACCTS
510       CLOSE SCHED_XTR_ACCTS;
511 
512     END IF;
513   ELSE
514     IF l_DEBUG in ('Y', 'C') THEN
515     	cep_standard.debug('EXCEPTION: CE_INTEREST_SCHED_PKG.update_schedule INTEREST_SCHEDULE_ID missing');
516     END IF;
517     FND_MESSAGE.Set_Name('CE', 'CE_INT_SCHED_ID_MISSING');
518     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.update_schedule');
519     fnd_msg_pub.add;
520   END IF;
521 
522   FND_MSG_PUB.Count_And_Get(
523                 p_encoded => FND_API.G_FALSE,
524                 p_count => x_msg_count,
525                 p_data  => x_msg_data);
526 
527   IF x_msg_count > 0 THEN
528       x_return_status := fnd_api.g_ret_sts_error;
529   END IF;
530 
531   IF l_DEBUG in ('Y', 'C') THEN
532   	 cep_standard.debug('<< CE_INTEREST_SCHED_PKG.update_schedule');
533   END IF;
534 
535 EXCEPTION
536   when others then
537     IF l_DEBUG in ('Y', 'C') THEN
538     	cep_standard.debug('EXCEPTION:  CE_INTEREST_SCHED_PKG.update_schedule');
539     END IF;
540     FND_MESSAGE.Set_Name('CE', 'CE_UNHANDLED_EXCEPTION');
541     FND_MESSAGE.Set_Token('PROCEDURE', 'CE_INTEREST_SCHED_PKG.update_schedule');
542     fnd_msg_pub.add;
543 END update_schedule;
544 
545 END CE_INTEREST_SCHED_PKG;