fix: payment recon not showing payment entry when party_type is Student (#36920)
* fix: payment recon not showing payment entry when party_type is Student
* chore: code cleanup
* fix: payment recon based on account_type which is fetched from Party Type master
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 8bd7b5a..b99bb83 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -409,7 +409,7 @@
if (account and account_currency != existing_gle_currency) or not account:
account = get_party_gle_account(party_type, party, company)
- if include_advance and party_type in ["Customer", "Supplier"]:
+ if include_advance and party_type in ["Customer", "Supplier", "Student"]:
advance_account = get_party_advance_account(party_type, party, company)
if advance_account:
return [account, advance_account]
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 9725c25..0ca1e94 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -2437,7 +2437,8 @@
limit,
condition,
):
- payment_type = "Receive" if party_type == "Customer" else "Pay"
+ account_type = frappe.db.get_value("Party Type", party_type, "account_type")
+ payment_type = "Receive" if account_type == "Receivable" else "Pay"
payment_entry = frappe.qb.DocType("Payment Entry")
q = (
@@ -2454,7 +2455,7 @@
.where(payment_entry.docstatus == 1)
)
- if party_type == "Customer":
+ if payment_type == "Receive":
q = q.select((payment_entry.paid_from_account_currency).as_("currency"))
q = q.select(payment_entry.paid_from)
q = q.where(payment_entry.paid_from.isin(party_account))