Merge pull request #46773 from frappe/mergify/bp/version-15-hotfix/pr-46683

fix: Set complete contact details for `Employee` in PE (backport #46683)
This commit is contained in:
ruthra kumar
2025-04-14 17:30:51 +05:30
committed by GitHub
3 changed files with 58 additions and 36 deletions

View File

@@ -203,14 +203,14 @@
"fieldtype": "Column Break" "fieldtype": "Column Break"
}, },
{ {
"depends_on": "party", "depends_on": "eval: doc.party && doc.party_type !== \"Employee\"",
"fieldname": "contact_person", "fieldname": "contact_person",
"fieldtype": "Link", "fieldtype": "Link",
"label": "Contact", "label": "Contact",
"options": "Contact" "options": "Contact"
}, },
{ {
"depends_on": "contact_person", "depends_on": "eval: (doc.contact_person || doc.party_type === \"Employee\") && doc.contact_email",
"fieldname": "contact_email", "fieldname": "contact_email",
"fieldtype": "Data", "fieldtype": "Data",
"label": "Email", "label": "Email",
@@ -809,7 +809,7 @@
"table_fieldname": "payment_entries" "table_fieldname": "payment_entries"
} }
], ],
"modified": "2025-01-31 17:27:28.555246", "modified": "2025-03-24 16:18:19.920701",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Payment Entry", "name": "Payment Entry",

View File

@@ -38,7 +38,11 @@ from erpnext.accounts.general_ledger import (
make_reverse_gl_entries, make_reverse_gl_entries,
process_gl_map, 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 ( from erpnext.accounts.utils import (
cancel_exchange_gain_loss_journal, cancel_exchange_gain_loss_journal,
get_account_currency, get_account_currency,
@@ -441,12 +445,12 @@ class PaymentEntry(AccountsController):
self.party_name = frappe.db.get_value(self.party_type, self.party, "name") self.party_name = frappe.db.get_value(self.party_type, self.party, "name")
if self.party: if self.party:
if not self.contact_person: if self.party_type == "Employee":
set_contact_details( self.contact_person = None
self, party=frappe._dict({"name": self.party}), party_type=self.party_type elif not self.contact_person:
) self.contact_person = get_default_contact(self.party_type, self.party)
else:
complete_contact_details(self) complete_contact_details(self)
if not self.party_balance: if not self.party_balance:
self.party_balance = get_balance_on( self.party_balance = get_balance_on(
party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company party_type=self.party_type, party=self.party, date=self.posting_date, company=self.company

View File

@@ -280,32 +280,50 @@ def get_regional_address_details(party_details, doctype, company):
def complete_contact_details(party_details): def complete_contact_details(party_details):
if not party_details.contact_person: contact_details = frappe._dict()
party_details.update(
{ if party_details.party_type == "Employee":
"contact_person": None, contact_details = frappe.db.get_value(
"contact_display": None, "Employee",
"contact_email": None, party_details.party,
"contact_mobile": None, [
"contact_phone": None, "employee_name as contact_display",
"contact_designation": None, "prefered_email as contact_email",
"contact_department": None, "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: else:
fields = [ contact_details = {
"name as contact_person", "contact_person": None,
"full_name as contact_display", "contact_display": None,
"email_id as contact_email", "contact_email": None,
"mobile_no as contact_mobile", "contact_mobile": None,
"phone as contact_phone", "contact_phone": None,
"designation as contact_designation", "contact_designation": None,
"department as contact_department", "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): 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") account_type = frappe.get_cached_value("Account", self.account, "account_type")
if account_type and (account_type not in ["Receivable", "Payable", "Equity"]): if account_type and (account_type not in ["Receivable", "Payable", "Equity"]):
frappe.throw( frappe.throw(
_( _("Party Type and Party can only be set for Receivable / Payable account<br><br>{0}").format(
"Party Type and Party can only be set for Receivable / Payable account<br><br>" "{0}" self.account
).format(self.account) )
) )