DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CREATE_ADJST_PVT

Source


1 PACKAGE BODY okl_create_adjst_pvt AS
2 /* $Header: OKLROCAB.pls 120.10.12010000.2 2008/09/25 17:54:51 apaul ship $ */
3 -- Start of wraper code generated automatically by Debug code generator
4   L_MODULE VARCHAR2(40) := 'LEASE.RECEIVABLES.ADJUSTMENTS';
5   L_DEBUG_ENABLED CONSTANT VARCHAR2(10) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6   L_LEVEL_PROCEDURE NUMBER;
7   IS_DEBUG_PROCEDURE_ON BOOLEAN;
8 -- End of wraper code generated automatically by Debug code generator
9 ---------------------------------------------------------------------------
10 -- PROCEDURE create_adjustments
11 ---------------------------------------------------------------------------
12 /*===========================================================================+
13  | PROCEDURE                                                                 |
14  |              create_adjustments                                           |
15  |                                                                           |
16  | DESCRIPTION                                                               |
17  |              This is the main routine to create an adjustment in AR       |
18  |                                                                           |
19  | SCOPE - PRIVATE                                                           |
20  |                                                                           |
21  | NOTES                                                                     |
22  |                                                                           |
23  | MODIFICATION HISTORY                                                      |
24  |    Bruno Vaghela  16-AUG-02  Created                                      |
25  |    18-Jul-2006 dkagrawa  Bug 5378114 MOAC changes                         |
26  +===========================================================================*/
27 
28 PROCEDURE create_adjustments   ( p_api_version  IN  NUMBER
29                   ,p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE
30                                 ,x_return_status  OUT NOCOPY VARCHAR2
31                                 ,x_msg_count  OUT NOCOPY NUMBER
32                                 ,x_msg_data      OUT NOCOPY VARCHAR2
33                                 )IS
34 
35 ------------------------------
36 -- DECLARE Local variables
37 ------------------------------
38 
39 l_api_version               NUMBER DEFAULT 1.0;
40 l_init_msg_list             VARCHAR2(1) ;
41 l_return_status        VARCHAR2(1);
42 l_msg_count        NUMBER;
43 l_msg_data        VARCHAR2(2000);
44 
45 l_type                      CONSTANT AR_ADJUSTMENTS.TYPE%TYPE := 'INVOICE';
46 l_created_from              CONSTANT AR_ADJUSTMENTS.CREATED_FROM%TYPE := 'ADJ-API';
47 
48 l_adjsts_lns_id             OKL_TXL_ADJSTS_LNS_B.ID%TYPE;
49 l_new_adj_id                OKL_TXL_ADJSTS_LNS_B.RECEIVABLES_ADJUSTMENT_ID%TYPE;
50 
51 l_payment_schedule_id       AR_ADJUSTMENTS.PAYMENT_SCHEDULE_ID%TYPE;
52 l_contract_number        OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE DEFAULT NULL;
53 l_amount                    AR_ADJUSTMENTS.AMOUNT%TYPE;
54 
55 l_receivables_trx_id        AR_ADJUSTMENTS.RECEIVABLES_TRX_ID%TYPE;
56 l_receivables_trx_name      AR_RECEIVABLES_TRX_ALL.NAME%TYPE;
57 
58 l_code_combination_id       AR_ADJUSTMENTS.CODE_COMBINATION_ID%TYPE;
59 l_apply_date                AR_ADJUSTMENTS.APPLY_DATE%TYPE;
60 l_gl_date                   AR_ADJUSTMENTS.GL_DATE%TYPE;
61 l_adjustment_reason_code    AR_ADJUSTMENTS.REASON_CODE%TYPE;
62 l_comments                  AR_ADJUSTMENTS.COMMENTS%TYPE;
63 
64 l_set_of_books_id           AR_ADJUSTMENTS.SET_OF_BOOKS_ID%TYPE DEFAULT NULL;
65 
66 x_new_adj_id                AR_ADJUSTMENTS.ADJUSTMENT_ID%TYPE;
67 x_new_adj_number        AR_ADJUSTMENTS.ADJUSTMENT_NUMBER%TYPE;
68 
69 l_org_id                    NUMBER DEFAULT MO_GLOBAL.GET_CURRENT_ORG_ID();
70 
71 ------------------------------
72 -- DECLARE Record/Table Types
73 ------------------------------
74 
75 l_adj_rec                   ar_adjustments%rowtype;
76 l_ajlv_rec                  ajlv_rec_type;
77 x_ajlv_rec                  ajlv_rec_type;
78 
79 ------------------------------
80 -- DECLARE Exceptions
81 ------------------------------
82 
83 
84 ------------------------------
85 -- DECLARE Cursors
86 ------------------------------
87 
88 CURSOR c_get_adjustments IS
89 SELECT a.APPLY_DATE
90       ,a.GL_DATE
91       ,a.ADJUSTMENT_REASON_CODE
92       ,a.COMMENTS
93       ,b.ID
94       ,b.PSL_ID
95       ,b.AMOUNT
96       ,b.CODE_COMBINATION_ID
97 FROM   okl_trx_ar_adjsts_v a, okl_txl_adjsts_lns_v b
98 WHERE  a.id = b.adj_id
99 AND    b.receivables_adjustment_id IS NULL;
100 
101 
102 ------------------------------
103 
104 CURSOR c_get_receivables_trx_id (cp_set_of_books_id IN NUMBER) IS
105 SELECT RECEIVABLES_TRX_ID, NAME
106 FROM   ar_receivables_trx_all
107 WHERE  set_of_books_id = cp_set_of_books_id
108 AND    name = 'OKL Adjustment';
109 
110 
111 ------------------------------
112 
113 CURSOR c_get_cont_num(cp_psl_id IN NUMBER) IS
114 /*SELECT DISTINCT(contract_number)
115 FROM   okl_bpd_leasing_payment_trx_v
116 WHERE  payment_schedule_id = cp_psl_id; */ -- Bug 6358836
117 select distinct ractrl.interface_line_attribute6
118 from   ra_customer_trx_lines_all ractrl,
119        ar_payment_schedules_all aps
120 where  aps.customer_trx_id = ractrl.customer_trx_id
121 and    ractrl.line_type = 'LINE'
122 and    aps.payment_schedule_id = cp_psl_id;
123 
124 ------------------------------
125 
126 BEGIN
127 
128     l_set_of_books_id := Okl_Accounting_Util.GET_SET_OF_BOOKS_ID;
129 
130     OPEN  c_get_receivables_trx_id(l_set_of_books_id);
131     FETCH c_get_receivables_trx_id INTO l_receivables_trx_id, l_receivables_trx_name;
132     CLOSE c_get_receivables_trx_id;
133 
134     IF l_receivables_trx_id IS NULL THEN
135 
136         -- Message Text: Invalid receivables transaction
137         x_return_status := OKC_API.G_RET_STS_ERROR;
138         OKC_API.set_message( p_app_name      => G_APP_NAME
139                             ,p_msg_name      =>'OKL_BPD_RECV_ACTVTY_NOT_SET'
140                            );
141 
142         --RAISE G_EXCEPTION_HALT_VALIDATION; --bug 6727171
143         RAISE OKL_API.G_EXCEPTION_ERROR; -- bug 6727171
144     END IF;
145 
146     OPEN c_get_adjustments;
147     LOOP
148         FETCH c_get_adjustments INTO l_apply_date
149                                     ,l_gl_date
150                                     ,l_adjustment_reason_code
151                                     ,l_comments
152                                     ,l_adjsts_lns_id
153                                     ,l_payment_schedule_id
154                                     ,l_amount
155                                     ,l_code_combination_id;
156 
157 
158         EXIT WHEN c_get_adjustments%NOTFOUND;
159 
160         LOOP
161 
162             IF l_gl_date IS NULL THEN
163                 l_gl_date := SYSDATE;
164             END IF;
165 
166             IF l_apply_date IS NULL OR l_adjustment_reason_code IS NULL OR
167                l_payment_schedule_id IS NULL OR l_amount IS NULL THEN
168 
169                 -- Missing mandatory fields for cash application process
170                 OKC_API.set_message( p_app_name      => G_APP_NAME
171                                     ,p_msg_name      => 'OKL_BPD_ADJUST_MAN'
172                                     ,p_token1        => 'APPLY_DATE'
173                                     ,p_token1_value  => l_apply_date
174                                     ,p_token2        => 'ADJUSTMENT_REASON_CODE'
175                                     ,p_token2_value  => l_adjustment_reason_code
176                                     ,p_token3        => 'PAYMENT_SCHEDULE_ID'
177                                     ,p_token3_value  => l_payment_schedule_id
178                                     ,p_token4        => 'AMOUNT'
179                                     ,p_token4_value  => l_amount
180                                     ,p_token5        => 'RECEIVABLES_TRX_ID'
181                                     ,p_token5_value  => l_receivables_trx_id
182                                    );
183 
184                 EXIT; -- move to next record.
185 
186             END IF;
187 
188             l_adj_rec.type                := l_type;
189             l_adj_rec.created_from        := l_created_from;
190             l_adj_rec.apply_date          := l_apply_date;
191             l_adj_rec.gl_date             := l_gl_date;
192             l_adj_rec.reason_code         := l_adjustment_reason_code;
193             l_adj_rec.comments            := l_comments;
194             l_adj_rec.payment_schedule_id := l_payment_schedule_id;
195             l_adj_rec.amount              := (l_amount * -1);
196             l_adj_rec.code_combination_id := l_code_combination_id;
197             l_adj_rec.receivables_trx_id  := l_receivables_trx_id;
198 
199 -- Start of wraper code generated automatically by Debug code generator for AR_ADJUST_PUB.CREATE_ADJUSTMENT
200   IF(L_DEBUG_ENABLED='Y') THEN
201     L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
202     IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
203   END IF;
204   IF(IS_DEBUG_PROCEDURE_ON) THEN
205     BEGIN
206         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLROCAB.pls call AR_ADJUST_PUB.CREATE_ADJUSTMENT  ');
207     END;
208   END IF;
209             AR_ADJUST_PUB.CREATE_ADJUSTMENT ( p_api_name           => 'AR_ADJUST_PUB'
210                                              ,p_api_version        => 1.0
211                                              ,p_msg_count          => l_msg_count
212                                              ,p_msg_data           => l_msg_data
213                                              ,p_return_status      => l_return_status
214                                              ,p_adj_rec            => l_adj_rec
215                                              ,p_new_adjust_number  => x_new_adj_number
216                                              ,p_new_adjust_id      => x_new_adj_id
217                                             );
218   IF(IS_DEBUG_PROCEDURE_ON) THEN
219     BEGIN
220         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLROCAB.pls call AR_ADJUST_PUB.CREATE_ADJUSTMENT  ');
221     END;
222   END IF;
223 -- End of wraper code generated automatically by Debug code generator for AR_ADJUST_PUB.CREATE_ADJUSTMENT
224 
225             OPEN  c_get_cont_num(l_payment_schedule_id);
226             FETCH c_get_cont_num INTO l_contract_number;
227             CLOSE c_get_cont_num;
228 
229             IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) OR
230                (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
231 
232                 OKC_API.set_message( p_app_name      => G_APP_NAME
233                                     ,p_msg_name      => 'OKL_BPD_NO_ADJUST_CREATED'
234                                     ,p_token1        => 'CONTRACT_NUMBER'
235                                     ,p_token1_value  => l_contract_number
236                                     ,p_token2        => 'AMOUNT'
237                                     ,p_token2_value  => l_amount
238 
239                                    );
240 
241                 EXIT;
242 
243             ELSE
244 
245                 OKC_API.set_message( p_app_name      => G_APP_NAME
246                                     ,p_msg_name      => 'OKL_BPD_ADJUST_CREATED'
247                                     ,p_token1        => 'CONTRACT_NUMBER'
248                                     ,p_token1_value  => l_contract_number
249                                     ,p_token2        => 'AMOUNT'
250                                     ,p_token2_value  => l_amount
251                                    );
252 
253             END IF;
254 
255             l_new_adj_id := x_new_adj_id;
256 
257             l_ajlv_rec.id := l_adjsts_lns_id;
258             l_ajlv_rec.receivables_adjustment_id := l_new_adj_id;
259 
260 -- Start of wraper code generated automatically by Debug code generator for OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS
261   IF(IS_DEBUG_PROCEDURE_ON) THEN
262     BEGIN
263         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLROCAB.pls call OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS ');
264     END;
265   END IF;
266             OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS(l_api_version
267                                 ,l_init_msg_list
268                                 ,l_return_status
269                                 ,l_msg_count
270                                 ,l_msg_data
271                                 ,l_ajlv_rec
272                                  ,x_ajlv_rec
273                                                );
274   IF(IS_DEBUG_PROCEDURE_ON) THEN
275     BEGIN
276         OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLROCAB.pls call OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS ');
277     END;
278   END IF;
279 -- End of wraper code generated automatically by Debug code generator for OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS
280 
281             IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
282                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
283             ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
284                 RAISE OKL_API.G_EXCEPTION_ERROR;
285             END IF;
286 
287             EXIT;
288 
289         END LOOP;
290 
291     END LOOP;
292     CLOSE c_get_adjustments;
293 
294     x_return_status := l_return_status;
295 
296 EXCEPTION
297 
298     WHEN OTHERS THEN
299       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
300       x_msg_count := l_msg_count ;
301       x_msg_data := l_msg_data ;
302 
303 END create_adjustments;
304 
305 /*===========================================================================+
306  | PROCEDURE                                                                 |
307  |              iex_create_adjustments                                       |
308  |                                                                           |
309  | DESCRIPTION                                                               |
310  |              This is the main routine to create an adjustment in AR       |
311  |              specifically for IEX guys.                                   |
312  |                                                                           |
313  | ARGUMENTS  : IN:                                                          |
314  |                   p_api_name                                              |
315  |                   p_api_version                                           |
316  |                   p_init_msg_list                                         |
317  |                   p_commit_flag                                           |
318  |                   p_psl_id                                                |
319  |                   p_chk_approval_limits                                   |
320  |            : OUT:                                                         |
321  |                   x_new_adj_id                                            |
322  |                   x_return_status                                         |
323  |                   x_msg_count                         |
324  |             x_msg_data                                         |
325  |                                                                           |
326  | SCOPE - PRIVATE                                                           |
327  |                                                                           |
328  | NOTES                                                                     |
329  |                                                                           |
330  | MODIFICATION HISTORY                                                      |
331  |    Bruno Vaghela  09-OCT-02  Created                                      |
332  |    varao     19-SEP-05  Addressed bug 4505226                             |
333  |    varao     11-NOV-05  Addressed bug 4728481                             |
334  |    varao     17-NOV-05  Addressed bug 4622198                             |
335  +===========================================================================*/
336 
337 
338 PROCEDURE iex_create_adjustments   ( p_api_version       IN  NUMBER
339                       ,p_init_msg_list       IN  VARCHAR2 DEFAULT OKL_API.G_FALSE
340                                     ,p_commit_flag         IN  VARCHAR2 DEFAULT OKL_API.G_TRUE
341                                     ,p_psl_id              IN  NUMBER
342                                     ,p_chk_approval_limits IN  VARCHAR2 DEFAULT OKL_API.G_TRUE
343                                     ,x_new_adj_id          OUT NOCOPY NUMBER
344                                     ,x_return_status       OUT NOCOPY VARCHAR2
345                                     ,x_msg_count       OUT NOCOPY NUMBER
346                                     ,x_msg_data           OUT NOCOPY VARCHAR2
347                                    )IS
348 
349 ------------------------------
350 -- DECLARE Local variables
351 ------------------------------
352 
353 l_api_version               NUMBER DEFAULT 1.0;
354 l_init_msg_list             VARCHAR2(1) ;
355 l_return_status        VARCHAR2(1);
356 l_msg_count        NUMBER;
357 l_msg_data        VARCHAR2(2000);
358 
359 l_type                      CONSTANT AR_ADJUSTMENTS.TYPE%TYPE := 'INVOICE';
360 l_created_from              CONSTANT AR_ADJUSTMENTS.CREATED_FROM%TYPE := 'ADJ-API';
361 
362 l_adjsts_lns_id             OKL_TXL_ADJSTS_LNS_B.ID%TYPE;
363 l_new_adj_id                OKL_TXL_ADJSTS_LNS_B.RECEIVABLES_ADJUSTMENT_ID%TYPE;
364 
365 l_payment_schedule_id       AR_ADJUSTMENTS.PAYMENT_SCHEDULE_ID%TYPE;
366 l_contract_number        OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE DEFAULT NULL;
367 l_amount                    AR_ADJUSTMENTS.AMOUNT%TYPE;
368 
369 l_receivables_trx_id        AR_ADJUSTMENTS.RECEIVABLES_TRX_ID%TYPE;
370 l_receivables_trx_name      AR_RECEIVABLES_TRX_ALL.NAME%TYPE;
371 
372 l_code_combination_id       AR_ADJUSTMENTS.CODE_COMBINATION_ID%TYPE;
373 l_apply_date                AR_ADJUSTMENTS.APPLY_DATE%TYPE;
374 l_gl_date                   AR_ADJUSTMENTS.GL_DATE%TYPE;
375 l_adjustment_reason_code    AR_ADJUSTMENTS.REASON_CODE%TYPE;
376 l_comments                  AR_ADJUSTMENTS.COMMENTS%TYPE;
377 
378 l_chk_approval_limits       VARCHAR2(3);
379 l_commit_flag    VARCHAR2(3);
380 
381 l_set_of_books_id           AR_ADJUSTMENTS.SET_OF_BOOKS_ID%TYPE DEFAULT NULL;
382 
383 x_new_adj_number        AR_ADJUSTMENTS.ADJUSTMENT_NUMBER%TYPE;
384 
385 l_org_id                    NUMBER DEFAULT MO_GLOBAL.GET_CURRENT_ORG_ID();
386 -- 19-Sep-05 varao bug 4505226 Start
387 l_pdt_id                    NUMBER := 0;
388 l_try_id NUMBER := NULL;
389 
390 l_acc_gen_primary_key_tbl   OKL_ACCOUNT_DIST_PUB.acc_gen_primary_key;
391 
392 l_msg_index_out NUMBER;
393 -- 19-Sep-05 varao bug 4505226 End
394 
395 ------------------------------
396 -- DECLARE Record/Table Types
397 ------------------------------
398 
399 l_adj_rec                   ar_adjustments%rowtype;
400 l_adjv_rec                  adjv_rec_type;
401 x_adjv_rec                  adjv_rec_type;
402 l_ajlv_rec                  ajlv_rec_type;
403 x_ajlv_rec                  ajlv_rec_type;
404 l_ajlv_new_rec              ajlv_rec_type;
405 
406 ------------------------------
407 -- DECLARE Exceptions
408 ------------------------------
409 
410 
411 ------------------------------
412 -- DECLARE Cursors
413 ------------------------------
414 
415 CURSOR c_get_adjustments (cp_psl_id IN NUMBER) IS
416 SELECT a.APPLY_DATE
417       ,a.GL_DATE
418       ,a.ADJUSTMENT_REASON_CODE
419       ,a.COMMENTS
420       ,b.ID
421       ,b.PSL_ID
422       ,b.AMOUNT
423       ,b.CODE_COMBINATION_ID
424 FROM   okl_trx_ar_adjsts_v a, okl_txl_adjsts_lns_v b
425 WHERE  a.id = b.adj_id
426 AND    b.receivables_adjustment_id IS NULL
427 AND    b.psl_id = cp_psl_id;
428 
429 
430 ------------------------------
431 
432 CURSOR c_get_receivables_trx_id (cp_set_of_books_id IN NUMBER) IS
433 SELECT RECEIVABLES_TRX_ID, NAME
434 FROM   ar_receivables_trx_all
435 WHERE  set_of_books_id = cp_set_of_books_id
436 AND    name = 'OKL Adjustment';
437 
438 
439 ------------------------------
440 
441 -- 19-Sep-05 varao bug 4505226 Start
442 
443 /* Commented since this cursor is not used now
444 CURSOR c_get_cont_num(cp_psl_id IN NUMBER) IS
445 SELECT DISTINCT(contract_number)
446 FROM   okl_bpd_leasing_payment_trx_v
447 WHERE  payment_schedule_id = cp_psl_id;
448 */
449 ------------------------------
450 
451 -- Cursor to get the details for a payment schedule id
452 /* Bug 6727171 Start
453 CURSOR c_pmnt_schedule_dtls(cp_psl_id IN NUMBER) IS
454 SELECT OBLP.amount_due_remaining        AMOUNT_DUE_REMAINING,
455         OBLP.stream_type_id             STREAM_TYPE_ID,
456         OBLP.contract_line_id             CONTRACT_LINE_ID,
457         OBLP.stream_name                STREAM_NAME,
458         OBLP.contract_id                CONTRACT_ID,
459         OBLP.contract_number            CONTRACT_NUMBER,
460         OBLP.receivables_invoice_number AR_INVOICE_NUMBER,
461         OBLP.currency_code              CURRENCY_CODE,
462         OTIL.id                         TIL_ID,
463         -999                            TLD_ID
464 FROM   OKL_BPD_LEASING_PAYMENT_TRX_V  OBLP,
465         OKL_TXL_AR_INV_LNS_B          OTIL
466 WHERE  OBLP.payment_schedule_id     = cp_psl_id
467 AND    OBLP.receivables_invoice_id  = OTIL.receivables_invoice_id
468 AND    oblp.stream_type_id          = otil.sty_id   --added by dkagrawa for performance
469 AND    OBLP.amount_due_remaining > 0
470 UNION
471 SELECT OBLP.amount_due_remaining        AMOUNT_DUE_REMAINING,
472         OBLP.stream_type_id             STREAM_TYPE_ID,
473 OBLP.contract_line_id             CONTRACT_LINE_ID,
474         OBLP.stream_name                STREAM_NAME,
475         OBLP.contract_id                CONTRACT_ID,
476         OBLP.contract_number            CONTRACT_NUMBER,
477         OBLP.receivables_invoice_number AR_INVOICE_NUMBER,
478         OBLP.currency_code              CURRENCY_CODE,
479         OTAI.til_id_details             TIL_ID,
480         OTAI.id                         TLD_ID
481 FROM   OKL_BPD_LEASING_PAYMENT_TRX_V  OBLP,
482         OKL_TXD_AR_LN_DTLS_B          OTAI
483 WHERE  OBLP.payment_schedule_id     = cp_psl_id
484 AND    OBLP.receivables_invoice_id  = OTAI.receivables_invoice_id
485 AND    oblp.stream_type_id          = otai.sty_id  --added by dkagrawa for performance
486 AND    OBLP.amount_due_remaining > 0;
487 
488 Bug 6727171 End */
489 
490 --Bug 6727171 Start
491 
492 CURSOR c_pmnt_schedule_dtls(cp_psl_id IN NUMBER) IS
493 SELECT    RACTRL.AMOUNT_DUE_REMAINING       AMOUNT_DUE_REMAINING,
494           RACTRL.STY_ID                     STREAM_TYPE_ID,
495           RACTRL.KLE_ID                     CONTRACT_LINE_ID,
496           RACTRL.KHR_ID                     CONTRACT_ID,
497           RACTRL.CONTRACT_NUMBER            CONTRACT_NUMBER,
498           RACTRL.CUSTOMER_TRX_ID            AR_INVOICE_NUMBER,
499           RACTRL.STREAM_TYPE                STREAM_NAME,
500           OKL_AM_UTIL_PVT.get_chr_currency(RACTRL.KHR_ID) CURRENCY_CODE,
501           RACTRL.til_id_details             TIL_ID,
502           RACTRL.TLD_ID                     TLD_ID
503    FROM   OKL_BPD_TLD_AR_LINES_V     RACTRL,
504           AR_PAYMENT_SCHEDULES_ALL   APS
505    WHERE  APS.PAYMENT_SCHEDULE_ID = cp_psl_id
506    AND    RACTRL.CUSTOMER_TRX_ID  = APS.CUSTOMER_TRX_ID
507    AND    RACTRL.amount_due_remaining > 0;
508 
509 --Bug 6727171 End
510 
511 c_pmnt_schedule_dtls_rec c_pmnt_schedule_dtls%ROWTYPE;
512 
513 ------------------------------
514 
515 -- Cursor to get the product of the contract
516 CURSOR c_prod_id(cp_khr_id IN NUMBER) IS
517 SELECT   KHR.pdt_id
518 FROM     OKL_K_HEADERS_V KHR
519 WHERE    KHR.id = cp_khr_id;
520 
521 ------------------------------
522 
523 -- Cursor to get the distribution for the transaction id and
524 -- transaction table
525 -- Make sure we get the debit distribution and also it is 100percent
526 CURSOR c_code_combination_id(cp_source_id    IN NUMBER,
527                              cp_source_table IN VARCHAR2) IS
528 SELECT DST.code_combination_id
529 FROM   OKL_TRNS_ACC_DSTRS DST
530 WHERE  DST.source_id = cp_source_id
531 AND    DST.source_table = cp_source_table
532 AND    DST.cr_dr_flag = 'D'
533 AND    DST.percentage = 100;
534 
535 ------------------------------
536 
537 -- Get transaction id for 'Adjustments' trx type
538 CURSOR c_try_id (cp_try_name IN VARCHAR2) IS
539  SELECT id
540  FROM okl_trx_types_tl t
541  WHERE   UPPER (t.name)= UPPER (cp_try_name);
542 
543 ------------------------------
544 -- 19-Sep-05 varao bug 4505226 End
545 
546 -- Code added by varao for bug #4728481 - START
547   CURSOR get_psl_context IS
548     SELECT org_id
549     FROM   ar_payment_schedules_all
550     WHERE  payment_schedule_id = p_psl_id;
551 -- Code added by varao for bug #4728481 - END
552 
553  --Bug 6316320 dpsingh start
554        l_tmpl_identify_tbl          Okl_Account_Dist_Pvt.tmpl_identify_tbl_type;
555        l_dist_info_tbl              Okl_Account_Dist_Pvt.dist_info_tbl_type;
556        l_ctxt_tbl                   Okl_Account_Dist_Pvt.CTXT_TBL_TYPE;
557        l_acc_gen_tbl                Okl_Account_Dist_Pvt.ACC_GEN_TBL_TYPE;
558        l_template_out_tbl           Okl_Account_Dist_Pvt.avlv_out_tbl_type;
559        l_amount_out_tbl             Okl_Account_Dist_Pvt.amount_out_tbl_type;
560        l_account_derivation OKL_SYS_ACCT_OPTS.ACCOUNT_DERIVATION%TYPE;
561 
562    CURSOR get_account_derivation_meth IS
563    SELECT ACCOUNT_DERIVATION
564    FROM OKL_SYS_ACCT_OPTS;
565  --Bug 6316320 dpsingh end
566 
567   -- Bug 7138249 start
568   l_functional_currency_code VARCHAR2(15);
569   l_currency_code             VARCHAR2(200);
570   l_contract_currency_code   VARCHAR2(15);
571   l_currency_conversion_type VARCHAR2(30);
572   l_currency_conversion_rate NUMBER;
573   l_currency_conversion_date DATE;
574   l_converted_amount NUMBER;
575   l_trans_meaning             VARCHAR2(200);
576   -- Bug 7138249 end
577 
578 BEGIN
579 
580     -- Code added by varao for bug #4728481 - START
581     OPEN  get_psl_context;
582     FETCH get_psl_context INTO l_org_id;
583     CLOSE get_psl_context;
584     -- Code added by varao for bug #4728481 - END
585 
586     l_set_of_books_id := Okl_Accounting_Util.GET_SET_OF_BOOKS_ID;
587 
588     l_commit_flag := p_commit_flag;
589     l_payment_schedule_id := p_psl_id;
590     l_chk_approval_limits := p_chk_approval_limits;
591 
592     OPEN  c_get_receivables_trx_id(l_set_of_books_id);
593     FETCH c_get_receivables_trx_id INTO l_receivables_trx_id, l_receivables_trx_name;
594     CLOSE c_get_receivables_trx_id;
595 
596     IF l_receivables_trx_id IS NULL THEN
597         -- Message Text: Invalid receivables transaction
598         x_return_status := OKC_API.G_RET_STS_ERROR;
599         OKC_API.set_message( p_app_name      => G_APP_NAME
600                             ,p_msg_name      =>'OKL_BPD_RECV_ACTVTY_NOT_SET'
601                             );
602 
603         --RAISE G_EXCEPTION_HALT_VALIDATION; -- bug 6727171
604         RAISE OKL_API.G_EXCEPTION_ERROR; -- bug 6727171
605     END IF;
606 
607     -- 19-Sep-05 varao bug 4505226 Start
608     -- Get the payment schedule details
609     OPEN  c_pmnt_schedule_dtls(p_psl_id);
610     FETCH c_pmnt_schedule_dtls INTO c_pmnt_schedule_dtls_rec;
611     CLOSE c_pmnt_schedule_dtls;
612 
613     IF c_pmnt_schedule_dtls_rec.amount_due_remaining IS NOT NULL THEN
614 
615   -- Create adjusment header record in okl_trx_ar_adjsts_b
616       l_adjv_rec.adjustment_reason_code:= 'WRITE OFF';
617       l_adjv_rec.apply_date := SYSDATE;
618       l_adjv_rec.gl_date    := SYSDATE;
619       l_adjv_rec.trx_status_code := 'WORKING';
620       --Bug 6316320 dpsingh start
621       -- Get the transaction id for 'Adjustments' trx type
622       OPEN c_try_id('Adjustments');
623       FETCH c_try_id INTO l_try_id;
624       CLOSE c_try_id;
625 
626       IF l_try_id IS NULL THEN
627           OKL_API.set_message(p_app_name       => G_APP_NAME,
628                               p_msg_name       => 'OKL_AM_NO_TRX_TYPE_FOUND',
629                               p_token1         => 'TRY_NAME',
630                               p_token1_value   => 'Adjustments');
631           RAISE OKL_API.G_EXCEPTION_ERROR;
632       END IF;
633       l_adjv_rec.try_id :=l_try_id;
634       --Bug 6316320 dpsingh end
635       okl_trx_ar_adjsts_pub.insert_trx_ar_adjsts(
636              p_api_version              => l_api_version
637             ,p_init_msg_list            => l_init_msg_list
638             ,x_return_status            => l_return_status
639             ,x_msg_count                => l_msg_count
640             ,x_msg_data                 => l_msg_data
641             ,p_adjv_rec                 => l_adjv_rec
642             ,x_adjv_rec                 => x_adjv_rec);
643 
644       IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
645            OKL_API.set_message( p_app_name      => G_APP_NAME,
646                                 p_msg_name      => 'OKL_AM_ERR_ADJST_BAL');
647       END IF;
648 
649       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
650           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
651       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
652           RAISE OKL_API.G_EXCEPTION_ERROR;
653       END IF;
654 
655       -- Create adjusment line record in okl_txl_adjsts_lns_b
656       l_ajlv_rec.adj_id := x_adjv_rec.id;
657       l_ajlv_rec.psl_id := p_psl_id;
658       l_ajlv_rec.amount := c_pmnt_schedule_dtls_rec.amount_due_remaining;
659       l_ajlv_rec.til_id := c_pmnt_schedule_dtls_rec.til_id;
660 
661       IF  c_pmnt_schedule_dtls_rec.tld_id <> -999
662         AND c_pmnt_schedule_dtls_rec.tld_id IS NOT NULL
663         AND c_pmnt_schedule_dtls_rec.tld_id <> OKL_API.G_MISS_NUM THEN
664               l_ajlv_rec.tld_id   :=   c_pmnt_schedule_dtls_rec.tld_id;
665       END IF;
666 
667       -- Bug 7138249 start
668       -- Get the functional currency from AM_Util
669       l_functional_currency_code := OKL_AM_UTIL_PVT.get_functional_currency;
670 
671       -- Get the contract currency code
672       l_currency_code := OKL_AM_UTIL_PVT.get_chr_currency(
673                                   c_pmnt_schedule_dtls_rec.contract_id);
674 
675       l_trans_meaning := OKL_AM_UTIL_PVT.get_lookup_meaning(
676                                   p_lookup_type => 'OKL_ACCOUNTING_EVENT_TYPE',
677                                   p_lookup_code=> 'ADJUSTMENTS',
678                                   p_validate_yn => 'Y');
679       IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
680              OKL_API.set_message(
681                               p_app_name       => G_APP_NAME,
682                               p_msg_name       => 'OKL_AM_NO_TRX_TYPE_FOUND',
683                               p_token1         => 'TRY_NAME',
684                               p_token1_value   => l_trans_meaning);
685 
686           IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
687                  FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
688                        'OKL_AM_BAL_WRITEOFF_PVT.write_off_balances.',
689                        'balance_writeoff_trn_error = '||l_return_status );
690           END IF;
691 
692       END IF;
693 
694       OKL_ACCOUNTING_UTIL.convert_to_functional_currency(
695                      p_khr_id           => c_pmnt_schedule_dtls_rec.contract_id,
696                      p_to_currency      => l_functional_currency_code,
697                      p_transaction_date => SYSDATE,
698                      p_amount  => c_pmnt_schedule_dtls_rec.amount_due_remaining,
699                      x_return_status    => l_return_status,
700                      x_contract_currency         => l_contract_currency_code,
701                      x_currency_conversion_type  => l_currency_conversion_type,
702                      x_currency_conversion_rate  => l_currency_conversion_rate,
703                      x_currency_conversion_date  => l_currency_conversion_date,
704                      x_converted_amount => l_converted_amount);
705       IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
706               OKL_API.set_message(
707                            p_app_name      => G_APP_NAME,
708                            p_msg_name      => 'OKL_AM_ERR_ACC_ENT',
709                            p_token1        => 'TRX_TYPE',
710                            p_token1_value  => l_trans_meaning);
711 
712               IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
713                   FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT,
714                        'OKL_CREATE_ADJST_PVT.write_off_balances.',
715                        'currency_conv_error = '||l_return_status );
716               END IF;
717 
718               RAISE OKL_API.G_EXCEPTION_ERROR;
719 
720       END IF;
721 
722       -- Bug 7138249 end
723 
724       --Bug 6316320 dpsingh start
725       l_ajlv_rec.khr_id := c_pmnt_schedule_dtls_rec.contract_id;
726       l_ajlv_rec.sty_id := c_pmnt_schedule_dtls_rec.stream_type_id;
727       l_ajlv_rec.kle_id := c_pmnt_schedule_dtls_rec.contract_line_id ;
728       --Bug 6316320 dpsingh end
729       okl_txl_adjsts_lns_pub.insert_txl_adjsts_lns(
730              p_api_version              => l_api_version
731             ,p_init_msg_list            => l_init_msg_list
732             ,x_return_status            => l_return_status
733             ,x_msg_count                => l_msg_count
734             ,x_msg_data                 => l_msg_data
735             ,p_ajlv_rec                 => l_ajlv_rec
736             ,x_ajlv_rec                 => x_ajlv_rec);
737 
738       IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
739             OKL_API.set_message( p_app_name     => G_APP_NAME,
740                                  p_msg_name     => 'OKL_AM_ERR_ADJST_BAL');
741       END IF;
742 
743       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
744           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
745       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
746           RAISE OKL_API.G_EXCEPTION_ERROR;
747       END IF;
748 
749       -- Get the product id
750       OPEN  c_prod_id(c_pmnt_schedule_dtls_rec.contract_id);
751       FETCH c_prod_id INTO l_pdt_id;
752       CLOSE c_prod_id;
753 
754       l_contract_number := c_pmnt_schedule_dtls_rec.contract_number;
755 
756       IF l_pdt_id IS NULL OR l_pdt_id = 0 THEN
757            OKL_API.set_message(p_app_name     => G_APP_NAME,
758                                p_msg_name     => 'OKL_AM_PRODUCT_ID_ERROR',
759                                p_token1       => 'CONTRACT_NUMBER',
760                                p_token1_value => l_contract_number);
761              RAISE OKL_API.G_EXCEPTION_ERROR;
762       END IF;
763 
764       -- Do accounting entries to get code_combination_id
765       -- Set the tmpl_identify_rec in parameter
766       l_tmpl_identify_tbl(1).product_id  := l_pdt_id;
767       l_tmpl_identify_tbl(1).transaction_type_id := l_try_id;
768       l_tmpl_identify_tbl(1).memo_yn  :=  G_NO;
769       l_tmpl_identify_tbl(1).prior_year_yn  := G_NO;
770       l_tmpl_identify_tbl(1).stream_type_id := c_pmnt_schedule_dtls_rec.stream_type_id;
771 
772       -- Set the dist_info_rec in parameter
773        l_dist_info_tbl(1).source_id  := x_ajlv_rec.id;
774        l_dist_info_tbl(1).source_table  := 'OKL_TXL_ADJSTS_LNS_B';
775        l_dist_info_tbl(1).accounting_date := SYSDATE;
776        l_dist_info_tbl(1).gl_reversal_flag := G_NO;
777        l_dist_info_tbl(1).post_to_gl  := G_NO;
778        l_dist_info_tbl(1).contract_id := c_pmnt_schedule_dtls_rec.contract_id;
779        l_dist_info_tbl(1).amount := c_pmnt_schedule_dtls_rec.amount_due_remaining;
780        l_dist_info_tbl(1).currency_code := c_pmnt_schedule_dtls_rec.currency_code;
781       -- Bug 7138249 start
782        IF l_functional_currency_code <> l_contract_currency_code THEN
783          l_dist_info_tbl(1).currency_conversion_type := l_currency_conversion_type;
784          l_dist_info_tbl(1).currency_conversion_rate := l_currency_conversion_rate;
785          l_dist_info_tbl(1).currency_conversion_date := l_currency_conversion_date;
786        END IF;
787       -- Bug 7138249 end
788 
789 
790       OKL_ACC_CALL_PVT.okl_populate_acc_gen (
791                 p_contract_id       => c_pmnt_schedule_dtls_rec.contract_id,
792                 p_contract_line_id  => NULL,
793                 x_acc_gen_tbl       => l_acc_gen_primary_key_tbl,
794                 x_return_status     => l_return_status);
795 
796       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
797           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
798       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
799           RAISE OKL_API.G_EXCEPTION_ERROR;
800       END IF;
801 
802        l_acc_gen_tbl(1).acc_gen_key_tbl := l_acc_gen_primary_key_tbl;
803        l_acc_gen_tbl(1).source_id :=  x_ajlv_rec.id;
804 
805       -- 19-Sep-05 varao bug 4622198 Start
806       Okl_Securitization_Pvt.check_khr_ia_associated(
807                                              p_api_version    => l_api_version
808                                                 ,p_init_msg_list  => l_init_msg_list
809                                                 ,x_return_status  => l_return_status
810                                                 ,x_msg_count      => l_msg_count
811                                                 ,x_msg_data       => l_msg_data
812                                                 ,p_khr_id         => c_pmnt_schedule_dtls_rec.contract_id
813                                                 ,p_scs_code       => NULL
814                                                 ,p_trx_date       => sysdate
815                                                 ,x_fact_synd_code => l_tmpl_identify_tbl(1).FACTORING_SYND_FLAG
816                                                 ,x_inv_acct_code  => l_tmpl_identify_tbl(1).INVESTOR_CODE);
817 
818       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
819           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
820       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
821           RAISE OKL_API.G_EXCEPTION_ERROR;
822       END IF;
823       -- 19-Sep-05 varao bug 4622198 End
824 
825       -- Call accounting engine
826       -- This will calculate the adjstmnts and generate accounting entries
827      Okl_Account_Dist_Pvt.CREATE_ACCOUNTING_DIST(
828                                   p_api_version        => l_api_version,
829                                   p_init_msg_list      => l_init_msg_list,
830                                   x_return_status      => l_return_status,
831                                   x_msg_count          => l_msg_count,
832                                   x_msg_data           => l_msg_data,
833                                   p_tmpl_identify_tbl  => l_tmpl_identify_tbl,
834                                   p_dist_info_tbl      => l_dist_info_tbl,
835                                   p_ctxt_val_tbl       => l_ctxt_tbl,
836                                   p_acc_gen_primary_key_tbl => l_acc_gen_tbl,
837                                   x_template_tbl       => l_template_out_tbl,
838                                   x_amount_tbl         => l_amount_out_tbl,
839                                   p_trx_header_id      => x_adjv_rec.id,
840                                   p_trx_header_table  =>'OKL_TRX_AR_ADJSTS_B');
841 
842       IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
843                OKL_API.set_message( p_app_name      => G_APP_NAME,
844                                     p_msg_name      => 'OKL_AM_ERR_ACC_ENT_MSG',
845                                     p_token1        => 'TRX_TYPE',
846                                     p_token1_value  => 'Adjustments',
847                                     p_token2        => 'STREAM_TYPE',
848                                     p_token2_value  => c_pmnt_schedule_dtls_rec.stream_name);
849       END IF;
850 
851       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
852           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
853       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
854           RAISE OKL_API.G_EXCEPTION_ERROR;
855       END IF;
856 
857       OPEN  get_account_derivation_meth;
858              FETCH get_account_derivation_meth INTO l_account_derivation;
859              CLOSE get_account_derivation_meth;
860 
861       IF l_account_derivation = 'ATS' THEN
862       -- Get the code_combination_id for the transaction
863       OPEN  c_code_combination_id(x_ajlv_rec.id, 'OKL_TXL_ADJSTS_LNS_B');
864       FETCH c_code_combination_id INTO l_code_combination_id;
865       CLOSE c_code_combination_id;
866 
867       IF l_code_combination_id = -1 OR l_code_combination_id IS NULL THEN
868           OKL_API.set_message( p_app_name     => G_APP_NAME,
869                                p_msg_name     => 'OKL_AM_CODE_CMB_ERROR',
870                                p_token1       => 'CONTRACT_NUMBER',
871                                p_token1_value => l_contract_number);
872           RAISE OKL_API.G_EXCEPTION_ERROR;
873       END IF;
874 
875       -- Update adjusment line record in okl_txl_adjsts_lns_b with CCID
876       l_ajlv_rec := l_ajlv_new_rec; -- Empty the rec
877 
878       -- Set the rec with CCID got from accounting distibutions
879       l_ajlv_rec.id  := x_ajlv_rec.id;
880       l_ajlv_rec.code_combination_id  :=  l_code_combination_id;
881 
882       x_ajlv_rec := l_ajlv_new_rec; -- Empty the rec
883 
884       OKL_TXL_ADJSTS_LNS_PUB.update_txl_adjsts_lns(
885                 p_api_version      => l_api_version,
886                 p_init_msg_list    => l_init_msg_list,
887                 x_return_status    => l_return_status,
888                 x_msg_count        => l_msg_count,
889                 x_msg_data         => l_msg_data,
890                 p_ajlv_rec           => l_ajlv_rec,
891                 x_ajlv_rec           => x_ajlv_rec);
892 
893       IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
894           OKL_API.set_message( p_app_name     => G_APP_NAME,
895                                p_msg_name     => 'OKL_AM_ERR_ADJST_BAL');
896       END IF;
897 
898       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
899             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
900       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
901             RAISE OKL_API.G_EXCEPTION_ERROR;
902       END IF;
903     END IF;
904       -- 19-Sep-05 varao bug 4505226 End
905 
906       OPEN c_get_adjustments(l_payment_schedule_id);
907       LOOP
908           FETCH c_get_adjustments INTO l_apply_date
909                                     ,l_gl_date
910                                     ,l_adjustment_reason_code
911                                     ,l_comments
912                                     ,l_adjsts_lns_id
913                                     ,l_payment_schedule_id
914                                     ,l_amount
915                                     ,l_code_combination_id;
916 
917           EXIT WHEN c_get_adjustments%NOTFOUND;
918 
919           LOOP
920 
921             IF l_gl_date IS NULL THEN
922                 l_gl_date := SYSDATE;
923             END IF;
924 
925             IF l_apply_date IS NULL OR l_adjustment_reason_code IS NULL OR
926                l_payment_schedule_id IS NULL OR l_amount IS NULL THEN
927 
928                 -- Missing mandatory fields for cash application process
929                 OKC_API.set_message( p_app_name      => G_APP_NAME
930                                     ,p_msg_name      => 'OKL_BPD_ADJUST_MAN'
931                                     ,p_token1        => 'APPLY_DATE'
932                                     ,p_token1_value  => l_apply_date
933                                     ,p_token2        => 'ADJUSTMENT_REASON_CODE'
934                                     ,p_token2_value  => l_adjustment_reason_code
935                                     ,p_token3        => 'PAYMENT_SCHEDULE_ID'
936                                     ,p_token3_value  => l_payment_schedule_id
937                                     ,p_token4        => 'AMOUNT'
938                                     ,p_token4_value  => l_amount
939                                     ,p_token5        => 'RECEIVABLES_TRX_ID'
940                                     ,p_token5_value  => l_receivables_trx_id
941                                    );
942 
943                 EXIT; -- move to next record.
944 
945             END IF;
946 
947             l_adj_rec.type                := l_type;
948             l_adj_rec.created_from        := l_created_from;
949             l_adj_rec.apply_date          := l_apply_date;
950             l_adj_rec.gl_date             := l_gl_date;
951             l_adj_rec.reason_code         := l_adjustment_reason_code;
952             l_adj_rec.comments            := l_comments;
953             l_adj_rec.payment_schedule_id := l_payment_schedule_id;
954             l_adj_rec.amount              := (l_amount * -1);
955             IF l_account_derivation = 'ATS' THEN
956               l_adj_rec.code_combination_id := l_code_combination_id;
957             END IF;
958             l_adj_rec.receivables_trx_id  := l_receivables_trx_id;
959 
960       -- Start of wraper code generated automatically by Debug code generator for AR_ADJUST_PUB.CREATE_ADJUSTMENT
961       IF(L_DEBUG_ENABLED='Y') THEN
962           L_LEVEL_PROCEDURE :=FND_LOG.LEVEL_PROCEDURE;
963           IS_DEBUG_PROCEDURE_ON := OKL_DEBUG_PUB.Check_Log_On(L_MODULE, L_LEVEL_PROCEDURE);
964       END IF;
965       IF(IS_DEBUG_PROCEDURE_ON) THEN
966         BEGIN
967           OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLROCAB.pls call AR_ADJUST_PUB.CREATE_ADJUSTMENT  ');
968         END;
969       END IF;
970 
971             AR_ADJUST_PUB.CREATE_ADJUSTMENT ( p_api_name            => 'AR_ADJUST_PUB'
972                                              ,p_api_version         => 1.0
973                                              ,p_msg_count           => l_msg_count
974                                              ,p_msg_data            => l_msg_data
975                                              ,p_return_status       => l_return_status
976                                              ,p_adj_rec             => l_adj_rec
977                                              ,p_commit_flag         => l_commit_flag
978                                              ,p_chk_approval_limits => l_chk_approval_limits
979                                              ,p_new_adjust_number   => x_new_adj_number
980                                              ,p_new_adjust_id       => x_new_adj_id
981                                             );
982 
983       IF(IS_DEBUG_PROCEDURE_ON) THEN
984         BEGIN
985           OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLROCAB.pls call AR_ADJUST_PUB.CREATE_ADJUSTMENT  ');
986         END;
987       END IF;
988       -- End of wraper code generated automatically by Debug code generator for AR_ADJUST_PUB.CREATE_ADJUSTMENT
989 
990             /* Commented for bug 4505226, 19-Sep-05 varao
991             OPEN  c_get_cont_num(l_payment_schedule_id);
992             FETCH c_get_cont_num INTO l_contract_number;
993             CLOSE c_get_cont_num;
994             */
995 
996             IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) OR
997                (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
998 
999                 OKC_API.set_message( p_app_name      => G_APP_NAME
1000                                     ,p_msg_name      => 'OKL_BPD_NO_ADJUST_CREATED'
1001                                     ,p_token1        => 'CONTRACT_NUMBER'
1002                                     ,p_token1_value  => l_contract_number
1003                                     ,p_token2        => 'AMOUNT'
1004                                     ,p_token2_value  => l_amount
1005                                    );
1006 
1007                 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1008                      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1009                 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1010                      RAISE OKL_API.G_EXCEPTION_ERROR;
1011                 END IF;
1012 
1013                 EXIT;
1014 
1015             ELSE
1016 
1017                 OKC_API.set_message( p_app_name      => G_APP_NAME
1018                                     ,p_msg_name      => 'OKL_BPD_ADJUST_CREATED'
1019                                     ,p_token1        => 'CONTRACT_NUMBER'
1020                                     ,p_token1_value  => l_contract_number
1021                                     ,p_token2        => 'AMOUNT'
1022                                     ,p_token2_value  => l_amount
1023                                    );
1024 
1025             END IF;
1026 
1027             l_new_adj_id := x_new_adj_id;
1028 
1029             l_ajlv_rec := l_ajlv_new_rec;
1030             x_ajlv_rec := l_ajlv_new_rec;
1031 
1032             l_ajlv_rec.id := l_adjsts_lns_id;
1033             l_ajlv_rec.receivables_adjustment_id := l_new_adj_id;
1034 
1035       -- Start of wraper code generated automatically by Debug code generator for OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS
1036       IF(IS_DEBUG_PROCEDURE_ON) THEN
1037         BEGIN
1038           OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'Begin Debug OKLROCAB.pls call OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS ');
1039         END;
1040       END IF;
1041             OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS(l_api_version
1042                                 ,l_init_msg_list
1043                                 ,l_return_status
1044                                 ,l_msg_count
1045                                 ,l_msg_data
1046                                 ,l_ajlv_rec
1047                                  ,x_ajlv_rec
1048                                                );
1049       IF(IS_DEBUG_PROCEDURE_ON) THEN
1050         BEGIN
1051           OKL_DEBUG_PUB.LOG_DEBUG(L_LEVEL_PROCEDURE,L_MODULE,'End Debug OKLROCAB.pls call OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS ');
1052         END;
1053       END IF;
1054       -- End of wraper code generated automatically by Debug code generator for OKL_TXL_ADJSTS_LNS_PUB.UPDATE_TXL_ADJSTS_LNS
1055 
1056             IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
1057                OKL_API.set_message( p_app_name     => G_APP_NAME,
1058                                     p_msg_name     => 'OKL_AM_ERR_ADJST_BAL');
1059             END IF;
1060 
1061             IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1062                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1063             ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1064                 RAISE OKL_API.G_EXCEPTION_ERROR;
1065             END IF;
1066 
1067             EXIT;
1068 
1069         END LOOP;
1070 
1071       END LOOP;
1072       CLOSE c_get_adjustments;
1073 
1074       x_return_status := l_return_status;
1075 
1076     ELSE
1077 
1078       Okl_api.set_message( p_app_name      => g_app_name
1079                          , p_msg_name      => 'OKL_NO_RECORD' ) ;
1080       RAISE OKL_API.G_EXCEPTION_ERROR;
1081 
1082     END IF;
1083 
1084 EXCEPTION
1085 
1086    --Added snizam
1087     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1088       x_return_status := Okl_Api.G_RET_STS_ERROR;
1089       x_msg_count := l_msg_count ;
1090       x_msg_data := l_msg_data ;
1091 
1092     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1093       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1094       x_msg_count := l_msg_count ;
1095       x_msg_data := l_msg_data ;
1096     --End snizam
1097 
1098     WHEN OTHERS THEN
1099       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1100       x_msg_count := l_msg_count ;
1101       x_msg_data := l_msg_data ;
1102 
1103 END iex_create_adjustments;
1104 
1105 END OKL_CREATE_ADJST_PVT;