diff --git a/erpnext/accounts/page/bank_reconciliation/auto_bank_reconciliation.py b/erpnext/accounts/page/bank_reconciliation/auto_bank_reconciliation.py index e5bb72c799390e5035358db4bd40a4ae078a0289..494ba3ac0b493a65a9e80310816fd3e36fc59207 100644 --- a/erpnext/accounts/page/bank_reconciliation/auto_bank_reconciliation.py +++ b/erpnext/accounts/page/bank_reconciliation/auto_bank_reconciliation.py @@ -44,6 +44,9 @@ def _reconcile_transactions(bank_transactions): class AutoBankReconciliation: def __init__(self, bank_transaction): self.bank_transaction = bank_transaction + self.bank_account = frappe.get_cached_value( + "Bank Account", self.bank_transaction.get("bank_account"), "account" + ) self.documents = [] def reconcile(self): @@ -124,7 +127,11 @@ class AutoBankReconciliation: def get_corresponding_payment_entries(self, matching_name): if frappe.db.exists("Payment Entry", matching_name): doc = frappe.get_doc("Payment Entry", matching_name) - if doc.docstatus == 1 and doc.status == "Unreconciled": + if ( + doc.docstatus == 1 + and doc.status == "Unreconciled" + and self.bank_account in [doc.paid_from, doc.paid_to] + ): return doc diff --git a/erpnext/accounts/page/bank_reconciliation/stripe_reconciliation.py b/erpnext/accounts/page/bank_reconciliation/stripe_reconciliation.py index 0f8fc6366912cd4a2c4cdce0d8ff432598aada06..a38b2414e4f650ea699945d5110de942b0a2e110 100644 --- a/erpnext/accounts/page/bank_reconciliation/stripe_reconciliation.py +++ b/erpnext/accounts/page/bank_reconciliation/stripe_reconciliation.py @@ -45,6 +45,9 @@ class StripeReconciliation: def __init__(self, stripe_settings, bank_transaction): self.stripe_settings = stripe_settings self.bank_transaction = bank_transaction + self.bank_account = frappe.get_cached_value( + "Bank Account", self.bank_transaction.get("bank_account"), "account" + ) self.date = self.bank_transaction.get("date") self.payouts = [] self.filtered_payout = {} @@ -130,16 +133,24 @@ class StripeReconciliation: for doctype in ["Payment Entry", "Sales Invoice", "Purchase Invoice", "Expense Claim"]: reference_field = self.get_reference_field(doctype) + filters = {"unreconciled_amount": ("!=", 0), "docstatus": 1, reference_field: ("is", "set")} + if doctype == "Payment Entry": + filters["paid_to"] = self.bank_account + + or_filters = [ + {reference_field: ("like", transaction.get("charge", {}).get("id"))}, + {reference_field: ("like", transaction.get("charge", {}).get("payment_intent"))}, + ] + + if transaction.get("charge", {}).get("invoice"): + or_filters.append({reference_field: ("like", transaction.get("charge", {}).get("invoice"))}) + documents = [ dict(x, **{"doctype": doctype}) for x in frappe.get_all( doctype, - filters={"unreconciled_amount": ("!=", 0), "docstatus": 1}, - or_filters=[ - {reference_field: ("like", transaction.get("charge", {}).get("id"))}, - {reference_field: ("like", transaction.get("charge", {}).get("invoice"))}, - {reference_field: ("like", transaction.get("charge", {}).get("payment_intent"))}, - ], + filters=filters, + or_filters=or_filters, fields=["*"], ) ]