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)