From 6f94ba599bcb216386ddce692278fb96e3087856 Mon Sep 17 00:00:00 2001
From: Abdeali Chharchhodawala <99460106+Abdeali099@users.noreply.github.com>
Date: Fri, 28 Mar 2025 18:17:47 +0530
Subject: [PATCH 1/2] Merge pull request #46683 from
Abdeali099/set-employee-contact-details
fix: Set complete contact details for `Employee` in PE
(cherry picked from commit 8c9d630ee42d6856e9f57cc7b4c59b012f23e0ab)
# Conflicts:
# erpnext/accounts/doctype/payment_entry/payment_entry.json
# erpnext/accounts/doctype/payment_entry/payment_entry.py
---
.../doctype/payment_entry/payment_entry.json | 8 ++-
.../doctype/payment_entry/payment_entry.py | 15 +++-
erpnext/accounts/party.py | 70 ++++++++++++-------
3 files changed, 64 insertions(+), 29 deletions(-)
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 3a0a4a8d065..190bdf8d4f5 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -203,14 +203,14 @@
"fieldtype": "Column Break"
},
{
- "depends_on": "party",
+ "depends_on": "eval: doc.party && doc.party_type !== \"Employee\"",
"fieldname": "contact_person",
"fieldtype": "Link",
"label": "Contact",
"options": "Contact"
},
{
- "depends_on": "contact_person",
+ "depends_on": "eval: (doc.contact_person || doc.party_type === \"Employee\") && doc.contact_email",
"fieldname": "contact_email",
"fieldtype": "Data",
"label": "Email",
@@ -809,7 +809,11 @@
"table_fieldname": "payment_entries"
}
],
+<<<<<<< HEAD
"modified": "2025-01-31 17:27:28.555246",
+=======
+ "modified": "2025-03-24 16:18:19.920701",
+>>>>>>> 8c9d630ee4 (Merge pull request #46683 from Abdeali099/set-employee-contact-details)
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry",
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index 6c7b1ad5f5a..b348e8cb981 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -38,7 +38,11 @@ from erpnext.accounts.general_ledger import (
make_reverse_gl_entries,
process_gl_map,
)
-from erpnext.accounts.party import complete_contact_details, get_party_account, set_contact_details
+from erpnext.accounts.party import (
+ complete_contact_details,
+ get_default_contact,
+ get_party_account,
+)
from erpnext.accounts.utils import (
cancel_exchange_gain_loss_journal,
get_account_currency,
@@ -440,6 +444,7 @@ class PaymentEntry(AccountsController):
self.party_name = frappe.db.get_value(self.party_type, self.party, "name")
if self.party:
+<<<<<<< HEAD
if not self.contact_person:
set_contact_details(
self, party=frappe._dict({"name": self.party}), party_type=self.party_type
@@ -450,6 +455,14 @@ class PaymentEntry(AccountsController):
self.party_balance = get_balance_on(
party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company
)
+=======
+ if self.party_type == "Employee":
+ self.contact_person = None
+ elif not self.contact_person:
+ self.contact_person = get_default_contact(self.party_type, self.party)
+
+ complete_contact_details(self)
+>>>>>>> 8c9d630ee4 (Merge pull request #46683 from Abdeali099/set-employee-contact-details)
if not self.party_account:
party_account = get_party_account(self.party_type, self.party, self.company)
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 37b5b884234..5ca50b8d7c6 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -280,32 +280,50 @@ def get_regional_address_details(party_details, doctype, company):
def complete_contact_details(party_details):
- if not party_details.contact_person:
- party_details.update(
- {
- "contact_person": None,
- "contact_display": None,
- "contact_email": None,
- "contact_mobile": None,
- "contact_phone": None,
- "contact_designation": None,
- "contact_department": None,
- }
+ contact_details = frappe._dict()
+
+ if party_details.party_type == "Employee":
+ contact_details = frappe.db.get_value(
+ "Employee",
+ party_details.party,
+ [
+ "employee_name as contact_display",
+ "prefered_email as contact_email",
+ "cell_number as contact_mobile",
+ "designation as contact_designation",
+ "department as contact_department",
+ ],
+ as_dict=True,
+ )
+
+ contact_details.update({"contact_person": None, "contact_phone": None})
+ elif party_details.contact_person:
+ contact_details = frappe.db.get_value(
+ "Contact",
+ party_details.contact_person,
+ [
+ "name as contact_person",
+ "full_name as contact_display",
+ "email_id as contact_email",
+ "mobile_no as contact_mobile",
+ "phone as contact_phone",
+ "designation as contact_designation",
+ "department as contact_department",
+ ],
+ as_dict=True,
)
else:
- fields = [
- "name as contact_person",
- "full_name as contact_display",
- "email_id as contact_email",
- "mobile_no as contact_mobile",
- "phone as contact_phone",
- "designation as contact_designation",
- "department as contact_department",
- ]
+ contact_details = {
+ "contact_person": None,
+ "contact_display": None,
+ "contact_email": None,
+ "contact_mobile": None,
+ "contact_phone": None,
+ "contact_designation": None,
+ "contact_department": None,
+ }
- contact_details = frappe.db.get_value("Contact", party_details.contact_person, fields, as_dict=True)
-
- party_details.update(contact_details)
+ party_details.update(contact_details)
def set_contact_details(party_details, party, party_type):
@@ -771,9 +789,9 @@ def validate_account_party_type(self):
account_type = frappe.get_cached_value("Account", self.account, "account_type")
if account_type and (account_type not in ["Receivable", "Payable", "Equity"]):
frappe.throw(
- _(
- "Party Type and Party can only be set for Receivable / Payable account
" "{0}"
- ).format(self.account)
+ _("Party Type and Party can only be set for Receivable / Payable account
{0}").format(
+ self.account
+ )
)
From bde55d2a07d81bac86e9a1253e7a1b4043e54823 Mon Sep 17 00:00:00 2001
From: ljain112
Date: Tue, 1 Apr 2025 18:51:10 +0530
Subject: [PATCH 2/2] fix: resolved conflicts
---
.../doctype/payment_entry/payment_entry.json | 4 ----
.../doctype/payment_entry/payment_entry.py | 17 ++++-------------
2 files changed, 4 insertions(+), 17 deletions(-)
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.json b/erpnext/accounts/doctype/payment_entry/payment_entry.json
index 190bdf8d4f5..c7e05f70d7f 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.json
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.json
@@ -809,11 +809,7 @@
"table_fieldname": "payment_entries"
}
],
-<<<<<<< HEAD
- "modified": "2025-01-31 17:27:28.555246",
-=======
"modified": "2025-03-24 16:18:19.920701",
->>>>>>> 8c9d630ee4 (Merge pull request #46683 from Abdeali099/set-employee-contact-details)
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry",
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index b348e8cb981..5f0db7bfd5e 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -444,25 +444,16 @@ class PaymentEntry(AccountsController):
self.party_name = frappe.db.get_value(self.party_type, self.party, "name")
if self.party:
-<<<<<<< HEAD
- if not self.contact_person:
- set_contact_details(
- self, party=frappe._dict({"name": self.party}), party_type=self.party_type
- )
- else:
- complete_contact_details(self)
- if not self.party_balance:
- self.party_balance = get_balance_on(
- party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company
- )
-=======
if self.party_type == "Employee":
self.contact_person = None
elif not self.contact_person:
self.contact_person = get_default_contact(self.party_type, self.party)
complete_contact_details(self)
->>>>>>> 8c9d630ee4 (Merge pull request #46683 from Abdeali099/set-employee-contact-details)
+ if not self.party_balance:
+ self.party_balance = get_balance_on(
+ party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company
+ )
if not self.party_account:
party_account = get_party_account(self.party_type, self.party, self.company)