From 22e4c7446e2c700607be670cd277897cb5450a0a Mon Sep 17 00:00:00 2001 From: Henning Wendtland <156231187+HenningWendtland@users.noreply.github.com> Date: Tue, 7 Oct 2025 11:58:19 +0200 Subject: [PATCH] feat: add company links to Email Account and Communication (#49721) Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com> --- erpnext/patches.txt | 1 + .../v16_0/create_company_custom_fields.py | 6 ++++ erpnext/setup/install.py | 34 +++++++++++++++++++ erpnext/support/doctype/issue/issue.json | 6 ++-- 4 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 erpnext/patches/v16_0/create_company_custom_fields.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 72926b28849..71b05f55de3 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -261,6 +261,7 @@ execute:frappe.rename_doc("Report", "TDS Payable Monthly", "Tax Withholding Deta erpnext.patches.v14_0.update_proprietorship_to_individual erpnext.patches.v15_0.rename_subcontracting_fields erpnext.patches.v15_0.unset_incorrect_additional_discount_percentage +erpnext.patches.v16_0.create_company_custom_fields [post_model_sync] erpnext.patches.v15_0.rename_gross_purchase_amount_to_net_purchase_amount diff --git a/erpnext/patches/v16_0/create_company_custom_fields.py b/erpnext/patches/v16_0/create_company_custom_fields.py new file mode 100644 index 00000000000..76ab40f10b9 --- /dev/null +++ b/erpnext/patches/v16_0/create_company_custom_fields.py @@ -0,0 +1,6 @@ +from erpnext.setup.install import create_custom_company_links + + +def execute(): + """Add link fields to Company in Email Account and Communication.""" + create_custom_company_links() diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index d4fe40c1f25..fd98e124d70 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -23,6 +23,7 @@ def after_install(): set_single_defaults() create_print_setting_custom_fields() create_marketgin_campagin_custom_fields() + create_custom_company_links() add_all_roles_to("Administrator") create_default_success_action() create_incoterms() @@ -139,6 +140,39 @@ def create_default_success_action(): doc.insert(ignore_permissions=True) +def create_custom_company_links(): + """Add link fields to Company in Email Account and Communication. + + These DocTypes are provided by the Frappe Framework but need to be associated + with a company in ERPNext to allow for multitenancy. I.e. one company should + not be able to access emails and communications from another company. + """ + create_custom_fields( + { + "Email Account": [ + { + "label": _("Company"), + "fieldname": "company", + "fieldtype": "Link", + "options": "Company", + "insert_after": "email_id", + }, + ], + "Communication": [ + { + "label": _("Company"), + "fieldname": "company", + "fieldtype": "Link", + "options": "Company", + "insert_after": "email_account", + "fetch_from": "email_account.company", + "read_only": 1, + }, + ], + }, + ) + + def add_company_to_session_defaults(): settings = frappe.get_single("Session Default Settings") settings.append("session_defaults", {"ref_doctype": "Company"}) diff --git a/erpnext/support/doctype/issue/issue.json b/erpnext/support/doctype/issue/issue.json index 20c3853f487..958cab52be0 100644 --- a/erpnext/support/doctype/issue/issue.json +++ b/erpnext/support/doctype/issue/issue.json @@ -233,6 +233,8 @@ "options": "Project" }, { + "fetch_from": "email_account.company", + "fetch_if_empty": 1, "fieldname": "company", "fieldtype": "Link", "label": "Company", @@ -391,7 +393,7 @@ "icon": "fa fa-ticket", "idx": 7, "links": [], - "modified": "2025-02-18 21:18:52.797745", + "modified": "2025-09-25 11:10:53.556731", "modified_by": "Administrator", "module": "Support", "name": "Issue", @@ -421,4 +423,4 @@ "title_field": "subject", "track_changes": 1, "track_seen": 1 -} \ No newline at end of file +}