New to v15: What is the "is NPA" chackbox for in the Loan Details tab, when creating a new Customer?

Hello. We have been using v13 for about 3 years now, and are starting to migrate to v15.

When creating a new Customer in v15, I see there is now a “Loan Details” tab/section which wasn’t there in v13. Within it, there is a checkbox field for “is NPA”.

I tried searching the docs, this forum, and google, and was not able to find any information.
Can someone tell me what is a use example for this? What does checking the box do?

Thanks.

In finance, NPA is a Non-performing Asset.

When NPA (Non-Performing Asset) is detected, it affects the accrual of loan interest, specifically in the make_gl_entries method of the LoanInterestAccrual class. Here’s a detailed explanation:

Code Overview

  1. LoanInterestAccrual Class:

    • This class is responsible for handling the accrual of interest on loans.
    • Key methods include validate, on_submit, on_cancel, make_gl_entries, and update_is_accrued.
  2. make_gl_entries Method:

    • This method creates General Ledger (GL) entries for the interest accrual.
    • It differentiates between regular loans and NPAs by checking the self.is_npa attribute.

Specific Handling of NPA

When the is_npa attribute is True, the method uses different accounts for recording the interest receivable and income:

if self.is_npa:
    receivable_account = account_details.suspense_interest_receivable
    income_account = account_details.suspense_interest_income
else:
    receivable_account = account_details.interest_receivable_account
    income_account = self.interest_income_account

Explanation:

  1. Suspense Accounts for NPAs:

    • Suspense Interest Receivable Account: This account is used to record the interest that is due but not received from NPAs. Since NPAs are loans where the borrower is not making payments, the interest accrued is considered doubtful and is recorded in a suspense account.
    • Suspense Interest Income Account: This account records the interest income from NPAs, separating it from regular interest income. This separation helps in financial reporting and analysis, as income from NPAs is less certain.
  2. Regular Accounts for Non-NPAs:

    • Interest Receivable Account: This account is used for loans that are not classified as NPAs, where the interest is expected to be received.
    • Interest Income Account: This account records the interest income from non-NPA loans.

GL Entries

The method then creates GL entries for the interest accrual based on whether the loan is an NPA or not:

For NPAs:

gle_map.append(
    self.get_gl_dict(
        {
            "account": receivable_account,
            "party_type": self.applicant_type,
            "party": self.applicant,
            "against": income_account,
            "debit": self.interest_amount,
            "debit_in_account_currency": self.interest_amount,
            "against_voucher_type": "Loan",
            "against_voucher": self.loan,
            "remarks": _("Interest accrued from {0} to {1} against loan: {2}").format(
                self.last_accrual_date, self.posting_date, self.loan
            ),
            "cost_center": cost_center,
            "posting_date": self.posting_date,
        }
    )
)

gle_map.append(
    self.get_gl_dict(
        {
            "account": income_account,
            "against": receivable_account,
            "credit": self.interest_amount,
            "credit_in_account_currency": self.interest_amount,
            "against_voucher_type": "Loan",
            "against_voucher": self.loan,
            "remarks": ("Interest accrued from {0} to {1} against loan: {2}").format(
                self.last_accrual_date, self.posting_date, self.loan
            ),
            "cost_center": cost_center,
            "posting_date": self.posting_date,
        }
    )
)

Summary

  • Non-Performing Assets (NPA): When a loan is classified as an NPA, the interest accrued is recorded in suspense accounts instead of regular interest accounts. This reflects the uncertainty of collecting this interest.
  • GL Entries: The make_gl_entries method creates appropriate entries in either suspense or regular accounts based on the NPA status, ensuring accurate financial reporting and segregation of doubtful receivables from expected income.

Source:

2 Likes