167: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_SYSTEM_OPTIONS');
168: FND_MESSAGE.SET_TOKEN('ORG', g_org_id);
169: FND_MSG_PUB.Add;
170: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
171: RAISE FND_API.G_EXC_ERROR;
172:
173: elsif g_sys_opt_num > 1 then
174:
175: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Found more then 1 system options records for the org ' || g_org_id);
176: FND_MESSAGE.SET_NAME('LNS', 'LNS_MANY_SYSTEM_OPTIONS');
177: FND_MESSAGE.SET_TOKEN('ORG', g_org_id);
178: FND_MSG_PUB.Add;
179: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
180: RAISE FND_API.G_EXC_ERROR;
181:
182: end if;
183:
184: /* getting system options */
222: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Batch Source is not set in the system option.');
223: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_BATCH_IN_SYS_OPT');
224: FND_MSG_PUB.Add;
225: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
226: RAISE FND_API.G_EXC_ERROR;
227:
228: end if;
229:
230: if g_trx_type_id is null then
232: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Default Transaction Type is not set in the system option.');
233: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_TRX_TYPE_IN_SYS_OPT');
234: FND_MSG_PUB.Add;
235: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
236: RAISE FND_API.G_EXC_ERROR;
237:
238: end if;
239:
240: if g_multiple_lines is null then
242: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Combination Invoice is not set in the system option.');
243: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_INV_COMB_IN_SYS_OPT');
244: FND_MSG_PUB.Add;
245: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
246: RAISE FND_API.G_EXC_ERROR;
247:
248: end if;
249:
250: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
383: /* updating loan header table */
384: l_loan_header_rec.loan_id := l_loan_id;
385:
386: if l_last_payment_number is null then
387: l_loan_header_rec.LAST_PAYMENT_NUMBER := FND_API.G_MISS_NUM;
388: else
389: l_loan_header_rec.LAST_PAYMENT_NUMBER := l_last_payment_number;
390: end if;
391:
389: l_loan_header_rec.LAST_PAYMENT_NUMBER := l_last_payment_number;
390: end if;
391:
392: if l_amortization_id is null then
393: l_loan_header_rec.LAST_AMORTIZATION_ID := FND_API.G_MISS_NUM;
394: else
395: l_loan_header_rec.LAST_AMORTIZATION_ID := l_amortization_id;
396: end if;
397:
398: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Updating loan header...');
399:
400: LNS_LOAN_HEADER_PUB.UPDATE_LOAN(P_OBJECT_VERSION_NUMBER => l_version_number,
401: P_LOAN_HEADER_REC => l_loan_header_rec,
402: P_INIT_MSG_LIST => FND_API.G_FALSE,
403: X_RETURN_STATUS => l_return_status,
404: X_MSG_COUNT => l_msg_count,
405: X_MSG_DATA => l_msg_data);
406:
411: ELSE
412: FND_MESSAGE.SET_NAME('LNS', 'LNS_UPD_LOAN_FAIL');
413: FND_MSG_PUB.Add;
414: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
415: RAISE FND_API.G_EXC_ERROR;
416: END IF;
417:
418: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
419:
526: -- Standard Start of API savepoint
527: SAVEPOINT PROCESS_PAID_LOANS;
528:
529: -- Initialize message list IF p_init_msg_list is set to TRUE.
530: IF FND_API.to_Boolean(p_init_msg_list) THEN
531: FND_MSG_PUB.initialize;
532: END IF;
533:
534: -- Initialize API return status to SUCCESS
531: FND_MSG_PUB.initialize;
532: END IF;
533:
534: -- Initialize API return status to SUCCESS
535: x_return_status := FND_API.G_RET_STS_SUCCESS;
536:
537: --
538: -- Api body
539: -- ----------------------------------------------------------------
564: if l_remaining_amount = 0 then
565:
566: LNS_FUNDING_PUB.VALIDATE_DISB_FOR_PAYOFF(
567: P_API_VERSION => 1.0,
568: P_INIT_MSG_LIST => FND_API.G_TRUE,
569: P_COMMIT => FND_API.G_FALSE,
570: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
571: P_LOAN_ID => l_loan_id,
572: X_RETURN_STATUS => l_return_status,
565:
566: LNS_FUNDING_PUB.VALIDATE_DISB_FOR_PAYOFF(
567: P_API_VERSION => 1.0,
568: P_INIT_MSG_LIST => FND_API.G_TRUE,
569: P_COMMIT => FND_API.G_FALSE,
570: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
571: P_LOAN_ID => l_loan_id,
572: X_RETURN_STATUS => l_return_status,
573: X_MSG_COUNT => l_msg_count,
566: LNS_FUNDING_PUB.VALIDATE_DISB_FOR_PAYOFF(
567: P_API_VERSION => 1.0,
568: P_INIT_MSG_LIST => FND_API.G_TRUE,
569: P_COMMIT => FND_API.G_FALSE,
570: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
571: P_LOAN_ID => l_loan_id,
572: X_RETURN_STATUS => l_return_status,
573: X_MSG_COUNT => l_msg_count,
574: X_MSG_DATA => l_msg_data);
573: X_MSG_COUNT => l_msg_count,
574: X_MSG_DATA => l_msg_data);
575:
576: IF l_return_status <> 'S' THEN
577: RAISE FND_API.G_EXC_ERROR;
578: END IF;
579:
580: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Updating lns_fee_assignments...');
581: update lns_fee_assignments
595:
596: /* updating loan header table */
597: l_loan_header_rec.loan_id := l_loan_id;
598: l_loan_header_rec.LOAN_STATUS := 'PAIDOFF';
599: l_loan_header_rec.SECONDARY_STATUS := FND_API.G_MISS_CHAR;
600:
601: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Updating loan header info w following values:');
602: LogMessage(FND_LOG.LEVEL_STATEMENT, 'LOAN_STATUS: ' || l_loan_header_rec.LOAN_STATUS);
603: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Secondary status: ' || l_loan_header_rec.SECONDARY_STATUS);
603: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Secondary status: ' || l_loan_header_rec.SECONDARY_STATUS);
604:
605: LNS_LOAN_HEADER_PUB.UPDATE_LOAN(P_OBJECT_VERSION_NUMBER => l_version_number,
606: P_LOAN_HEADER_REC => l_loan_header_rec,
607: P_INIT_MSG_LIST => FND_API.G_FALSE,
608: X_RETURN_STATUS => l_return_status,
609: X_MSG_COUNT => l_msg_count,
610: X_MSG_DATA => l_msg_data);
611:
616: ELSE
617: FND_MESSAGE.SET_NAME('LNS', 'LNS_UPD_LOAN_FAIL');
618: FND_MSG_PUB.Add;
619: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
620: RAISE FND_API.G_EXC_ERROR;
621: END IF;
622:
623: if P_COMMIT = FND_API.G_TRUE then
624: COMMIT WORK;
619: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
620: RAISE FND_API.G_EXC_ERROR;
621: END IF;
622:
623: if P_COMMIT = FND_API.G_TRUE then
624: COMMIT WORK;
625: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
626: end if;
627:
650: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
651:
652: EXCEPTION
653:
654: WHEN FND_API.G_EXC_ERROR THEN
655: ROLLBACK TO PROCESS_PAID_LOANS;
656: x_return_status := FND_API.G_RET_STS_ERROR;
657: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
658:
652: EXCEPTION
653:
654: WHEN FND_API.G_EXC_ERROR THEN
655: ROLLBACK TO PROCESS_PAID_LOANS;
656: x_return_status := FND_API.G_RET_STS_ERROR;
657: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
658:
659: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
660: ROLLBACK TO PROCESS_PAID_LOANS;
655: ROLLBACK TO PROCESS_PAID_LOANS;
656: x_return_status := FND_API.G_RET_STS_ERROR;
657: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
658:
659: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
660: ROLLBACK TO PROCESS_PAID_LOANS;
661: x_return_status := FND_API.G_RET_STS_ERROR;
662: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
663:
657: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
658:
659: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
660: ROLLBACK TO PROCESS_PAID_LOANS;
661: x_return_status := FND_API.G_RET_STS_ERROR;
662: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
663:
664: WHEN OTHERS THEN
665: ROLLBACK TO PROCESS_PAID_LOANS;
662: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
663:
664: WHEN OTHERS THEN
665: ROLLBACK TO PROCESS_PAID_LOANS;
666: x_return_status := FND_API.G_RET_STS_ERROR;
667: logMessage(FND_LOG.LEVEL_ERROR, sqlerrm);
668:
669: END;
670:
776: LogMessage(FND_LOG.LEVEL_STATEMENT, 'LOAN_STATUS: ' || l_loan_header_rec.LOAN_STATUS);
777:
778: LNS_LOAN_HEADER_PUB.UPDATE_LOAN(P_OBJECT_VERSION_NUMBER => l_version_number,
779: P_LOAN_HEADER_REC => l_loan_header_rec,
780: P_INIT_MSG_LIST => FND_API.G_FALSE,
781: X_RETURN_STATUS => l_return_status,
782: X_MSG_COUNT => l_msg_count,
783: X_MSG_DATA => l_msg_data);
784:
789: ELSE
790: FND_MESSAGE.SET_NAME('LNS', 'LNS_UPD_LOAN_FAIL');
791: FND_MSG_PUB.Add;
792: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
793: RAISE FND_API.G_EXC_ERROR;
794: END IF;
795:
796: if P_COMMIT = FND_API.G_TRUE then
797: COMMIT WORK;
792: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
793: RAISE FND_API.G_EXC_ERROR;
794: END IF;
795:
796: if P_COMMIT = FND_API.G_TRUE then
797: COMMIT WORK;
798: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
799: end if;
800:
1436: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Interest transaction type is not set.');
1437: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_INT_TRX_TYPE_IN_SYS_OPT');
1438: FND_MSG_PUB.Add;
1439: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
1440: RAISE FND_API.G_EXC_ERROR;
1441:
1442: end if;
1443:
1444: l_trx_header_tbl(l_Count3).cust_trx_type_id := g_int_trx_type_id;
1503: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Fee transaction type is not set.');
1504: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_FEE_TRX_TYPE_IN_SYS_OPT');
1505: FND_MSG_PUB.Add;
1506: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
1507: RAISE FND_API.G_EXC_ERROR;
1508:
1509: end if;
1510:
1511: l_trx_header_tbl(l_Count3).cust_trx_type_id := g_fee_trx_type_id;
1895: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No data to create invoices.');
1896: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_DATA_CR_INV');
1897: FND_MSG_PUB.Add;
1898: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
1899: RAISE FND_API.G_EXC_ERROR;
1900: end if;
1901:
1902: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Creating AR invoices with following values:');
1903: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_batch_source_rec.batch_source_id: ' || l_batch_source_rec.batch_source_id);
1979: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Calling AR_INVOICE_API_PUB.CREATE_INVOICE...');
1980: l_start := sysdate;
1981: AR_INVOICE_API_PUB.CREATE_INVOICE(
1982: p_api_version => 1.0,
1983: p_init_msg_list => FND_API.G_TRUE,
1984: p_commit => FND_API.G_FALSE,
1985: p_batch_source_rec => l_batch_source_rec,
1986: p_trx_header_tbl => l_trx_header_tbl,
1987: p_trx_lines_tbl => l_trx_lines_tbl,
1980: l_start := sysdate;
1981: AR_INVOICE_API_PUB.CREATE_INVOICE(
1982: p_api_version => 1.0,
1983: p_init_msg_list => FND_API.G_TRUE,
1984: p_commit => FND_API.G_FALSE,
1985: p_batch_source_rec => l_batch_source_rec,
1986: p_trx_header_tbl => l_trx_header_tbl,
1987: p_trx_lines_tbl => l_trx_lines_tbl,
1988: p_trx_dist_tbl => l_trx_dist_tbl,
2035: if l_ar_error_counter = 0 then
2036: LogMessage(FND_LOG.LEVEL_ERROR, 'No AR errors found.');
2037: end if;
2038:
2039: RAISE FND_API.G_EXC_ERROR;
2040: END;
2041:
2042: l_end := sysdate;
2043: LogMessage(FND_LOG.LEVEL_PROCEDURE, 'Invoice API timing: ' || round((l_end - l_start)*86400, 2) || ' sec');
2048: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_msg_data: ' || substr(l_msg_data,1,225));
2049: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_batch_id: ' || l_batch_id);
2050:
2051: l_ar_error_counter := 0;
2052: IF l_return_status = fnd_api.g_ret_sts_error OR l_return_status = fnd_api.g_ret_sts_unexp_error OR l_batch_id is null THEN
2053:
2054: l_ar_error_counter := 1;
2055: FND_MESSAGE.SET_NAME('LNS', 'LNS_CR_INV_FAIL');
2056: FND_MESSAGE.SET_TOKEN('MSG', l_msg_data);
2084:
2085: close ar_invoice_err_cur;
2086:
2087: if l_ar_error_counter > 0 then
2088: RAISE FND_API.G_EXC_ERROR;
2089: else
2090: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Invoices successfully created!') ;
2091: end if;
2092:
2182: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No AR invoices fetched');
2183: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_INV_FETCHED');
2184: FND_MSG_PUB.Add;
2185: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2186: RAISE FND_API.G_EXC_ERROR;
2187: end if;
2188:
2189: /* Update interest and fee trxs with principal_trx_id as RELATED_CUSTOMER_TRX_ID */
2190: if g_multiple_lines = 'N' and l_principal_trx_id is not null then
2197: -- LogMessage(FND_LOG.LEVEL_ERROR, 'ERROR: Update RA_CUSTOMER_TRX_ALL with RELATED_CUSTOMER_TRX_ID failed');
2198: FND_MESSAGE.SET_NAME('LNS', 'LNS_RELATE_INV_FAIL');
2199: FND_MSG_PUB.Add;
2200: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2201: RAISE FND_API.G_EXC_ERROR;
2202: end if;
2203:
2204: end if;
2205:
2211: -- LogMessage(FND_LOG.LEVEL_ERROR, 'ERROR: Update RA_CUSTOMER_TRX_ALL with RELATED_CUSTOMER_TRX_ID failed');
2212: FND_MESSAGE.SET_NAME('LNS', 'LNS_RELATE_INV_FAIL');
2213: FND_MSG_PUB.Add;
2214: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2215: RAISE FND_API.G_EXC_ERROR;
2216: end if;
2217:
2218: end if;
2219:
2329: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Cannot reverse because there are some valid activities on trx.');
2330: FND_MESSAGE.SET_NAME('LNS', 'LNS_CANT_REV_BILL');
2331: FND_MSG_PUB.Add;
2332: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2333: RAISE FND_API.G_EXC_ERROR;
2334:
2335: end if;
2336:
2337: /* searching/adding trx(s) into unique trx table */
2365: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No AR transactions found to reverse.');
2366: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_TRX_REVERSE');
2367: FND_MSG_PUB.Add;
2368: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2369: RAISE FND_API.G_EXC_ERROR;
2370:
2371: end if;
2372:
2373: /* query for batch_source_name and cm_batch_source_id */
2380: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_CM_BATCH');
2381: FND_MESSAGE.SET_TOKEN('BATCH', l_batch_source_name);
2382: FND_MSG_PUB.Add;
2383: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2384: RAISE FND_API.G_EXC_ERROR;
2385:
2386: end if;
2387:
2388: /* query for cm_batch_source_name */
2427: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling AR_CREDIT_MEMO_API_PUB.CREATE_REQUEST for trx ' || l_trx_tbl(l_Count1));
2428:
2429: AR_CREDIT_MEMO_API_PUB.CREATE_REQUEST(
2430: P_API_VERSION => 1.0,
2431: P_INIT_MSG_LIST => FND_API.G_TRUE,
2432: P_COMMIT => FND_API.G_FALSE,
2433: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
2434: P_CUSTOMER_TRX_ID => l_trx_tbl(l_Count1),
2435: P_LINE_CREDIT_FLAG => 'Y',
2428:
2429: AR_CREDIT_MEMO_API_PUB.CREATE_REQUEST(
2430: P_API_VERSION => 1.0,
2431: P_INIT_MSG_LIST => FND_API.G_TRUE,
2432: P_COMMIT => FND_API.G_FALSE,
2433: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
2434: P_CUSTOMER_TRX_ID => l_trx_tbl(l_Count1),
2435: P_LINE_CREDIT_FLAG => 'Y',
2436: P_CM_REASON_CODE => 'CANCELLATION',
2429: AR_CREDIT_MEMO_API_PUB.CREATE_REQUEST(
2430: P_API_VERSION => 1.0,
2431: P_INIT_MSG_LIST => FND_API.G_TRUE,
2432: P_COMMIT => FND_API.G_FALSE,
2433: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
2434: P_CUSTOMER_TRX_ID => l_trx_tbl(l_Count1),
2435: P_LINE_CREDIT_FLAG => 'Y',
2436: P_CM_REASON_CODE => 'CANCELLATION',
2437: p_cm_line_tbl => l_cm_line_tbl,
2448: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
2449: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_msg_data: ' || substr(l_msg_data,1,225));
2450: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_request_id: ' || l_request_id);
2451:
2452: IF l_return_status = fnd_api.g_ret_sts_error OR l_return_status = fnd_api.g_ret_sts_unexp_error OR
2453: l_request_id is null OR l_request_id = -1
2454:
2455: THEN
2456:
2458: FND_MESSAGE.SET_NAME('LNS', 'LNS_CR_CM_FAIL');
2459: FND_MESSAGE.SET_TOKEN('BATCH', l_cm_batch_source_name);
2460: FND_MSG_PUB.Add;
2461: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2462: RAISE FND_API.G_EXC_ERROR;
2463:
2464: ELSE
2465:
2466: if l_msg_data is not null then
2553: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Cash Receipt ID is not set.');
2554: FND_MESSAGE.SET_NAME('LNS', 'LNS_CR_NOT_SET');
2555: FND_MSG_PUB.Add;
2556: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2557: RAISE FND_API.G_EXC_ERROR;
2558: end if;
2559:
2560: if P_TRX_ID is null then
2561: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Trx ID is not set.');
2561: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Trx ID is not set.');
2562: FND_MESSAGE.SET_NAME('LNS', 'LNS_TRX_NOT_SET');
2563: FND_MSG_PUB.Add;
2564: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2565: RAISE FND_API.G_EXC_ERROR;
2566: end if;
2567:
2568: if P_TRX_LINE_ID is null then
2569: -- LogMessage(FND_LOG.LEVEL_ERROR, 'ERROR: Trx Line ID is not set.');
2569: -- LogMessage(FND_LOG.LEVEL_ERROR, 'ERROR: Trx Line ID is not set.');
2570: FND_MESSAGE.SET_NAME('LNS', 'LNS_TRX_LINE_NOT_SET');
2571: FND_MSG_PUB.Add;
2572: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2573: RAISE FND_API.G_EXC_ERROR;
2574: end if;
2575:
2576: if P_APPLY_AMOUNT is null or P_APPLY_AMOUNT <= 0 then
2577: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Apply Amount is not set.');
2577: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Apply Amount is not set.');
2578: FND_MESSAGE.SET_NAME('LNS', 'LNS_AMOUNT_NOT_SET');
2579: FND_MSG_PUB.Add;
2580: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2581: RAISE FND_API.G_EXC_ERROR;
2582: end if;
2583:
2584: /* verifying requested qpply amount */
2585:
2590: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No receipt found to apply.');
2591: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_CR_FOUND');
2592: FND_MSG_PUB.Add;
2593: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2594: RAISE FND_API.G_EXC_ERROR;
2595: end if;
2596:
2597: close receipt_cur;
2598:
2600: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: The receipt does not have enough funds to apply requested amount.');
2601: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_CR_FUNDS');
2602: FND_MSG_PUB.Add;
2603: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2604: RAISE FND_API.G_EXC_ERROR;
2605: end if;
2606:
2607: /* Applying cash receipt to invoice */
2608: /*
2607: /* Applying cash receipt to invoice */
2608: /*
2609: AR_RECEIPT_API_PUB.APPLY(
2610: P_API_VERSION => 1.0,
2611: P_INIT_MSG_LIST => FND_API.G_FALSE,
2612: P_COMMIT => FND_API.G_TRUE,
2613: X_RETURN_STATUS => L_RETURN_STATUS,
2614: X_MSG_COUNT => L_MSG_COUNT,
2615: X_MSG_DATA => L_MSG_DATA,
2608: /*
2609: AR_RECEIPT_API_PUB.APPLY(
2610: P_API_VERSION => 1.0,
2611: P_INIT_MSG_LIST => FND_API.G_FALSE,
2612: P_COMMIT => FND_API.G_TRUE,
2613: X_RETURN_STATUS => L_RETURN_STATUS,
2614: X_MSG_COUNT => L_MSG_COUNT,
2615: X_MSG_DATA => L_MSG_DATA,
2616: p_cash_receipt_id => P_CASH_RECEIPT_ID,
2620: */
2621: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
2622: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_msg_data: ' || substr(l_msg_data,1,225));
2623:
2624: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2625:
2626: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: AR_RECEIPT_API_PUB.APPLY raised error: ' || substr(l_msg_data,1,225));
2627: FND_MESSAGE.SET_NAME('LNS', 'LNS_APPL_CR_FAIL');
2628: FND_MSG_PUB.Add;
2626: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: AR_RECEIPT_API_PUB.APPLY raised error: ' || substr(l_msg_data,1,225));
2627: FND_MESSAGE.SET_NAME('LNS', 'LNS_APPL_CR_FAIL');
2628: FND_MSG_PUB.Add;
2629: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
2630: RAISE FND_API.G_EXC_ERROR;
2631:
2632: ELSE
2633: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully applied cash receipt to trx ' || P_TRX_ID || ' line ' || P_TRX_LINE_ID);
2634: END IF;
2758:
2759: AR_ADJUST_PUB.Create_Adjustment(
2760: p_api_name => 'AR_ADJUST_PUB',
2761: p_api_version => 1.0,
2762: p_init_msg_list => FND_API.G_TRUE,
2763: p_commit_flag => FND_API.G_FALSE,
2764: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
2765: p_msg_count => l_msg_count,
2766: p_msg_data => l_msg_data,
2759: AR_ADJUST_PUB.Create_Adjustment(
2760: p_api_name => 'AR_ADJUST_PUB',
2761: p_api_version => 1.0,
2762: p_init_msg_list => FND_API.G_TRUE,
2763: p_commit_flag => FND_API.G_FALSE,
2764: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
2765: p_msg_count => l_msg_count,
2766: p_msg_data => l_msg_data,
2767: p_return_status => l_return_status,
2760: p_api_name => 'AR_ADJUST_PUB',
2761: p_api_version => 1.0,
2762: p_init_msg_list => FND_API.G_TRUE,
2763: p_commit_flag => FND_API.G_FALSE,
2764: p_validation_level => FND_API.G_VALID_LEVEL_FULL,
2765: p_msg_count => l_msg_count,
2766: p_msg_data => l_msg_data,
2767: p_return_status => l_return_status,
2768: p_adj_rec => l_adj_rec,
2776: X_ADJ_NUMBER := l_adj_num;
2777:
2778: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
2779:
2780: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2781:
2782: while (l_indexNo <= l_msg_Count ) loop
2783: fnd_msg_pub.get(l_indexNo, 'F', l_msg, l_index);
2784: LogMessage(FND_LOG.LEVEL_ERROR, 'Error: ' || l_msg);
2784: LogMessage(FND_LOG.LEVEL_ERROR, 'Error: ' || l_msg);
2785: l_indexNo := l_indexNo + 1;
2786: End Loop;
2787:
2788: RAISE FND_API.G_EXC_ERROR;
2789:
2790: END IF;
2791:
2792: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
3410:
3411: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Update successfull!');
3412:
3413: else
3414: RAISE FND_API.G_EXC_ERROR;
3415: end if;
3416:
3417: --close context
3418: DBMS_XMLQuery.closeContext(qryCtx);
3423: EXCEPTION
3424: WHEN OTHERS THEN
3425: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Failed to generate billing statement');
3426: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: ' || sqlerrm);
3427: RAISE FND_API.G_EXC_ERROR;
3428:
3429: END GENERATE_BILLING_STATEMENT_XML;
3430:
3431:
3464: -- FND_MESSAGE.SET_ENCODED('Principal bill amount cannot be greater than ' || l_valid_amount);
3465: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_PRIN_BILL_AMOUNT');
3466: FND_MSG_PUB.Add;
3467: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
3468: RAISE FND_API.G_EXC_ERROR;
3469: end if;
3470:
3471: END;
3472:
3591: SAVEPOINT PROCESS_SINGLE_LOAN_PVT;
3592: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Established savepoint');
3593:
3594: -- Standard call to check for call compatibility
3595: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3596: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3597: END IF;
3598:
3599: -- Initialize message list if p_init_msg_list is set to TRUE
3592: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Established savepoint');
3593:
3594: -- Standard call to check for call compatibility
3595: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3596: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3597: END IF;
3598:
3599: -- Initialize message list if p_init_msg_list is set to TRUE
3600: IF FND_API.To_Boolean(p_init_msg_list) THEN
3596: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3597: END IF;
3598:
3599: -- Initialize message list if p_init_msg_list is set to TRUE
3600: IF FND_API.To_Boolean(p_init_msg_list) THEN
3601: FND_MSG_PUB.initialize;
3602: END IF;
3603:
3604: -- Initialize API return status to success
3601: FND_MSG_PUB.initialize;
3602: END IF;
3603:
3604: -- Initialize API return status to success
3605: l_return_status := FND_API.G_RET_STS_SUCCESS;
3606:
3607: -- START OF BODY OF API
3608:
3609: dbms_lob.createtemporary(X_STATEMENT_XML, FALSE, DBMS_LOB.CALL);
3640: FND_MESSAGE.SET_NAME('LNS', 'LNS_LOAN_MISS_DATA');
3641: FND_MESSAGE.SET_TOKEN('LOAN', P_LOAN_REC.LOAN_NUMBER);
3642: FND_MSG_PUB.Add;
3643: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
3644: RAISE FND_API.G_EXC_ERROR;
3645:
3646: end if;
3647:
3648: /* getting current payment number */
3660: if l_do_billing > 0 then
3661:
3662: LNS_BILLING_BATCH_PUB.PREBILL_SINGLE_LOAN(
3663: P_API_VERSION => 1.0,
3664: P_INIT_MSG_LIST => FND_API.G_TRUE,
3665: P_COMMIT => FND_API.G_FALSE,
3666: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
3667: P_LOAN_ID => P_LOAN_REC.LOAN_ID,
3668: X_BILLED_YN => l_billed_0th_yn,
3661:
3662: LNS_BILLING_BATCH_PUB.PREBILL_SINGLE_LOAN(
3663: P_API_VERSION => 1.0,
3664: P_INIT_MSG_LIST => FND_API.G_TRUE,
3665: P_COMMIT => FND_API.G_FALSE,
3666: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
3667: P_LOAN_ID => P_LOAN_REC.LOAN_ID,
3668: X_BILLED_YN => l_billed_0th_yn,
3669: x_return_status => l_return_status,
3662: LNS_BILLING_BATCH_PUB.PREBILL_SINGLE_LOAN(
3663: P_API_VERSION => 1.0,
3664: P_INIT_MSG_LIST => FND_API.G_TRUE,
3665: P_COMMIT => FND_API.G_FALSE,
3666: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
3667: P_LOAN_ID => P_LOAN_REC.LOAN_ID,
3668: X_BILLED_YN => l_billed_0th_yn,
3669: x_return_status => l_return_status,
3670: x_msg_count => l_msg_count,
3670: x_msg_count => l_msg_count,
3671: x_msg_data => l_msg_data);
3672:
3673: if l_return_status <> 'S' then
3674: RAISE FND_API.G_EXC_ERROR;
3675: end if;
3676:
3677: if l_billed_0th_yn = 'Y' then
3678:
3712: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling lns_financials.getInstallment...');
3713: l_start := sysdate;
3714: lns_financials.getInstallment(
3715: p_api_version => 1.0,
3716: p_init_msg_list => FND_API.G_TRUE,
3717: p_commit => FND_API.G_FALSE,
3718: p_loan_Id => P_LOAN_REC.LOAN_ID,
3719: p_installment_number => P_LOAN_REC.NEXT_PAYMENT_NUMBER,
3720: x_amortization_rec => l_amortization_rec,
3713: l_start := sysdate;
3714: lns_financials.getInstallment(
3715: p_api_version => 1.0,
3716: p_init_msg_list => FND_API.G_TRUE,
3717: p_commit => FND_API.G_FALSE,
3718: p_loan_Id => P_LOAN_REC.LOAN_ID,
3719: p_installment_number => P_LOAN_REC.NEXT_PAYMENT_NUMBER,
3720: x_amortization_rec => l_amortization_rec,
3721: x_fees_tbl => l_fee_tbl,
3730:
3731: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling lns_financials.getOpenInstallment...');
3732: l_start := sysdate;
3733: lns_financials.getOpenInstallment(
3734: p_init_msg_list => FND_API.G_TRUE,
3735: p_loan_Id => P_LOAN_REC.LOAN_ID,
3736: p_installment_number => P_LOAN_REC.NEXT_PAYMENT_NUMBER,
3737: x_amortization_rec => l_amortization_rec,
3738: x_fees_tbl => l_fee_tbl,
3748: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
3749: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_msg_data: ' || l_msg_data);
3750:
3751: if l_return_status <> 'S' then
3752: RAISE FND_API.G_EXC_ERROR;
3753: end if;
3754:
3755: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Data returned from lns_financials.getInstallment:');
3756: LogMessage(FND_LOG.LEVEL_STATEMENT, 'INSTALLMENT_NUMBER: ' || l_amortization_rec.INSTALLMENT_NUMBER);
3777: /*
3778: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_AMOUNT_INST');
3779: FND_MSG_PUB.Add;
3780: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
3781: RAISE FND_API.G_EXC_ERROR;
3782: */
3783: end if;
3784:
3785: /* begin raverma 12-5-2005 added support for floating loans */
3802: if P_LOAN_REC.NEXT_INTEREST_AMOUNT > 0 and l_floating_flag = 'Y' then
3803:
3804: LogMessage(FND_LOG.LEVEL_STATEMENT, 'BEFORE floating postProcessing');
3805: lns_financials.floatingRatePostProcessing(p_loan_id => P_LOAN_REC.LOAN_ID
3806: ,p_init_msg_list => FND_API.G_FALSE
3807: ,p_commit => FND_API.G_FALSE
3808: ,p_installment_number => P_LOAN_REC.NEXT_PAYMENT_NUMBER
3809: ,p_period_begin_date => P_LOAN_REC.NEXT_PAYMENT_DUE_DATE
3810: ,p_interest_adjustment_freq => l_amortization_rec.RATE_CHANGE_FREQ
3803:
3804: LogMessage(FND_LOG.LEVEL_STATEMENT, 'BEFORE floating postProcessing');
3805: lns_financials.floatingRatePostProcessing(p_loan_id => P_LOAN_REC.LOAN_ID
3806: ,p_init_msg_list => FND_API.G_FALSE
3807: ,p_commit => FND_API.G_FALSE
3808: ,p_installment_number => P_LOAN_REC.NEXT_PAYMENT_NUMBER
3809: ,p_period_begin_date => P_LOAN_REC.NEXT_PAYMENT_DUE_DATE
3810: ,p_interest_adjustment_freq => l_amortization_rec.RATE_CHANGE_FREQ
3811: ,p_annualized_interest_rate => l_amortization_rec.rate_unadj
3818: LogMessage(FND_LOG.LEVEL_STATEMENT, 'copying new rate ID for insert into Amortization Schedueles' || l_amortization_rec.RATE_ID);
3819: P_LOAN_REC.RATE_ID := l_amortization_rec.RATE_ID;
3820:
3821: if l_return_status <> 'S' then
3822: RAISE FND_API.G_EXC_ERROR;
3823: LogMessage(FND_LOG.LEVEL_STATEMENT, 'error in floating postProcessing ' || Sqlerrm);
3824:
3825: end if;
3826:
3898:
3899: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_FEE_INSTAL');
3900: FND_MSG_PUB.Add;
3901: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
3902: RAISE FND_API.G_EXC_ERROR;
3903:
3904: end if;
3905:
3906: /* updating LNS_FEE_SCHEDULES with billed_flag = Y */
3978: LogMessage(FND_LOG.LEVEL_STATEMENT, 'LAST_BILLED_DATE: ' || l_loan_header_rec.LAST_BILLED_DATE);
3979:
3980: LNS_LOAN_HEADER_PUB.UPDATE_LOAN(P_OBJECT_VERSION_NUMBER => P_LOAN_REC.OBJECT_VERSION_NUMBER,
3981: P_LOAN_HEADER_REC => l_loan_header_rec,
3982: P_INIT_MSG_LIST => FND_API.G_FALSE,
3983: X_RETURN_STATUS => l_return_status,
3984: X_MSG_COUNT => l_msg_count,
3985: X_MSG_DATA => l_msg_data);
3986:
3992: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: LNS_LOAN_HEADER_PUB.UPDATE_LOAN returned error: ' || substr(l_msg_data,1,225));
3993: FND_MESSAGE.SET_NAME('LNS', 'LNS_UPD_LOAN_FAIL');
3994: FND_MSG_PUB.Add;
3995: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
3996: RAISE FND_API.G_EXC_ERROR;
3997: END IF;
3998:
3999: STORE_LAST_PAYMENT_NUMBER(P_LOAN_REC.LOAN_ID);
4000:
4027: amount => dbms_lob.getlength(l_statement_xml)-l_offset,
4028: src_offset => l_offset+1);
4029: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Have copied generated statement to output');
4030:
4031: if P_COMMIT = FND_API.G_TRUE then
4032: COMMIT WORK;
4033: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan ' || P_LOAN_REC.LOAN_NUMBER);
4034: end if;
4035:
4033: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan ' || P_LOAN_REC.LOAN_NUMBER);
4034: end if;
4035:
4036: -- END OF BODY OF API
4037: x_return_status := FND_API.G_RET_STS_SUCCESS;
4038:
4039: -- Standard call to get message count and if count is 1, get message info
4040: FND_MSG_PUB.Count_And_Get(
4041: p_encoded => FND_API.G_FALSE,
4037: x_return_status := FND_API.G_RET_STS_SUCCESS;
4038:
4039: -- Standard call to get message count and if count is 1, get message info
4040: FND_MSG_PUB.Count_And_Get(
4041: p_encoded => FND_API.G_FALSE,
4042: p_count => x_msg_count,
4043: p_data => x_msg_data);
4044:
4045: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully processed loan ' || P_LOAN_REC.LOAN_NUMBER);
4045: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully processed loan ' || P_LOAN_REC.LOAN_NUMBER);
4046: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
4047:
4048: EXCEPTION
4049: WHEN FND_API.G_EXC_ERROR THEN
4050: ROLLBACK TO PROCESS_SINGLE_LOAN_PVT;
4051: x_return_status := FND_API.G_RET_STS_ERROR;
4052: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4053: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_REC.LOAN_NUMBER);
4047:
4048: EXCEPTION
4049: WHEN FND_API.G_EXC_ERROR THEN
4050: ROLLBACK TO PROCESS_SINGLE_LOAN_PVT;
4051: x_return_status := FND_API.G_RET_STS_ERROR;
4052: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4053: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_REC.LOAN_NUMBER);
4054: g_cr_return_status := 'WARNING';
4055:
4062: P_DUE_DATE => P_LOAN_REC.NEXT_PAYMENT_DUE_DATE,
4063: P_ERR_COUNT => x_msg_count,
4064: X_STATEMENT_XML => X_STATEMENT_XML);
4065:
4066: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4067: ROLLBACK TO PROCESS_SINGLE_LOAN_PVT;
4068: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4069: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4070: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_REC.LOAN_NUMBER);
4064: X_STATEMENT_XML => X_STATEMENT_XML);
4065:
4066: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4067: ROLLBACK TO PROCESS_SINGLE_LOAN_PVT;
4068: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4069: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4070: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_REC.LOAN_NUMBER);
4071: g_cr_return_status := 'WARNING';
4072:
4081: X_STATEMENT_XML => X_STATEMENT_XML);
4082:
4083: WHEN OTHERS THEN
4084: ROLLBACK TO PROCESS_SINGLE_LOAN_PVT;
4085: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4086: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
4087: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
4088: END IF;
4089: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4187: SAVEPOINT SINGLE_LOAN_NEXT_DD_PVT;
4188: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Established savepoint');
4189:
4190: -- Standard call to check for call compatibility
4191: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
4192: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4193: END IF;
4194:
4195: -- Initialize message list if p_init_msg_list is set to TRUE
4188: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Established savepoint');
4189:
4190: -- Standard call to check for call compatibility
4191: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
4192: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4193: END IF;
4194:
4195: -- Initialize message list if p_init_msg_list is set to TRUE
4196: IF FND_API.To_Boolean(p_init_msg_list) THEN
4192: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4193: END IF;
4194:
4195: -- Initialize message list if p_init_msg_list is set to TRUE
4196: IF FND_API.To_Boolean(p_init_msg_list) THEN
4197: FND_MSG_PUB.initialize;
4198: END IF;
4199:
4200: -- Initialize API return status to success
4197: FND_MSG_PUB.initialize;
4198: END IF;
4199:
4200: -- Initialize API return status to success
4201: l_return_status := FND_API.G_RET_STS_SUCCESS;
4202:
4203: -- START OF BODY OF API
4204: l_start := sysdate;
4205:
4219:
4220: if l_cur_phase = 'TERM' then
4221: lns_financials.preProcessInstallment(
4222: P_API_VERSION => 1.0,
4223: P_INIT_MSG_LIST => FND_API.G_FALSE,
4224: P_COMMIT => FND_API.G_FALSE,
4225: p_loan_Id => P_LOAN_NEXT_DD_REC.LOAN_ID,
4226: p_installment_number => P_LOAN_NEXT_DD_REC.NEXT_PAYMENT_NUMBER,
4227: X_AMORTIZATION_REC => l_amortization_rec,
4220: if l_cur_phase = 'TERM' then
4221: lns_financials.preProcessInstallment(
4222: P_API_VERSION => 1.0,
4223: P_INIT_MSG_LIST => FND_API.G_FALSE,
4224: P_COMMIT => FND_API.G_FALSE,
4225: p_loan_Id => P_LOAN_NEXT_DD_REC.LOAN_ID,
4226: p_installment_number => P_LOAN_NEXT_DD_REC.NEXT_PAYMENT_NUMBER,
4227: X_AMORTIZATION_REC => l_amortization_rec,
4228: X_RETURN_STATUS => l_return_status,
4230: X_MSG_DATA => l_msg_data);
4231: else
4232: lns_financials.preProcessOpenInstallment(
4233: -- P_API_VERSION => 1.0,
4234: P_INIT_MSG_LIST => FND_API.G_FALSE,
4235: P_COMMIT => FND_API.G_FALSE,
4236: p_loan_Id => P_LOAN_NEXT_DD_REC.LOAN_ID,
4237: p_installment_number => P_LOAN_NEXT_DD_REC.NEXT_PAYMENT_NUMBER,
4238: X_AMORTIZATION_REC => l_amortization_rec,
4231: else
4232: lns_financials.preProcessOpenInstallment(
4233: -- P_API_VERSION => 1.0,
4234: P_INIT_MSG_LIST => FND_API.G_FALSE,
4235: P_COMMIT => FND_API.G_FALSE,
4236: p_loan_Id => P_LOAN_NEXT_DD_REC.LOAN_ID,
4237: p_installment_number => P_LOAN_NEXT_DD_REC.NEXT_PAYMENT_NUMBER,
4238: X_AMORTIZATION_REC => l_amortization_rec,
4239: X_RETURN_STATUS => l_return_status,
4254: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Next installment date is unknown.');
4255: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_INST_DUE_DATE');
4256: FND_MSG_PUB.Add;
4257: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
4258: RAISE FND_API.G_EXC_ERROR;
4259:
4260: end if;
4261:
4262: /* Updating loan header */
4267: l_object_version_number := P_LOAN_NEXT_DD_REC.OBJECT_VERSION_NUMBER;
4268:
4269: LNS_LOAN_HEADER_PUB.UPDATE_LOAN(P_OBJECT_VERSION_NUMBER => l_object_version_number,
4270: P_LOAN_HEADER_REC => l_loan_header_rec,
4271: P_INIT_MSG_LIST => FND_API.G_FALSE,
4272: X_RETURN_STATUS => l_return_status,
4273: X_MSG_COUNT => l_msg_count,
4274: X_MSG_DATA => l_msg_data);
4275:
4281: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: LNS_LOAN_HEADER_PUB.UPDATE_LOAN returned error: ' || substr(l_msg_data,1,225));
4282: FND_MESSAGE.SET_NAME('LNS', 'LNS_UPD_LOAN_FAIL');
4283: FND_MSG_PUB.Add;
4284: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
4285: RAISE FND_API.G_EXC_ERROR;
4286: END IF;
4287:
4288: /* getting terms version for future update */
4289: open term_version_cur(P_LOAN_NEXT_DD_REC.LOAN_ID);
4304: LogMessage(FND_LOG.LEVEL_STATEMENT, 'OPEN_NEXT_PAYMENT_DATE: ' || l_term_rec.OPEN_NEXT_PAYMENT_DATE);
4305: end if;
4306:
4307: LNS_TERMS_PUB.update_term(P_OBJECT_VERSION_NUMBER => l_version_number,
4308: p_init_msg_list => FND_API.G_FALSE,
4309: p_loan_term_rec => l_term_rec,
4310: X_RETURN_STATUS => l_return_status,
4311: X_MSG_COUNT => l_msg_count,
4312: X_MSG_DATA => l_msg_data);
4319: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: LNS_TERMS_PUB.update_term returned error: ' || substr(l_msg_data,1,225));
4320: FND_MESSAGE.SET_NAME('LNS', 'LNS_UPD_TERM_FAIL');
4321: FND_MSG_PUB.Add;
4322: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
4323: RAISE FND_API.G_EXC_ERROR;
4324: END IF;
4325:
4326: l_end := sysdate;
4327: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Timing: ' || round((l_end - l_start)*86400, 2) || ' sec');
4325:
4326: l_end := sysdate;
4327: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Timing: ' || round((l_end - l_start)*86400, 2) || ' sec');
4328:
4329: if P_COMMIT = FND_API.G_TRUE then
4330: COMMIT WORK;
4331: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4332: end if;
4333:
4331: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4332: end if;
4333:
4334: -- END OF BODY OF API
4335: x_return_status := FND_API.G_RET_STS_SUCCESS;
4336:
4337: -- Standard call to get message count and if count is 1, get message info
4338: FND_MSG_PUB.Count_And_Get(
4339: p_encoded => FND_API.G_FALSE,
4335: x_return_status := FND_API.G_RET_STS_SUCCESS;
4336:
4337: -- Standard call to get message count and if count is 1, get message info
4338: FND_MSG_PUB.Count_And_Get(
4339: p_encoded => FND_API.G_FALSE,
4340: p_count => x_msg_count,
4341: p_data => x_msg_data);
4342:
4343: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Successfully processed loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4343: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Successfully processed loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4344: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
4345:
4346: EXCEPTION
4347: WHEN FND_API.G_EXC_ERROR THEN
4348: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4349: x_return_status := FND_API.G_RET_STS_ERROR;
4350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4351: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4345:
4346: EXCEPTION
4347: WHEN FND_API.G_EXC_ERROR THEN
4348: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4349: x_return_status := FND_API.G_RET_STS_ERROR;
4350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4351: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4352: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4353: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4348: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4349: x_return_status := FND_API.G_RET_STS_ERROR;
4350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4351: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4352: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4353: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4354: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4355: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4356: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4351: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4352: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4353: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4354: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4355: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4356: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4357: WHEN OTHERS THEN
4358: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4355: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4356: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loan ' || P_LOAN_NEXT_DD_REC.LOAN_NUMBER);
4357: WHEN OTHERS THEN
4358: ROLLBACK TO SINGLE_LOAN_NEXT_DD_PVT;
4359: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4360: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
4361: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
4362: END IF;
4363: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
4423: LogMessage(FND_LOG.LEVEL_UNEXPECTED, '<<--------Processing paid off loans...-------->>');
4424:
4425: PROCESS_PAID_LOANS(
4426: P_API_VERSION => 1.0,
4427: P_INIT_MSG_LIST => FND_API.G_TRUE,
4428: P_COMMIT => FND_API.G_TRUE,
4429: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4430: P_LOAN_ID => null,
4431: P_PAYOFF_DATE => sysdate,
4424:
4425: PROCESS_PAID_LOANS(
4426: P_API_VERSION => 1.0,
4427: P_INIT_MSG_LIST => FND_API.G_TRUE,
4428: P_COMMIT => FND_API.G_TRUE,
4429: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4430: P_LOAN_ID => null,
4431: P_PAYOFF_DATE => sysdate,
4432: X_RETURN_STATUS => RETCODE,
4425: PROCESS_PAID_LOANS(
4426: P_API_VERSION => 1.0,
4427: P_INIT_MSG_LIST => FND_API.G_TRUE,
4428: P_COMMIT => FND_API.G_TRUE,
4429: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4430: P_LOAN_ID => null,
4431: P_PAYOFF_DATE => sysdate,
4432: X_RETURN_STATUS => RETCODE,
4433: X_MSG_COUNT => l_msg_count,
4439: LogMessage(FND_LOG.LEVEL_UNEXPECTED, '<<--------Processing paid off loans that must be reactivated...-------->>');
4440:
4441: REACTIVATE_PAID_LOANS(
4442: P_API_VERSION => 1.0,
4443: P_INIT_MSG_LIST => FND_API.G_TRUE,
4444: P_COMMIT => FND_API.G_TRUE,
4445: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4446: X_RETURN_STATUS => RETCODE,
4447: X_MSG_COUNT => l_msg_count,
4440:
4441: REACTIVATE_PAID_LOANS(
4442: P_API_VERSION => 1.0,
4443: P_INIT_MSG_LIST => FND_API.G_TRUE,
4444: P_COMMIT => FND_API.G_TRUE,
4445: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4446: X_RETURN_STATUS => RETCODE,
4447: X_MSG_COUNT => l_msg_count,
4448: X_MSG_DATA => ERRBUF);
4441: REACTIVATE_PAID_LOANS(
4442: P_API_VERSION => 1.0,
4443: P_INIT_MSG_LIST => FND_API.G_TRUE,
4444: P_COMMIT => FND_API.G_TRUE,
4445: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4446: X_RETURN_STATUS => RETCODE,
4447: X_MSG_COUNT => l_msg_count,
4448: X_MSG_DATA => ERRBUF);
4449:
4451: LogMessage(FND_LOG.LEVEL_UNEXPECTED, '<<--------Recalculating due date for past due loans...-------->>');
4452:
4453: CALC_PAST_DUE_LOANS_NEXT_DD(
4454: P_API_VERSION => 1.0,
4455: P_INIT_MSG_LIST => FND_API.G_TRUE,
4456: P_COMMIT => FND_API.G_TRUE,
4457: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4458: X_RETURN_STATUS => RETCODE,
4459: X_MSG_COUNT => l_msg_count,
4452:
4453: CALC_PAST_DUE_LOANS_NEXT_DD(
4454: P_API_VERSION => 1.0,
4455: P_INIT_MSG_LIST => FND_API.G_TRUE,
4456: P_COMMIT => FND_API.G_TRUE,
4457: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4458: X_RETURN_STATUS => RETCODE,
4459: X_MSG_COUNT => l_msg_count,
4460: X_MSG_DATA => ERRBUF);
4453: CALC_PAST_DUE_LOANS_NEXT_DD(
4454: P_API_VERSION => 1.0,
4455: P_INIT_MSG_LIST => FND_API.G_TRUE,
4456: P_COMMIT => FND_API.G_TRUE,
4457: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4458: X_RETURN_STATUS => RETCODE,
4459: X_MSG_COUNT => l_msg_count,
4460: X_MSG_DATA => ERRBUF);
4461:
4464:
4465: /* bill loans and stores all last billed statements in g_last_all_statements */
4466: BILL_LOANS(
4467: P_API_VERSION => 1.0,
4468: P_INIT_MSG_LIST => FND_API.G_TRUE,
4469: P_COMMIT => FND_API.G_TRUE,
4470: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4471: P_BORROWER_ID => BORROWER_ID,
4472: P_LOAN_ID => LOAN_ID,
4465: /* bill loans and stores all last billed statements in g_last_all_statements */
4466: BILL_LOANS(
4467: P_API_VERSION => 1.0,
4468: P_INIT_MSG_LIST => FND_API.G_TRUE,
4469: P_COMMIT => FND_API.G_TRUE,
4470: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4471: P_BORROWER_ID => BORROWER_ID,
4472: P_LOAN_ID => LOAN_ID,
4473: P_FROM_DAYS_TO_DD => FROM_DAYS_TO_DD,
4466: BILL_LOANS(
4467: P_API_VERSION => 1.0,
4468: P_INIT_MSG_LIST => FND_API.G_TRUE,
4469: P_COMMIT => FND_API.G_TRUE,
4470: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4471: P_BORROWER_ID => BORROWER_ID,
4472: P_LOAN_ID => LOAN_ID,
4473: P_FROM_DAYS_TO_DD => FROM_DAYS_TO_DD,
4474: P_TO_DAYS_TO_DD => TO_DAYS_TO_DD,
4550: LogMessage(FND_LOG.LEVEL_UNEXPECTED, '<<--------Reversing a loans last payment...-------->>');
4551:
4552: REVERSE_LAST_AMORTIZATION(
4553: P_API_VERSION => 1.0,
4554: P_INIT_MSG_LIST => FND_API.G_TRUE,
4555: P_COMMIT => FND_API.G_TRUE,
4556: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4557: P_LOAN_ID => LOAN_ID,
4558: P_REBILL_FLAG => REBILL_FLAG,
4551:
4552: REVERSE_LAST_AMORTIZATION(
4553: P_API_VERSION => 1.0,
4554: P_INIT_MSG_LIST => FND_API.G_TRUE,
4555: P_COMMIT => FND_API.G_TRUE,
4556: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4557: P_LOAN_ID => LOAN_ID,
4558: P_REBILL_FLAG => REBILL_FLAG,
4559: X_RETURN_STATUS => RETCODE,
4552: REVERSE_LAST_AMORTIZATION(
4553: P_API_VERSION => 1.0,
4554: P_INIT_MSG_LIST => FND_API.G_TRUE,
4555: P_COMMIT => FND_API.G_TRUE,
4556: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4557: P_LOAN_ID => LOAN_ID,
4558: P_REBILL_FLAG => REBILL_FLAG,
4559: X_RETURN_STATUS => RETCODE,
4560: X_MSG_COUNT => l_msg_count,
4622: LogMessage(FND_LOG.LEVEL_UNEXPECTED, ' ');
4623:
4624: ADJUST_ORIGINAL_RECEIVABLE(
4625: P_API_VERSION => 1.0,
4626: P_INIT_MSG_LIST => FND_API.G_TRUE,
4627: P_COMMIT => FND_API.G_TRUE,
4628: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4629: P_LOAN_ID => LOAN_ID,
4630: X_RETURN_STATUS => RETCODE,
4623:
4624: ADJUST_ORIGINAL_RECEIVABLE(
4625: P_API_VERSION => 1.0,
4626: P_INIT_MSG_LIST => FND_API.G_TRUE,
4627: P_COMMIT => FND_API.G_TRUE,
4628: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4629: P_LOAN_ID => LOAN_ID,
4630: X_RETURN_STATUS => RETCODE,
4631: X_MSG_COUNT => l_msg_count,
4624: ADJUST_ORIGINAL_RECEIVABLE(
4625: P_API_VERSION => 1.0,
4626: P_INIT_MSG_LIST => FND_API.G_TRUE,
4627: P_COMMIT => FND_API.G_TRUE,
4628: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4629: P_LOAN_ID => LOAN_ID,
4630: X_RETURN_STATUS => RETCODE,
4631: X_MSG_COUNT => l_msg_count,
4632: X_MSG_DATA => ERRBUF);
4773: SAVEPOINT BILL_LOANS_PVT;
4774: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
4775:
4776: -- Standard call to check for call compatibility
4777: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
4778: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4779: END IF;
4780:
4781: -- Initialize message list if p_init_msg_list is set to TRUE
4774: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
4775:
4776: -- Standard call to check for call compatibility
4777: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
4778: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4779: END IF;
4780:
4781: -- Initialize message list if p_init_msg_list is set to TRUE
4782: IF FND_API.To_Boolean(p_init_msg_list) THEN
4778: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4779: END IF;
4780:
4781: -- Initialize message list if p_init_msg_list is set to TRUE
4782: IF FND_API.To_Boolean(p_init_msg_list) THEN
4783: FND_MSG_PUB.initialize;
4784: END IF;
4785:
4786: -- Initialize API return status to success
4783: FND_MSG_PUB.initialize;
4784: END IF;
4785:
4786: -- Initialize API return status to success
4787: l_return_status := FND_API.G_RET_STS_SUCCESS;
4788:
4789: -- START OF BODY OF API
4790:
4791: /* init all_statements clob */
4818: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: At least one of the days must be set.');
4819: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_BILLING_INP_PAR');
4820: FND_MSG_PUB.Add;
4821: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
4822: RAISE FND_API.G_EXC_ERROR;
4823: else
4824: l_to_date := g_days_to_bill_before_dd;
4825: LogMessage(FND_LOG.LEVEL_PROCEDURE, 'To Days/Date: ' || l_to_date || GET_BILLING_DATE(l_to_date));
4826: end if;
4931:
4932: l_start := sysdate;
4933: BILL_SINGLE_LOAN(
4934: P_API_VERSION => 1.0,
4935: P_INIT_MSG_LIST => FND_API.G_FALSE,
4936: P_COMMIT => P_COMMIT,
4937: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4938: P_LOAN_REC => l_loans_to_bill_tbl(l_Count1),
4939: X_STATEMENT_XML => l_single_statement_xml,
4933: BILL_SINGLE_LOAN(
4934: P_API_VERSION => 1.0,
4935: P_INIT_MSG_LIST => FND_API.G_FALSE,
4936: P_COMMIT => P_COMMIT,
4937: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4938: P_LOAN_REC => l_loans_to_bill_tbl(l_Count1),
4939: X_STATEMENT_XML => l_single_statement_xml,
4940: X_RETURN_STATUS => l_return_status,
4941: X_MSG_COUNT => l_msg_count,
4956: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Performing loan forgiveness adjustment for loan ' || l_loans_to_bill_tbl(l_Count1).LOAN_ID || '...');
4957: l_start1 := sysdate;
4958: FORGIVENESS_ADJUSTMENT(
4959: P_API_VERSION => 1.0,
4960: P_INIT_MSG_LIST => FND_API.G_FALSE,
4961: P_COMMIT => P_COMMIT,
4962: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4963: P_LOAN_ID => l_loans_to_bill_tbl(l_Count1).LOAN_ID,
4964: X_RETURN_STATUS => l_return_status,
4958: FORGIVENESS_ADJUSTMENT(
4959: P_API_VERSION => 1.0,
4960: P_INIT_MSG_LIST => FND_API.G_FALSE,
4961: P_COMMIT => P_COMMIT,
4962: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
4963: P_LOAN_ID => l_loans_to_bill_tbl(l_Count1).LOAN_ID,
4964: X_RETURN_STATUS => l_return_status,
4965: X_MSG_COUNT => l_msg_count,
4966: X_MSG_DATA => l_msg_data);
5005:
5006: LogMessage(FND_LOG.LEVEL_PROCEDURE, '______________');
5007: LogMessage(FND_LOG.LEVEL_PROCEDURE, 'Total processed ' || (l_Count1-1) || ' loan(s)');
5008:
5009: if P_COMMIT = FND_API.G_TRUE then
5010: COMMIT WORK;
5011: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loans');
5012: end if;
5013:
5011: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loans');
5012: end if;
5013:
5014: -- END OF BODY OF API
5015: x_return_status := FND_API.G_RET_STS_SUCCESS;
5016:
5017: -- Standard call to get message count and if count is 1, get message info
5018: FND_MSG_PUB.Count_And_Get(
5019: p_encoded => FND_API.G_FALSE,
5015: x_return_status := FND_API.G_RET_STS_SUCCESS;
5016:
5017: -- Standard call to get message count and if count is 1, get message info
5018: FND_MSG_PUB.Count_And_Get(
5019: p_encoded => FND_API.G_FALSE,
5020: p_count => x_msg_count,
5021: p_data => x_msg_data);
5022:
5023: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5022:
5023: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5024:
5025: EXCEPTION
5026: WHEN FND_API.G_EXC_ERROR THEN
5027: ROLLBACK TO BILL_LOANS_PVT;
5028: x_return_status := FND_API.G_RET_STS_ERROR;
5029: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5030: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5024:
5025: EXCEPTION
5026: WHEN FND_API.G_EXC_ERROR THEN
5027: ROLLBACK TO BILL_LOANS_PVT;
5028: x_return_status := FND_API.G_RET_STS_ERROR;
5029: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5030: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5031: g_cr_return_status := 'ERROR';
5032: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5028: x_return_status := FND_API.G_RET_STS_ERROR;
5029: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5030: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5031: g_cr_return_status := 'ERROR';
5032: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5033: ROLLBACK TO BILL_LOANS_PVT;
5034: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5035: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5036: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5030: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5031: g_cr_return_status := 'ERROR';
5032: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5033: ROLLBACK TO BILL_LOANS_PVT;
5034: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5035: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5036: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5037: g_cr_return_status := 'ERROR';
5038: WHEN OTHERS THEN
5036: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5037: g_cr_return_status := 'ERROR';
5038: WHEN OTHERS THEN
5039: ROLLBACK TO BILL_LOANS_PVT;
5040: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5041: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
5042: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
5043: END IF;
5044: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5138: SAVEPOINT LOANS_NEXT_DD_PVT;
5139: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Established savepoint');
5140:
5141: -- Standard call to check for call compatibility
5142: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5143: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5144: END IF;
5145:
5146: -- Initialize message list if p_init_msg_list is set to TRUE
5139: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Established savepoint');
5140:
5141: -- Standard call to check for call compatibility
5142: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5143: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5144: END IF;
5145:
5146: -- Initialize message list if p_init_msg_list is set to TRUE
5147: IF FND_API.To_Boolean(p_init_msg_list) THEN
5143: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5144: END IF;
5145:
5146: -- Initialize message list if p_init_msg_list is set to TRUE
5147: IF FND_API.To_Boolean(p_init_msg_list) THEN
5148: FND_MSG_PUB.initialize;
5149: END IF;
5150:
5151: -- Initialize API return status to success
5148: FND_MSG_PUB.initialize;
5149: END IF;
5150:
5151: -- Initialize API return status to success
5152: l_return_status := FND_API.G_RET_STS_SUCCESS;
5153:
5154: -- START OF BODY OF API
5155:
5156: init;
5177: l_Count1 := l_Count1+1;
5178:
5179: CALC_SINGLE_LOAN_NEXT_DD(
5180: P_API_VERSION => 1.0,
5181: P_INIT_MSG_LIST => FND_API.G_FALSE,
5182: P_COMMIT => P_COMMIT,
5183: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5184: P_LOAN_NEXT_DD_REC => l_loans_next_dd_rec,
5185: X_RETURN_STATUS => l_return_status,
5179: CALC_SINGLE_LOAN_NEXT_DD(
5180: P_API_VERSION => 1.0,
5181: P_INIT_MSG_LIST => FND_API.G_FALSE,
5182: P_COMMIT => P_COMMIT,
5183: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5184: P_LOAN_NEXT_DD_REC => l_loans_next_dd_rec,
5185: X_RETURN_STATUS => l_return_status,
5186: X_MSG_COUNT => l_msg_count,
5187: X_MSG_DATA => l_msg_data);
5194: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Total processed ' || (l_Count1-1) || ' loan(s)');
5195: l_end := sysdate;
5196: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'All Recalc Timing: ' || round((l_end - l_start)*86400, 2) || ' sec');
5197:
5198: if P_COMMIT = FND_API.G_TRUE then
5199: COMMIT WORK;
5200: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loans');
5201: end if;
5202:
5200: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loans');
5201: end if;
5202:
5203: -- END OF BODY OF API
5204: x_return_status := FND_API.G_RET_STS_SUCCESS;
5205:
5206: -- Standard call to get message count and if count is 1, get message info
5207: FND_MSG_PUB.Count_And_Get(
5208: p_encoded => FND_API.G_FALSE,
5204: x_return_status := FND_API.G_RET_STS_SUCCESS;
5205:
5206: -- Standard call to get message count and if count is 1, get message info
5207: FND_MSG_PUB.Count_And_Get(
5208: p_encoded => FND_API.G_FALSE,
5209: p_count => x_msg_count,
5210: p_data => x_msg_data);
5211:
5212: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5211:
5212: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5213:
5214: EXCEPTION
5215: WHEN FND_API.G_EXC_ERROR THEN
5216: ROLLBACK TO LOANS_NEXT_DD_PVT;
5217: x_return_status := FND_API.G_RET_STS_ERROR;
5218: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5219: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5213:
5214: EXCEPTION
5215: WHEN FND_API.G_EXC_ERROR THEN
5216: ROLLBACK TO LOANS_NEXT_DD_PVT;
5217: x_return_status := FND_API.G_RET_STS_ERROR;
5218: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5219: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5220: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5221: ROLLBACK TO LOANS_NEXT_DD_PVT;
5216: ROLLBACK TO LOANS_NEXT_DD_PVT;
5217: x_return_status := FND_API.G_RET_STS_ERROR;
5218: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5219: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5220: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5221: ROLLBACK TO LOANS_NEXT_DD_PVT;
5222: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5223: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5224: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5218: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5219: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5220: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5221: ROLLBACK TO LOANS_NEXT_DD_PVT;
5222: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5223: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5224: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5225: WHEN OTHERS THEN
5226: ROLLBACK TO LOANS_NEXT_DD_PVT;
5223: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5224: LogMessage(FND_LOG.LEVEL_ERROR, 'Rollbacked loans');
5225: WHEN OTHERS THEN
5226: ROLLBACK TO LOANS_NEXT_DD_PVT;
5227: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5228: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
5229: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
5230: END IF;
5231: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5377: SAVEPOINT REVERSE_LAST_AMORTIZATION;
5378: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
5379:
5380: -- Standard call to check for call compatibility
5381: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5382: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5383: END IF;
5384:
5385: -- Initialize message list if p_init_msg_list is set to TRUE
5378: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
5379:
5380: -- Standard call to check for call compatibility
5381: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5382: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5383: END IF;
5384:
5385: -- Initialize message list if p_init_msg_list is set to TRUE
5386: IF FND_API.To_Boolean(p_init_msg_list) THEN
5382: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5383: END IF;
5384:
5385: -- Initialize message list if p_init_msg_list is set to TRUE
5386: IF FND_API.To_Boolean(p_init_msg_list) THEN
5387: FND_MSG_PUB.initialize;
5388: END IF;
5389:
5390: -- Initialize API return status to success
5387: FND_MSG_PUB.initialize;
5388: END IF;
5389:
5390: -- Initialize API return status to success
5391: l_return_status := FND_API.G_RET_STS_SUCCESS;
5392:
5393: -- START OF BODY OF API
5394:
5395: init;
5414: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Loan must be set.');
5415: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_LOAN');
5416: FND_MSG_PUB.Add;
5417: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
5418: RAISE FND_API.G_EXC_ERROR;
5419:
5420: end if;
5421:
5422: /* quering for last loan amortization record */
5495: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No trx lines found to reverse.');
5496: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_TRX_LINES_TO_REV');
5497: FND_MSG_PUB.Add;
5498: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
5499: RAISE FND_API.G_EXC_ERROR;
5500:
5501: end if;
5502:
5503: /* Create credit memos */
5534: l_INSTALLMENT_REC.LOCK_INT := 'Y';
5535:
5536: LNS_CUSTOM_PUB.addMissingInstallment(
5537: P_API_VERSION => 1.0,
5538: P_INIT_MSG_LIST => FND_API.G_FALSE,
5539: P_COMMIT => FND_API.G_FALSE,
5540: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5541: P_INSTALLMENT_REC => l_INSTALLMENT_REC,
5542: X_RETURN_STATUS => l_return_status,
5535:
5536: LNS_CUSTOM_PUB.addMissingInstallment(
5537: P_API_VERSION => 1.0,
5538: P_INIT_MSG_LIST => FND_API.G_FALSE,
5539: P_COMMIT => FND_API.G_FALSE,
5540: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5541: P_INSTALLMENT_REC => l_INSTALLMENT_REC,
5542: X_RETURN_STATUS => l_return_status,
5543: X_MSG_COUNT => l_msg_count,
5536: LNS_CUSTOM_PUB.addMissingInstallment(
5537: P_API_VERSION => 1.0,
5538: P_INIT_MSG_LIST => FND_API.G_FALSE,
5539: P_COMMIT => FND_API.G_FALSE,
5540: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5541: P_INSTALLMENT_REC => l_INSTALLMENT_REC,
5542: X_RETURN_STATUS => l_return_status,
5543: X_MSG_COUNT => l_msg_count,
5544: X_MSG_DATA => l_msg_data);
5558: l_loans_next_dd_rec.CUSTOM_PAYMENTS_FLAG := l_custom_payment_flag;
5559:
5560: CALC_SINGLE_LOAN_NEXT_DD(
5561: P_API_VERSION => 1.0,
5562: P_INIT_MSG_LIST => FND_API.G_FALSE,
5563: P_COMMIT => P_COMMIT,
5564: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5565: P_LOAN_NEXT_DD_REC => l_loans_next_dd_rec,
5566: X_RETURN_STATUS => l_return_status,
5560: CALC_SINGLE_LOAN_NEXT_DD(
5561: P_API_VERSION => 1.0,
5562: P_INIT_MSG_LIST => FND_API.G_FALSE,
5563: P_COMMIT => P_COMMIT,
5564: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5565: P_LOAN_NEXT_DD_REC => l_loans_next_dd_rec,
5566: X_RETURN_STATUS => l_return_status,
5567: X_MSG_COUNT => l_msg_count,
5568: X_MSG_DATA => l_msg_data);
5574: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Failed to calculate next payment due date.');
5575: FND_MESSAGE.SET_NAME('LNS', 'LNS_CALC_NEXT_DUE_FAIL');
5576: FND_MSG_PUB.Add;
5577: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
5578: RAISE FND_API.G_EXC_ERROR;
5579: END IF;
5580:
5581: STORE_LAST_PAYMENT_NUMBER(P_LOAN_ID);
5582:
5579: END IF;
5580:
5581: STORE_LAST_PAYMENT_NUMBER(P_LOAN_ID);
5582:
5583: if P_COMMIT = FND_API.G_TRUE then
5584: COMMIT WORK;
5585: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan');
5586: end if;
5587:
5593: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Reprocessing Fees for loan ' || l_loan_number || ' payment number ' || l_LAST_PAYMENT_NUMBER);
5594: LNS_FEE_ENGINE.reprocessFees(
5595: p_loan_id => P_LOAN_ID,
5596: p_installment_number => l_LAST_PAYMENT_NUMBER,
5597: p_init_msg_list => FND_API.G_TRUE,
5598: p_commit => FND_API.G_TRUE,
5599: x_return_status => l_return_status,
5600: x_msg_count => l_msg_count,
5601: x_msg_data => l_msg_data);
5594: LNS_FEE_ENGINE.reprocessFees(
5595: p_loan_id => P_LOAN_ID,
5596: p_installment_number => l_LAST_PAYMENT_NUMBER,
5597: p_init_msg_list => FND_API.G_TRUE,
5598: p_commit => FND_API.G_TRUE,
5599: x_return_status => l_return_status,
5600: x_msg_count => l_msg_count,
5601: x_msg_data => l_msg_data);
5602:
5603: IF l_return_status = 'S' THEN
5604: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Successfully reprocessed fees.');
5605: ELSE
5606: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Failed to reprocess fees.');
5607: RAISE FND_API.G_EXC_ERROR;
5608: END IF;
5609:
5610: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Starting billing for loan ' || l_loan_number);
5611:
5610: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Starting billing for loan ' || l_loan_number);
5611:
5612: BILL_LOANS(
5613: P_API_VERSION => 1.0,
5614: P_INIT_MSG_LIST => FND_API.G_TRUE,
5615: P_COMMIT => FND_API.G_TRUE,
5616: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5617: P_BORROWER_ID => null,
5618: P_LOAN_ID => P_LOAN_ID,
5611:
5612: BILL_LOANS(
5613: P_API_VERSION => 1.0,
5614: P_INIT_MSG_LIST => FND_API.G_TRUE,
5615: P_COMMIT => FND_API.G_TRUE,
5616: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5617: P_BORROWER_ID => null,
5618: P_LOAN_ID => P_LOAN_ID,
5619: P_FROM_DAYS_TO_DD => null,
5612: BILL_LOANS(
5613: P_API_VERSION => 1.0,
5614: P_INIT_MSG_LIST => FND_API.G_TRUE,
5615: P_COMMIT => FND_API.G_TRUE,
5616: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
5617: P_BORROWER_ID => null,
5618: P_LOAN_ID => P_LOAN_ID,
5619: P_FROM_DAYS_TO_DD => null,
5620: P_TO_DAYS_TO_DD => null,
5634:
5635: end if;
5636:
5637: -- END OF BODY OF API
5638: x_return_status := FND_API.G_RET_STS_SUCCESS;
5639:
5640: -- Standard call to get message count and if count is 1, get message info
5641: FND_MSG_PUB.Count_And_Get(
5642: p_encoded => FND_API.G_FALSE,
5638: x_return_status := FND_API.G_RET_STS_SUCCESS;
5639:
5640: -- Standard call to get message count and if count is 1, get message info
5641: FND_MSG_PUB.Count_And_Get(
5642: p_encoded => FND_API.G_FALSE,
5643: p_count => x_msg_count,
5644: p_data => x_msg_data);
5645:
5646: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5645:
5646: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5647:
5648: EXCEPTION
5649: WHEN FND_API.G_EXC_ERROR THEN
5650: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5651: x_return_status := FND_API.G_RET_STS_ERROR;
5652: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5653: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5647:
5648: EXCEPTION
5649: WHEN FND_API.G_EXC_ERROR THEN
5650: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5651: x_return_status := FND_API.G_RET_STS_ERROR;
5652: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5653: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5654: g_cr_return_status := 'ERROR';
5655: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5651: x_return_status := FND_API.G_RET_STS_ERROR;
5652: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5653: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5654: g_cr_return_status := 'ERROR';
5655: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5656: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5657: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5658: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5659: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5653: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5654: g_cr_return_status := 'ERROR';
5655: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5656: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5657: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5658: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5659: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5660: g_cr_return_status := 'ERROR';
5661: WHEN OTHERS THEN
5659: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5660: g_cr_return_status := 'ERROR';
5661: WHEN OTHERS THEN
5662: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5663: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5664: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
5665: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
5666: END IF;
5667: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5793: SAVEPOINT REVERSE_LAST_AMORTIZATION;
5794: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
5795:
5796: -- Standard call to check for call compatibility
5797: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5798: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5799: END IF;
5800:
5801: -- Initialize message list if p_init_msg_list is set to TRUE
5794: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
5795:
5796: -- Standard call to check for call compatibility
5797: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5798: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5799: END IF;
5800:
5801: -- Initialize message list if p_init_msg_list is set to TRUE
5802: IF FND_API.To_Boolean(p_init_msg_list) THEN
5798: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5799: END IF;
5800:
5801: -- Initialize message list if p_init_msg_list is set to TRUE
5802: IF FND_API.To_Boolean(p_init_msg_list) THEN
5803: FND_MSG_PUB.initialize;
5804: END IF;
5805:
5806: -- Initialize API return status to success
5803: FND_MSG_PUB.initialize;
5804: END IF;
5805:
5806: -- Initialize API return status to success
5807: l_return_status := FND_API.G_RET_STS_SUCCESS;
5808:
5809: -- START OF BODY OF API
5810:
5811: init;
5825: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Loan must be set.');
5826: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_LOAN');
5827: FND_MSG_PUB.Add;
5828: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
5829: RAISE FND_API.G_EXC_ERROR;
5830:
5831: end if;
5832:
5833: if P_LINE_TYPE is null then
5833: if P_LINE_TYPE is null then
5834: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_LINE_TYPE');
5835: FND_MSG_PUB.Add;
5836: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
5837: RAISE FND_API.G_EXC_ERROR;
5838: end if;
5839:
5840: /* quering for last loan amortization record */
5841: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Querying for last amortization record in LNS_AMORTIZATION_SCHEDS:');
5902:
5903: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_TRX_LINES_TO_REV');
5904: FND_MSG_PUB.Add;
5905: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
5906: RAISE FND_API.G_EXC_ERROR;
5907:
5908: end if;
5909:
5910: /* Create credit memos */
5909:
5910: /* Create credit memos */
5911: CREATE_AR_CM(l_reverse_tbl);
5912:
5913: if P_COMMIT = FND_API.G_TRUE then
5914: COMMIT WORK;
5915: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan');
5916: end if;
5917:
5917:
5918: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully credit loan ' || l_loan_number);
5919:
5920: -- END OF BODY OF API
5921: x_return_status := FND_API.G_RET_STS_SUCCESS;
5922:
5923: -- Standard call to get message count and if count is 1, get message info
5924: FND_MSG_PUB.Count_And_Get(
5925: p_encoded => FND_API.G_FALSE,
5921: x_return_status := FND_API.G_RET_STS_SUCCESS;
5922:
5923: -- Standard call to get message count and if count is 1, get message info
5924: FND_MSG_PUB.Count_And_Get(
5925: p_encoded => FND_API.G_FALSE,
5926: p_count => x_msg_count,
5927: p_data => x_msg_data);
5928:
5929: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5928:
5929: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
5930:
5931: EXCEPTION
5932: WHEN FND_API.G_EXC_ERROR THEN
5933: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5934: x_return_status := FND_API.G_RET_STS_ERROR;
5935: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5936: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5930:
5931: EXCEPTION
5932: WHEN FND_API.G_EXC_ERROR THEN
5933: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5934: x_return_status := FND_API.G_RET_STS_ERROR;
5935: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5936: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5937: g_cr_return_status := 'ERROR';
5938: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5934: x_return_status := FND_API.G_RET_STS_ERROR;
5935: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5936: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5937: g_cr_return_status := 'ERROR';
5938: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5939: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5940: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5941: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5942: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5936: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5937: g_cr_return_status := 'ERROR';
5938: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5939: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5940: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5941: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
5942: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5943: g_cr_return_status := 'ERROR';
5944: WHEN OTHERS THEN
5942: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
5943: g_cr_return_status := 'ERROR';
5944: WHEN OTHERS THEN
5945: ROLLBACK TO REVERSE_LAST_AMORTIZATION;
5946: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5947: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
5948: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
5949: END IF;
5950: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6062: SAVEPOINT CREATE_SINGLE_OFFCYCLE_BILL;
6063: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6064:
6065: -- Standard call to check for call compatibility
6066: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6067: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6068: END IF;
6069:
6070: -- Initialize message list if p_init_msg_list is set to TRUE
6063: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6064:
6065: -- Standard call to check for call compatibility
6066: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6067: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6068: END IF;
6069:
6070: -- Initialize message list if p_init_msg_list is set to TRUE
6071: IF FND_API.To_Boolean(p_init_msg_list) THEN
6067: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6068: END IF;
6069:
6070: -- Initialize message list if p_init_msg_list is set to TRUE
6071: IF FND_API.To_Boolean(p_init_msg_list) THEN
6072: FND_MSG_PUB.initialize;
6073: END IF;
6074:
6075: -- Initialize API return status to success
6072: FND_MSG_PUB.initialize;
6073: END IF;
6074:
6075: -- Initialize API return status to success
6076: l_return_status := FND_API.G_RET_STS_SUCCESS;
6077:
6078: -- START OF BODY OF API
6079:
6080: init;
6090: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Loan ID is not set.');
6091: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_LOAN');
6092: FND_MSG_PUB.Add;
6093: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6094: RAISE FND_API.G_EXC_ERROR;
6095: end if;
6096:
6097: if P_BILL_HEADER_REC.ASSOC_PAYMENT_NUM is null then
6098: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Associated Payment Number is not set.');
6098: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Associated Payment Number is not set.');
6099: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_NUM');
6100: FND_MSG_PUB.Add;
6101: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6102: RAISE FND_API.G_EXC_ERROR;
6103: end if;
6104:
6105: if P_BILL_HEADER_REC.DUE_DATE is null then
6106: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Bill Due Date is not set.');
6106: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Bill Due Date is not set.');
6107: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_DUE');
6108: FND_MSG_PUB.Add;
6109: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6110: RAISE FND_API.G_EXC_ERROR;
6111: end if;
6112:
6113: if l_lines_tbl.count = 0 then
6114: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No lines found for header ' || P_BILL_HEADER_REC.HEADER_ID);
6115: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_LINES');
6116: FND_MESSAGE.SET_TOKEN('HEADER', P_BILL_HEADER_REC.HEADER_ID);
6117: FND_MSG_PUB.Add;
6118: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6119: RAISE FND_API.G_EXC_ERROR;
6120: end if;
6121:
6122: /* init amounts */
6123: l_loan_rec.NEXT_PRINCIPAL_AMOUNT := 0;
6145: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_LINE_AMOUNT');
6146: FND_MESSAGE.SET_TOKEN('LINE', l_lines_tbl(l_Count).LINE_ID);
6147: FND_MSG_PUB.Add;
6148: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6149: RAISE FND_API.G_EXC_ERROR;
6150: end if;
6151:
6152: if l_lines_tbl(l_Count).LINE_TYPE is null then
6153: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Line type for line ' || l_lines_tbl(l_Count).LINE_ID || ' is not set.');
6154: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_LINE_TYPE');
6155: FND_MESSAGE.SET_TOKEN('LINE', l_lines_tbl(l_Count).LINE_ID);
6156: FND_MSG_PUB.Add;
6157: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6158: RAISE FND_API.G_EXC_ERROR;
6159: end if;
6160: /*
6161: if l_lines_tbl(l_Count).LINE_DESC is null then
6162: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Line description for line ' || l_lines_tbl(l_Count).LINE_ID || ' is not set.');
6159: end if;
6160: /*
6161: if l_lines_tbl(l_Count).LINE_DESC is null then
6162: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Line description for line ' || l_lines_tbl(l_Count).LINE_ID || ' is not set.');
6163: RAISE FND_API.G_EXC_ERROR;
6164: end if;
6165: */
6166: /* Suming amounts */
6167: if l_lines_tbl(l_Count).LINE_TYPE = 'PRIN' then
6209: FND_MESSAGE.SET_TOKEN('LOAN',P_BILL_HEADER_REC.LOAN_ID);
6210: FND_MESSAGE.SET_TOKEN('INST', P_BILL_HEADER_REC.ASSOC_PAYMENT_NUM);
6211: FND_MSG_PUB.Add;
6212: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6213: RAISE FND_API.G_EXC_ERROR;
6214: end if;
6215:
6216: close loan_cur;
6217:
6282: GENERATE_BILLING_STATEMENT_XML(
6283: p_loan_id => l_loan_rec.LOAN_ID,
6284: p_amortization_schedule_id => l_loan_rec.NEXT_AMORTIZATION_ID);
6285:
6286: if P_COMMIT = FND_API.G_TRUE then
6287: COMMIT WORK;
6288: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
6289: end if;
6290:
6297:
6298: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Performing loan forgiveness adjustment...');
6299: FORGIVENESS_ADJUSTMENT(
6300: P_API_VERSION => 1.0,
6301: P_INIT_MSG_LIST => FND_API.G_FALSE,
6302: P_COMMIT => P_COMMIT,
6303: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
6304: P_LOAN_ID => l_loan_rec.LOAN_ID,
6305: X_RETURN_STATUS => l_return_status,
6299: FORGIVENESS_ADJUSTMENT(
6300: P_API_VERSION => 1.0,
6301: P_INIT_MSG_LIST => FND_API.G_FALSE,
6302: P_COMMIT => P_COMMIT,
6303: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
6304: P_LOAN_ID => l_loan_rec.LOAN_ID,
6305: X_RETURN_STATUS => l_return_status,
6306: X_MSG_COUNT => l_msg_count,
6307: X_MSG_DATA => l_msg_data);
6332:
6333: END LOOP;
6334:
6335: -- END OF BODY OF API
6336: x_return_status := FND_API.G_RET_STS_SUCCESS;
6337:
6338: -- Standard call to get message count and if count is 1, get message info
6339: FND_MSG_PUB.Count_And_Get(
6340: p_encoded => FND_API.G_FALSE,
6336: x_return_status := FND_API.G_RET_STS_SUCCESS;
6337:
6338: -- Standard call to get message count and if count is 1, get message info
6339: FND_MSG_PUB.Count_And_Get(
6340: p_encoded => FND_API.G_FALSE,
6341: p_count => x_msg_count,
6342: p_data => x_msg_data);
6343:
6344: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
6343:
6344: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
6345:
6346: EXCEPTION
6347: WHEN FND_API.G_EXC_ERROR THEN
6348: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6349: x_return_status := FND_API.G_RET_STS_ERROR;
6350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6351: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6345:
6346: EXCEPTION
6347: WHEN FND_API.G_EXC_ERROR THEN
6348: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6349: x_return_status := FND_API.G_RET_STS_ERROR;
6350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6351: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6352: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6353: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6348: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6349: x_return_status := FND_API.G_RET_STS_ERROR;
6350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6351: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6352: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6353: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6354: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6355: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6356: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6350: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6351: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6352: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6353: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6354: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6355: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6356: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6357: WHEN OTHERS THEN
6358: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6355: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6356: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6357: WHEN OTHERS THEN
6358: ROLLBACK TO CREATE_SINGLE_OFFCYCLE_BILL;
6359: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6360: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
6361: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
6362: END IF;
6363: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6436: SAVEPOINT CREATE_OFFCYCLE_BILLS;
6437: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6438:
6439: -- Standard call to check for call compatibility
6440: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6441: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6442: END IF;
6443:
6444: -- Initialize message list if p_init_msg_list is set to TRUE
6437: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6438:
6439: -- Standard call to check for call compatibility
6440: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6441: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6442: END IF;
6443:
6444: -- Initialize message list if p_init_msg_list is set to TRUE
6445: IF FND_API.To_Boolean(p_init_msg_list) THEN
6441: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6442: END IF;
6443:
6444: -- Initialize message list if p_init_msg_list is set to TRUE
6445: IF FND_API.To_Boolean(p_init_msg_list) THEN
6446: FND_MSG_PUB.initialize;
6447: END IF;
6448:
6449: -- Initialize API return status to success
6446: FND_MSG_PUB.initialize;
6447: END IF;
6448:
6449: -- Initialize API return status to success
6450: l_return_status := FND_API.G_RET_STS_SUCCESS;
6451:
6452: -- START OF BODY OF API
6453: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Creating OFFCYCLE bills...');
6454:
6459: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Header ID is not set.');
6460: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_HEADER');
6461: FND_MSG_PUB.Add;
6462: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6463: RAISE FND_API.G_EXC_ERROR;
6464: end if;
6465:
6466: /* Init lines table */
6467: l_Count2 := 0;
6475: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_BILL_NO_LINE_HEADER');
6476: FND_MESSAGE.SET_TOKEN('LINE', P_BILL_LINES_TBL(l_Count1).LINE_ID);
6477: FND_MSG_PUB.Add;
6478: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
6479: RAISE FND_API.G_EXC_ERROR;
6480: end if;
6481:
6482: /* Adding current line record to lines table of current header */
6483: if P_BILL_HEADERS_TBL(l_Count).HEADER_ID = P_BILL_LINES_TBL(l_Count1).HEADER_ID then
6489:
6490: /* Create a single offcycle bill */
6491: CREATE_SINGLE_OFFCYCLE_BILL(
6492: P_API_VERSION => 1.0,
6493: P_INIT_MSG_LIST => FND_API.G_FALSE,
6494: P_COMMIT => P_COMMIT,
6495: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
6496: P_BILL_HEADER_REC => P_BILL_HEADERS_TBL(l_Count),
6497: P_BILL_LINES_TBL => l_bill_lines_tbl,
6491: CREATE_SINGLE_OFFCYCLE_BILL(
6492: P_API_VERSION => 1.0,
6493: P_INIT_MSG_LIST => FND_API.G_FALSE,
6494: P_COMMIT => P_COMMIT,
6495: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
6496: P_BILL_HEADER_REC => P_BILL_HEADERS_TBL(l_Count),
6497: P_BILL_LINES_TBL => l_bill_lines_tbl,
6498: X_RETURN_STATUS => l_return_status,
6499: X_MSG_COUNT => l_msg_count,
6498: X_RETURN_STATUS => l_return_status,
6499: X_MSG_COUNT => l_msg_count,
6500: X_MSG_DATA => l_msg_data);
6501:
6502: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6503: RAISE FND_API.G_EXC_ERROR;
6504: END IF;
6505:
6506: END LOOP;
6499: X_MSG_COUNT => l_msg_count,
6500: X_MSG_DATA => l_msg_data);
6501:
6502: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6503: RAISE FND_API.G_EXC_ERROR;
6504: END IF;
6505:
6506: END LOOP;
6507:
6507:
6508: LogMessage(FND_LOG.LEVEL_UNEXPECTED, '______________');
6509: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Total processed ' || P_BILL_HEADERS_TBL.count || ' OFFCYCLE bill(s)');
6510:
6511: if P_COMMIT = FND_API.G_TRUE then
6512: COMMIT WORK;
6513: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan');
6514: end if;
6515:
6513: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited loan');
6514: end if;
6515:
6516: -- END OF BODY OF API
6517: x_return_status := FND_API.G_RET_STS_SUCCESS;
6518:
6519: -- Standard call to get message count and if count is 1, get message info
6520: FND_MSG_PUB.Count_And_Get(
6521: p_encoded => FND_API.G_FALSE,
6517: x_return_status := FND_API.G_RET_STS_SUCCESS;
6518:
6519: -- Standard call to get message count and if count is 1, get message info
6520: FND_MSG_PUB.Count_And_Get(
6521: p_encoded => FND_API.G_FALSE,
6522: p_count => x_msg_count,
6523: p_data => x_msg_data);
6524:
6525: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
6524:
6525: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
6526:
6527: EXCEPTION
6528: WHEN FND_API.G_EXC_ERROR THEN
6529: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6530: x_return_status := FND_API.G_RET_STS_ERROR;
6531: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6532: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6526:
6527: EXCEPTION
6528: WHEN FND_API.G_EXC_ERROR THEN
6529: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6530: x_return_status := FND_API.G_RET_STS_ERROR;
6531: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6532: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6533: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6534: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6529: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6530: x_return_status := FND_API.G_RET_STS_ERROR;
6531: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6532: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6533: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6534: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6535: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6536: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6537: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6531: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6532: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6533: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6534: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6535: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6536: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6537: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6538: WHEN OTHERS THEN
6539: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6536: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6537: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked loan');
6538: WHEN OTHERS THEN
6539: ROLLBACK TO CREATE_OFFCYCLE_BILLS;
6540: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6541: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
6542: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
6543: END IF;
6544: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6663: SAVEPOINT REVERSE_OFFCYCLE_BILL;
6664: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6665:
6666: -- Standard call to check for call compatibility
6667: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6668: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6669: END IF;
6670:
6671: -- Initialize message list if p_init_msg_list is set to TRUE
6664: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6665:
6666: -- Standard call to check for call compatibility
6667: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6668: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6669: END IF;
6670:
6671: -- Initialize message list if p_init_msg_list is set to TRUE
6672: IF FND_API.To_Boolean(p_init_msg_list) THEN
6668: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6669: END IF;
6670:
6671: -- Initialize message list if p_init_msg_list is set to TRUE
6672: IF FND_API.To_Boolean(p_init_msg_list) THEN
6673: FND_MSG_PUB.initialize;
6674: END IF;
6675:
6676: -- Initialize API return status to success
6673: FND_MSG_PUB.initialize;
6674: END IF;
6675:
6676: -- Initialize API return status to success
6677: l_return_status := FND_API.G_RET_STS_SUCCESS;
6678:
6679: -- START OF BODY OF API
6680:
6681: init;
6687: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Amortization ID must be set.');
6688: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_REV_NO_AMORT');
6689: FND_MSG_PUB.Add;
6690: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
6691: RAISE FND_API.G_EXC_ERROR;
6692: end if;
6693:
6694: /* verify is it really offcycle bill, reversed etc. */
6695: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Querying for details of the amortization:');
6707: -- LogMessage(FND_LOG.LEVEL_ERROR, 'ERROR: No amortization record found.');
6708: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_REV_NO_BILL_FOUND');
6709: FND_MSG_PUB.Add;
6710: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
6711: RAISE FND_API.G_EXC_ERROR;
6712:
6713: else
6714:
6715: LogMessage(FND_LOG.LEVEL_STATEMENT, 'LOAN_ID: ' || l_LOAN_ID);
6723: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: The amortization is not offcycle bill.');
6724: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_REV_NOT_MAN_BILL');
6725: FND_MSG_PUB.Add;
6726: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
6727: RAISE FND_API.G_EXC_ERROR;
6728:
6729: elsif l_REVERSED_FLAG = 'Y' then
6730:
6731: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: The amortization is already reversed.');
6731: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: The amortization is already reversed.');
6732: FND_MESSAGE.SET_NAME('LNS', 'LNS_MAN_REV_ALREADY_REV');
6733: FND_MSG_PUB.Add;
6734: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
6735: RAISE FND_API.G_EXC_ERROR;
6736:
6737: end if;
6738:
6739: end if;
6778: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: No trx lines found to reverse.');
6779: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_TRX_LINES_TO_REV');
6780: FND_MSG_PUB.Add;
6781: LogMessage(FND_LOG.LEVEL_ERROR, FND_MSG_PUB.Get(p_encoded => 'F'));
6782: RAISE FND_API.G_EXC_ERROR;
6783:
6784: end if;
6785:
6786: /* Create credit memos */
6797: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Update successfull!');
6798:
6799: STORE_LAST_PAYMENT_NUMBER(l_LOAN_ID);
6800:
6801: if P_COMMIT = FND_API.G_TRUE then
6802: COMMIT WORK;
6803: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
6804: end if;
6805:
6805:
6806: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully reversed offcycle bill');
6807:
6808: -- END OF BODY OF API
6809: x_return_status := FND_API.G_RET_STS_SUCCESS;
6810:
6811: -- Standard call to get message count and if count is 1, get message info
6812: FND_MSG_PUB.Count_And_Get(
6813: p_encoded => FND_API.G_FALSE,
6809: x_return_status := FND_API.G_RET_STS_SUCCESS;
6810:
6811: -- Standard call to get message count and if count is 1, get message info
6812: FND_MSG_PUB.Count_And_Get(
6813: p_encoded => FND_API.G_FALSE,
6814: p_count => x_msg_count,
6815: p_data => x_msg_data);
6816:
6817: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
6816:
6817: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
6818:
6819: EXCEPTION
6820: WHEN FND_API.G_EXC_ERROR THEN
6821: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6822: x_return_status := FND_API.G_RET_STS_ERROR;
6823: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6824: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6818:
6819: EXCEPTION
6820: WHEN FND_API.G_EXC_ERROR THEN
6821: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6822: x_return_status := FND_API.G_RET_STS_ERROR;
6823: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6824: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6825: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6826: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6821: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6822: x_return_status := FND_API.G_RET_STS_ERROR;
6823: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6824: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6825: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6826: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6827: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6828: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6829: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6823: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6824: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6825: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6826: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6827: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6828: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6829: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6830: WHEN OTHERS THEN
6831: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6828: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6829: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
6830: WHEN OTHERS THEN
6831: ROLLBACK TO REVERSE_OFFCYCLE_BILL;
6832: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6833: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
6834: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
6835: END IF;
6836: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
6973: SAVEPOINT ADJUST_ORIGINAL_RECEIVABLE;
6974: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6975:
6976: -- Standard call to check for call compatibility
6977: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6978: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6979: END IF;
6980:
6981: -- Initialize message list if p_init_msg_list is set to TRUE
6974: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
6975:
6976: -- Standard call to check for call compatibility
6977: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6978: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6979: END IF;
6980:
6981: -- Initialize message list if p_init_msg_list is set to TRUE
6982: IF FND_API.To_Boolean(p_init_msg_list) THEN
6978: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6979: END IF;
6980:
6981: -- Initialize message list if p_init_msg_list is set to TRUE
6982: IF FND_API.To_Boolean(p_init_msg_list) THEN
6983: FND_MSG_PUB.initialize;
6984: END IF;
6985:
6986: -- Initialize API return status to success
6983: FND_MSG_PUB.initialize;
6984: END IF;
6985:
6986: -- Initialize API return status to success
6987: l_return_status := FND_API.G_RET_STS_SUCCESS;
6988:
6989: -- START OF BODY OF API
6990:
6991: init;
6998: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Loan must be set.');
6999: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_LOAN');
7000: FND_MSG_PUB.Add;
7001: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7002: RAISE FND_API.G_EXC_ERROR;
7003:
7004: end if;
7005:
7006: /* checking for system options values required for adjustment */
7008: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Receivables activity name is not set in the system option.');
7009: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_REC_TRX_IN_SYS_OPT');
7010: FND_MSG_PUB.Add;
7011: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7012: RAISE FND_API.G_EXC_ERROR;
7013:
7014: end if;
7015:
7016:
7024: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: USSGL Transaction Code is not set in the system option.');
7025: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_TRX_CODE_IN_SYS_OPT');
7026: FND_MSG_PUB.Add;
7027: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7028: RAISE FND_API.G_EXC_ERROR;
7029:
7030: end if;
7031:
7032: end if;
7070: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Receivable remaining amount: ' || l_amount_due_remaining);
7071: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_ADJ_AMT');
7072: FND_MSG_PUB.Add;
7073: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7074: RAISE FND_API.G_EXC_ERROR;
7075: else
7076: l_type := 'LINE';
7077: end if;
7078:
7085: FND_MESSAGE.SET_NAME('LNS', 'LNS_DUPL_ADJ_ORIG_REC');
7086: FND_MESSAGE.SET_TOKEN('ADJ', l_adj_number);
7087: FND_MSG_PUB.Add;
7088: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7089: RAISE FND_API.G_EXC_ERROR;
7090: end if;
7091:
7092: /* buld comments */
7093: l_comments := 'Loan ' || l_loan_number || ' - line ' || l_Count;
7125: P_ORG_ID => l_org_id);
7126:
7127: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Updating LNS_LOAN_LINES...');
7128: LNS_LOAN_LINE_PUB.UPDATE_LINE_ADJUSTMENT_NUMBER(
7129: p_init_msg_list => FND_API.G_FALSE
7130: ,p_loan_id => P_LOAN_ID
7131: ,p_loan_line_id => l_line_id
7132: ,p_rec_adjustment_number => l_adj_number
7133: ,p_rec_adjustment_id => l_adj_id
7140: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
7141: IF l_return_status = 'S' THEN
7142: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Successfully updated LNS_LOAN_LINES');
7143: ELSE
7144: RAISE FND_API.G_EXC_ERROR;
7145: END IF;
7146: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully created adjustment ' || l_adj_number || ' for original receivable ' || l_trx_number);
7147:
7148: END LOOP;
7153: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Cannot find receivable to adjust.');
7154: FND_MESSAGE.SET_NAME('LNS', 'LNS_CANT_FIND_ORIG_REC');
7155: FND_MSG_PUB.Add;
7156: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7157: RAISE FND_API.G_EXC_ERROR;
7158: end if;
7159:
7160: if P_COMMIT = FND_API.G_TRUE then
7161: COMMIT WORK;
7156: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7157: RAISE FND_API.G_EXC_ERROR;
7158: end if;
7159:
7160: if P_COMMIT = FND_API.G_TRUE then
7161: COMMIT WORK;
7162: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
7163: end if;
7164:
7164:
7165: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully adjusted ' || l_Count || ' original receivable for loan ' || l_loan_number);
7166:
7167: -- END OF BODY OF API
7168: x_return_status := FND_API.G_RET_STS_SUCCESS;
7169:
7170: -- Standard call to get message count and if count is 1, get message info
7171: FND_MSG_PUB.Count_And_Get(
7172: p_encoded => FND_API.G_FALSE,
7168: x_return_status := FND_API.G_RET_STS_SUCCESS;
7169:
7170: -- Standard call to get message count and if count is 1, get message info
7171: FND_MSG_PUB.Count_And_Get(
7172: p_encoded => FND_API.G_FALSE,
7173: p_count => x_msg_count,
7174: p_data => x_msg_data);
7175:
7176: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
7175:
7176: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
7177:
7178: EXCEPTION
7179: WHEN FND_API.G_EXC_ERROR THEN
7180: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7181: x_return_status := FND_API.G_RET_STS_ERROR;
7182: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7183: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7177:
7178: EXCEPTION
7179: WHEN FND_API.G_EXC_ERROR THEN
7180: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7181: x_return_status := FND_API.G_RET_STS_ERROR;
7182: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7183: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7184: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7185: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7180: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7181: x_return_status := FND_API.G_RET_STS_ERROR;
7182: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7183: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7184: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7185: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7186: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7187: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7188: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7182: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7183: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7184: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7185: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7186: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7187: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7188: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7189: WHEN OTHERS THEN
7190: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7187: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7188: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7189: WHEN OTHERS THEN
7190: ROLLBACK TO ADJUST_ORIGINAL_RECEIVABLE;
7191: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7192: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
7193: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
7194: END IF;
7195: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7288: SAVEPOINT PREBILL_SINGLE_LOAN;
7289: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
7290:
7291: -- Standard call to check for call compatibility
7292: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
7293: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7294: END IF;
7295:
7296: -- Initialize message list if p_init_msg_list is set to TRUE
7289: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
7290:
7291: -- Standard call to check for call compatibility
7292: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
7293: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7294: END IF;
7295:
7296: -- Initialize message list if p_init_msg_list is set to TRUE
7297: IF FND_API.To_Boolean(p_init_msg_list) THEN
7293: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7294: END IF;
7295:
7296: -- Initialize message list if p_init_msg_list is set to TRUE
7297: IF FND_API.To_Boolean(p_init_msg_list) THEN
7298: FND_MSG_PUB.initialize;
7299: END IF;
7300:
7301: -- Initialize API return status to success
7298: FND_MSG_PUB.initialize;
7299: END IF;
7300:
7301: -- Initialize API return status to success
7302: l_return_status := FND_API.G_RET_STS_SUCCESS;
7303:
7304: -- START OF BODY OF API
7305: l_installment_num := 0;
7306:
7310: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Loan must be set.');
7311: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_LOAN');
7312: FND_MSG_PUB.Add;
7313: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7314: RAISE FND_API.G_EXC_ERROR;
7315:
7316: end if;
7317:
7318: /* getting loan_number */
7329:
7330: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling lns_financials.getInstallment...');
7331: lns_financials.getInstallment(
7332: p_api_version => 1.0,
7333: p_init_msg_list => FND_API.G_TRUE,
7334: p_commit => FND_API.G_FALSE,
7335: p_loan_Id => P_LOAN_ID,
7336: p_installment_number => l_installment_num,
7337: x_amortization_rec => l_amortization_rec,
7330: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling lns_financials.getInstallment...');
7331: lns_financials.getInstallment(
7332: p_api_version => 1.0,
7333: p_init_msg_list => FND_API.G_TRUE,
7334: p_commit => FND_API.G_FALSE,
7335: p_loan_Id => P_LOAN_ID,
7336: p_installment_number => l_installment_num,
7337: x_amortization_rec => l_amortization_rec,
7338: x_fees_tbl => l_fee_tbl,
7344:
7345: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling lns_financials.getOpenInstallment...');
7346: lns_financials.getOpenInstallment(
7347: -- p_api_version => 1.0,
7348: p_init_msg_list => FND_API.G_TRUE,
7349: -- p_commit => FND_API.G_FALSE,
7350: p_loan_Id => P_LOAN_ID,
7351: p_installment_number => l_installment_num,
7352: x_amortization_rec => l_amortization_rec,
7345: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling lns_financials.getOpenInstallment...');
7346: lns_financials.getOpenInstallment(
7347: -- p_api_version => 1.0,
7348: p_init_msg_list => FND_API.G_TRUE,
7349: -- p_commit => FND_API.G_FALSE,
7350: p_loan_Id => P_LOAN_ID,
7351: p_installment_number => l_installment_num,
7352: x_amortization_rec => l_amortization_rec,
7353: x_fees_tbl => l_fee_tbl,
7360: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
7361: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_msg_data: ' || substr(l_msg_data,1,225));
7362:
7363: if l_return_status <> 'S' then
7364: RAISE FND_API.G_EXC_ERROR;
7365: end if;
7366:
7367: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Data returned from lns_financials.getInstallment:');
7368: LogMessage(FND_LOG.LEVEL_STATEMENT, 'INSTALLMENT_NUMBER: ' || l_amortization_rec.INSTALLMENT_NUMBER);
7431:
7432: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_FEE_INSTAL');
7433: FND_MSG_PUB.Add;
7434: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7435: RAISE FND_API.G_EXC_ERROR;
7436:
7437: end if;
7438:
7439: /* updating LNS_FEE_SCHEDULES with billed_flag = Y */
7453: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Calling LNS_BILLING_BATCH_PUB.CREATE_OFFCYCLE_BILLS...');
7454:
7455: LNS_BILLING_BATCH_PUB.CREATE_OFFCYCLE_BILLS(
7456: P_API_VERSION => 1.0,
7457: P_INIT_MSG_LIST => FND_API.G_TRUE,
7458: P_COMMIT => FND_API.G_FALSE,
7459: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
7460: P_BILL_HEADERS_TBL => l_BILL_HEADERS_TBL,
7461: P_BILL_LINES_TBL => l_BILL_LINES_TBL,
7454:
7455: LNS_BILLING_BATCH_PUB.CREATE_OFFCYCLE_BILLS(
7456: P_API_VERSION => 1.0,
7457: P_INIT_MSG_LIST => FND_API.G_TRUE,
7458: P_COMMIT => FND_API.G_FALSE,
7459: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
7460: P_BILL_HEADERS_TBL => l_BILL_HEADERS_TBL,
7461: P_BILL_LINES_TBL => l_BILL_LINES_TBL,
7462: x_return_status => l_return_status,
7455: LNS_BILLING_BATCH_PUB.CREATE_OFFCYCLE_BILLS(
7456: P_API_VERSION => 1.0,
7457: P_INIT_MSG_LIST => FND_API.G_TRUE,
7458: P_COMMIT => FND_API.G_FALSE,
7459: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
7460: P_BILL_HEADERS_TBL => l_BILL_HEADERS_TBL,
7461: P_BILL_LINES_TBL => l_BILL_LINES_TBL,
7462: x_return_status => l_return_status,
7463: x_msg_count => l_msg_count,
7465:
7466: LogMessage(FND_LOG.LEVEL_STATEMENT, 'l_return_status: ' || l_return_status);
7467:
7468: if l_return_status <> 'S' then
7469: RAISE FND_API.G_EXC_ERROR;
7470: end if;
7471:
7472: if P_COMMIT = FND_API.G_TRUE then
7473: COMMIT WORK;
7468: if l_return_status <> 'S' then
7469: RAISE FND_API.G_EXC_ERROR;
7470: end if;
7471:
7472: if P_COMMIT = FND_API.G_TRUE then
7473: COMMIT WORK;
7474: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
7475: end if;
7476:
7476:
7477: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully billed 0-th installment for loan ' || l_loan_number);
7478:
7479: -- END OF BODY OF API
7480: x_return_status := FND_API.G_RET_STS_SUCCESS;
7481: X_BILLED_YN := 'Y';
7482:
7483: -- Standard call to get message count and if count is 1, get message info
7484: FND_MSG_PUB.Count_And_Get(
7481: X_BILLED_YN := 'Y';
7482:
7483: -- Standard call to get message count and if count is 1, get message info
7484: FND_MSG_PUB.Count_And_Get(
7485: p_encoded => FND_API.G_FALSE,
7486: p_count => x_msg_count,
7487: p_data => x_msg_data);
7488:
7489: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
7488:
7489: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
7490:
7491: EXCEPTION
7492: WHEN FND_API.G_EXC_ERROR THEN
7493: ROLLBACK TO PREBILL_SINGLE_LOAN;
7494: x_return_status := FND_API.G_RET_STS_ERROR;
7495: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7496: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7490:
7491: EXCEPTION
7492: WHEN FND_API.G_EXC_ERROR THEN
7493: ROLLBACK TO PREBILL_SINGLE_LOAN;
7494: x_return_status := FND_API.G_RET_STS_ERROR;
7495: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7496: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7497: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7498: ROLLBACK TO PREBILL_SINGLE_LOAN;
7493: ROLLBACK TO PREBILL_SINGLE_LOAN;
7494: x_return_status := FND_API.G_RET_STS_ERROR;
7495: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7496: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7497: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7498: ROLLBACK TO PREBILL_SINGLE_LOAN;
7499: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7500: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7501: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7495: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7496: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7497: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7498: ROLLBACK TO PREBILL_SINGLE_LOAN;
7499: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7500: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7501: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7502: WHEN OTHERS THEN
7503: ROLLBACK TO PREBILL_SINGLE_LOAN;
7500: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7501: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7502: WHEN OTHERS THEN
7503: ROLLBACK TO PREBILL_SINGLE_LOAN;
7504: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7505: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
7506: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
7507: END IF;
7508: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7625: SAVEPOINT FORGIVENESS_ADJUSTMENT;
7626: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
7627:
7628: -- Standard call to check for call compatibility
7629: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
7630: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7631: END IF;
7632:
7633: -- Initialize message list if p_init_msg_list is set to TRUE
7626: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Savepoint is established');
7627:
7628: -- Standard call to check for call compatibility
7629: IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
7630: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7631: END IF;
7632:
7633: -- Initialize message list if p_init_msg_list is set to TRUE
7634: IF FND_API.To_Boolean(p_init_msg_list) THEN
7630: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7631: END IF;
7632:
7633: -- Initialize message list if p_init_msg_list is set to TRUE
7634: IF FND_API.To_Boolean(p_init_msg_list) THEN
7635: FND_MSG_PUB.initialize;
7636: END IF;
7637:
7638: -- Initialize API return status to success
7635: FND_MSG_PUB.initialize;
7636: END IF;
7637:
7638: -- Initialize API return status to success
7639: X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
7640:
7641: -- START OF BODY OF API
7642: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Input loan_id = ' || P_LOAN_ID);
7643:
7647: -- LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Loan must be set.');
7648: FND_MESSAGE.SET_NAME('LNS', 'LNS_NO_LOAN');
7649: FND_MSG_PUB.Add;
7650: LogMessage(FND_LOG.LEVEL_UNEXPECTED, FND_MSG_PUB.Get(p_encoded => 'F'));
7651: RAISE FND_API.G_EXC_ERROR;
7652:
7653: end if;
7654:
7655: /* checking for system options values required for adjustment */
7695: end if;
7696:
7697: if l_payment_schedule_id is null then
7698: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'ERROR: Cannot create adjustment - principal invoice is INCOMPLETE!');
7699: RAISE FND_API.G_EXC_ERROR;
7700: end if;
7701:
7702: if l_forgiveness_flag = 'N' then
7703: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Loan is not part of loan forgiveness program. Exiting.');
7746:
7747: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'l_adj_number = ' || l_adj_number || ' (l_adj_id = ' || l_adj_id || ')');
7748:
7749: if l_adj_id is null and l_adj_number is null then
7750: RAISE FND_API.G_EXC_ERROR;
7751: end if;
7752:
7753: if P_COMMIT = FND_API.G_TRUE then
7754: COMMIT WORK;
7749: if l_adj_id is null and l_adj_number is null then
7750: RAISE FND_API.G_EXC_ERROR;
7751: end if;
7752:
7753: if P_COMMIT = FND_API.G_TRUE then
7754: COMMIT WORK;
7755: LogMessage(FND_LOG.LEVEL_STATEMENT, 'Commited');
7756: end if;
7757:
7757:
7758: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Successfully adjusted payment ' || l_payment_number || ' for loan ' || l_loan_number);
7759:
7760: -- END OF BODY OF API
7761: x_return_status := FND_API.G_RET_STS_SUCCESS;
7762:
7763: -- Standard call to get message count and if count is 1, get message info
7764: FND_MSG_PUB.Count_And_Get(
7765: p_encoded => FND_API.G_FALSE,
7761: x_return_status := FND_API.G_RET_STS_SUCCESS;
7762:
7763: -- Standard call to get message count and if count is 1, get message info
7764: FND_MSG_PUB.Count_And_Get(
7765: p_encoded => FND_API.G_FALSE,
7766: p_count => x_msg_count,
7767: p_data => x_msg_data);
7768:
7769: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
7768:
7769: LogMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME || '.' || l_api_name || ' -');
7770:
7771: EXCEPTION
7772: WHEN FND_API.G_EXC_ERROR THEN
7773: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7774: x_return_status := FND_API.G_RET_STS_ERROR;
7775: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7776: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7770:
7771: EXCEPTION
7772: WHEN FND_API.G_EXC_ERROR THEN
7773: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7774: x_return_status := FND_API.G_RET_STS_ERROR;
7775: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7776: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7777: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7778: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7773: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7774: x_return_status := FND_API.G_RET_STS_ERROR;
7775: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7776: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7777: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7778: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7779: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7780: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7781: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7775: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7776: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7777: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7778: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7779: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7780: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7781: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7782: WHEN OTHERS THEN
7783: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7780: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7781: LogMessage(FND_LOG.LEVEL_UNEXPECTED, 'Rollbacked');
7782: WHEN OTHERS THEN
7783: ROLLBACK TO FORGIVENESS_ADJUSTMENT;
7784: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7785: IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)THEN
7786: FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
7787: END IF;
7788: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);