fix: Bank clearance for case loan (disburstment/repayment) (#34586)
This commit is contained in:
parent
1e3eb4deed
commit
74b29eb5e2
@ -81,7 +81,7 @@ class BankClearance(Document):
|
|||||||
|
|
||||||
loan_disbursement = frappe.qb.DocType("Loan Disbursement")
|
loan_disbursement = frappe.qb.DocType("Loan Disbursement")
|
||||||
|
|
||||||
loan_disbursements = (
|
query = (
|
||||||
frappe.qb.from_(loan_disbursement)
|
frappe.qb.from_(loan_disbursement)
|
||||||
.select(
|
.select(
|
||||||
ConstantColumn("Loan Disbursement").as_("payment_document"),
|
ConstantColumn("Loan Disbursement").as_("payment_document"),
|
||||||
@ -90,17 +90,22 @@ class BankClearance(Document):
|
|||||||
ConstantColumn(0).as_("debit"),
|
ConstantColumn(0).as_("debit"),
|
||||||
loan_disbursement.reference_number.as_("cheque_number"),
|
loan_disbursement.reference_number.as_("cheque_number"),
|
||||||
loan_disbursement.reference_date.as_("cheque_date"),
|
loan_disbursement.reference_date.as_("cheque_date"),
|
||||||
|
loan_disbursement.clearance_date.as_("clearance_date"),
|
||||||
loan_disbursement.disbursement_date.as_("posting_date"),
|
loan_disbursement.disbursement_date.as_("posting_date"),
|
||||||
loan_disbursement.applicant.as_("against_account"),
|
loan_disbursement.applicant.as_("against_account"),
|
||||||
)
|
)
|
||||||
.where(loan_disbursement.docstatus == 1)
|
.where(loan_disbursement.docstatus == 1)
|
||||||
.where(loan_disbursement.disbursement_date >= self.from_date)
|
.where(loan_disbursement.disbursement_date >= self.from_date)
|
||||||
.where(loan_disbursement.disbursement_date <= self.to_date)
|
.where(loan_disbursement.disbursement_date <= self.to_date)
|
||||||
.where(loan_disbursement.clearance_date.isnull())
|
|
||||||
.where(loan_disbursement.disbursement_account.isin([self.bank_account, self.account]))
|
.where(loan_disbursement.disbursement_account.isin([self.bank_account, self.account]))
|
||||||
.orderby(loan_disbursement.disbursement_date)
|
.orderby(loan_disbursement.disbursement_date)
|
||||||
.orderby(loan_disbursement.name, order=frappe.qb.desc)
|
.orderby(loan_disbursement.name, order=frappe.qb.desc)
|
||||||
).run(as_dict=1)
|
)
|
||||||
|
|
||||||
|
if not self.include_reconciled_entries:
|
||||||
|
query = query.where(loan_disbursement.clearance_date.isnull())
|
||||||
|
|
||||||
|
loan_disbursements = query.run(as_dict=1)
|
||||||
|
|
||||||
loan_repayment = frappe.qb.DocType("Loan Repayment")
|
loan_repayment = frappe.qb.DocType("Loan Repayment")
|
||||||
|
|
||||||
@ -113,16 +118,19 @@ class BankClearance(Document):
|
|||||||
ConstantColumn(0).as_("credit"),
|
ConstantColumn(0).as_("credit"),
|
||||||
loan_repayment.reference_number.as_("cheque_number"),
|
loan_repayment.reference_number.as_("cheque_number"),
|
||||||
loan_repayment.reference_date.as_("cheque_date"),
|
loan_repayment.reference_date.as_("cheque_date"),
|
||||||
|
loan_repayment.clearance_date.as_("clearance_date"),
|
||||||
loan_repayment.applicant.as_("against_account"),
|
loan_repayment.applicant.as_("against_account"),
|
||||||
loan_repayment.posting_date,
|
loan_repayment.posting_date,
|
||||||
)
|
)
|
||||||
.where(loan_repayment.docstatus == 1)
|
.where(loan_repayment.docstatus == 1)
|
||||||
.where(loan_repayment.clearance_date.isnull())
|
|
||||||
.where(loan_repayment.posting_date >= self.from_date)
|
.where(loan_repayment.posting_date >= self.from_date)
|
||||||
.where(loan_repayment.posting_date <= self.to_date)
|
.where(loan_repayment.posting_date <= self.to_date)
|
||||||
.where(loan_repayment.payment_account.isin([self.bank_account, self.account]))
|
.where(loan_repayment.payment_account.isin([self.bank_account, self.account]))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not self.include_reconciled_entries:
|
||||||
|
query = query.where(loan_repayment.clearance_date.isnull())
|
||||||
|
|
||||||
if frappe.db.has_column("Loan Repayment", "repay_from_salary"):
|
if frappe.db.has_column("Loan Repayment", "repay_from_salary"):
|
||||||
query = query.where((loan_repayment.repay_from_salary == 0))
|
query = query.where((loan_repayment.repay_from_salary == 0))
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
from frappe.query_builder.custom import ConstantColumn
|
||||||
from frappe.utils import getdate, nowdate
|
from frappe.utils import getdate, nowdate
|
||||||
|
|
||||||
|
|
||||||
@ -91,4 +92,65 @@ def get_entries(filters):
|
|||||||
as_list=1,
|
as_list=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
return sorted(journal_entries + payment_entries, key=lambda k: k[2] or getdate(nowdate()))
|
# Loan Disbursement
|
||||||
|
loan_disbursement = frappe.qb.DocType("Loan Disbursement")
|
||||||
|
|
||||||
|
query = (
|
||||||
|
frappe.qb.from_(loan_disbursement)
|
||||||
|
.select(
|
||||||
|
ConstantColumn("Loan Disbursement").as_("payment_document_type"),
|
||||||
|
loan_disbursement.name.as_("payment_entry"),
|
||||||
|
loan_disbursement.disbursement_date.as_("posting_date"),
|
||||||
|
loan_disbursement.reference_number.as_("cheque_no"),
|
||||||
|
loan_disbursement.clearance_date.as_("clearance_date"),
|
||||||
|
loan_disbursement.applicant.as_("against"),
|
||||||
|
-loan_disbursement.disbursed_amount.as_("amount"),
|
||||||
|
)
|
||||||
|
.where(loan_disbursement.docstatus == 1)
|
||||||
|
.where(loan_disbursement.disbursement_date >= filters["from_date"])
|
||||||
|
.where(loan_disbursement.disbursement_date <= filters["to_date"])
|
||||||
|
.where(loan_disbursement.disbursement_account == filters["account"])
|
||||||
|
.orderby(loan_disbursement.disbursement_date, order=frappe.qb.desc)
|
||||||
|
.orderby(loan_disbursement.name, order=frappe.qb.desc)
|
||||||
|
)
|
||||||
|
|
||||||
|
if filters.get("from_date"):
|
||||||
|
query = query.where(loan_disbursement.disbursement_date >= filters["from_date"])
|
||||||
|
if filters.get("to_date"):
|
||||||
|
query = query.where(loan_disbursement.disbursement_date <= filters["to_date"])
|
||||||
|
|
||||||
|
loan_disbursements = query.run(as_list=1)
|
||||||
|
|
||||||
|
# Loan Repayment
|
||||||
|
loan_repayment = frappe.qb.DocType("Loan Repayment")
|
||||||
|
|
||||||
|
query = (
|
||||||
|
frappe.qb.from_(loan_repayment)
|
||||||
|
.select(
|
||||||
|
ConstantColumn("Loan Repayment").as_("payment_document_type"),
|
||||||
|
loan_repayment.name.as_("payment_entry"),
|
||||||
|
loan_repayment.posting_date.as_("posting_date"),
|
||||||
|
loan_repayment.reference_number.as_("cheque_no"),
|
||||||
|
loan_repayment.clearance_date.as_("clearance_date"),
|
||||||
|
loan_repayment.applicant.as_("against"),
|
||||||
|
loan_repayment.amount_paid.as_("amount"),
|
||||||
|
)
|
||||||
|
.where(loan_repayment.docstatus == 1)
|
||||||
|
.where(loan_repayment.posting_date >= filters["from_date"])
|
||||||
|
.where(loan_repayment.posting_date <= filters["to_date"])
|
||||||
|
.where(loan_repayment.payment_account == filters["account"])
|
||||||
|
.orderby(loan_repayment.posting_date, order=frappe.qb.desc)
|
||||||
|
.orderby(loan_repayment.name, order=frappe.qb.desc)
|
||||||
|
)
|
||||||
|
|
||||||
|
if filters.get("from_date"):
|
||||||
|
query = query.where(loan_repayment.posting_date >= filters["from_date"])
|
||||||
|
if filters.get("to_date"):
|
||||||
|
query = query.where(loan_repayment.posting_date <= filters["to_date"])
|
||||||
|
|
||||||
|
loan_repayments = query.run(as_list=1)
|
||||||
|
|
||||||
|
return sorted(
|
||||||
|
journal_entries + payment_entries + loan_disbursements + loan_repayments,
|
||||||
|
key=lambda k: k[2] or getdate(nowdate()),
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user