From bf6e32a960e761fa869b44db15cf61fabb5c7aef Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Sun, 25 Feb 2024 13:17:41 +0530 Subject: [PATCH 1/2] fix: unique gl account for plaid bank accounts --- .../doctype/plaid_settings/plaid_settings.py | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py index ec7d71e997..dc5a32971a 100644 --- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py +++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py @@ -10,7 +10,6 @@ from frappe.model.document import Document from frappe.utils import add_months, formatdate, getdate, sbool, today from plaid.errors import ItemError -from erpnext.accounts.doctype.journal_entry.journal_entry import get_default_bank_cash_account from erpnext.erpnext_integrations.doctype.plaid_settings.plaid_connector import PlaidConnector @@ -90,9 +89,15 @@ def add_bank_accounts(response, bank, company): bank = json.loads(bank) result = [] - default_gl_account = get_default_bank_cash_account(company, "Bank") - if not default_gl_account: - frappe.throw(_("Please setup a default bank account for company {0}").format(company)) + parent_gl_account = frappe.db.get_all( + "Account", {"company": company, "account_type": "Bank", "is_group": 1, "disabled": 0} + ) + if not parent_gl_account: + frappe.throw( + _( + "Please setup and enable a group account with the Account Type - {0} for the company {1}" + ).format(frappe.bold("Bank"), company) + ) for account in response["accounts"]: acc_type = frappe.db.get_value("Bank Account Type", account["type"]) @@ -108,11 +113,22 @@ def add_bank_accounts(response, bank, company): if not existing_bank_account: try: + gl_account = frappe.get_doc( + { + "doctype": "Account", + "account_name": account["name"] + " - " + response["institution"]["name"], + "parent_account": parent_gl_account[0].name, + "account_type": "Bank", + "company": company, + } + ) + gl_account.insert(ignore_if_duplicate=True) + new_account = frappe.get_doc( { "doctype": "Bank Account", "bank": bank["bank_name"], - "account": default_gl_account.account, + "account": gl_account.name, "account_name": account["name"], "account_type": account.get("type", ""), "account_subtype": account.get("subtype", ""), From c42444ab3bf1e35ad5bb87f5f94ea78b9052c12e Mon Sep 17 00:00:00 2001 From: Gursheen Anand Date: Sun, 25 Feb 2024 13:18:30 +0530 Subject: [PATCH 2/2] fix: remove config for default bank account in test --- .../doctype/plaid_settings/test_plaid_settings.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py b/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py index 67168536e7..666def31d5 100644 --- a/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py +++ b/erpnext/erpnext_integrations/doctype/plaid_settings/test_plaid_settings.py @@ -7,7 +7,6 @@ import unittest import frappe from frappe.utils.response import json_handler -from erpnext.accounts.doctype.journal_entry.journal_entry import get_default_bank_cash_account from erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings import ( add_account_subtype, add_account_type, @@ -72,14 +71,6 @@ class TestPlaidSettings(unittest.TestCase): bank = json.dumps(frappe.get_doc("Bank", "Citi").as_dict(), default=json_handler) company = frappe.db.get_single_value("Global Defaults", "default_company") - if frappe.db.get_value("Company", company, "default_bank_account") is None: - frappe.db.set_value( - "Company", - company, - "default_bank_account", - get_default_bank_cash_account(company, "Cash").get("account"), - ) - add_bank_accounts(bank_accounts, bank, company) transactions = {