diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index d2ec699a6c3..6e2e4dfd1a7 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -1185,7 +1185,13 @@ class PaymentEntry(AccountsController): references = [x for x in self.get("references") if x.name == entry.name] for ref in references: - if ref.reference_doctype in ("Sales Invoice", "Purchase Invoice", "Journal Entry"): + if ref.reference_doctype in ( + "Sales Invoice", + "Purchase Invoice", + "Journal Entry", + "Sales Order", + "Purchase Order", + ): self.add_advance_gl_for_reference(gl_entries, ref) def add_advance_gl_for_reference(self, gl_entries, invoice): @@ -1199,9 +1205,10 @@ class PaymentEntry(AccountsController): "voucher_detail_no": invoice.name, } - posting_date = frappe.db.get_value( - invoice.reference_doctype, invoice.reference_name, "posting_date" - ) + date_field = "posting_date" + if invoice.reference_doctype in ["Sales Order", "Purchase Order"]: + date_field = "transaction_date" + posting_date = frappe.db.get_value(invoice.reference_doctype, invoice.reference_name, date_field) if getdate(posting_date) < getdate(self.posting_date): posting_date = self.posting_date @@ -2108,6 +2115,11 @@ def get_reference_details(reference_doctype, reference_name, party_account_curre else: outstanding_amount = flt(total_amount) - flt(ref_doc.get("advance_paid")) + if reference_doctype in ["Sales Order", "Purchase Order"]: + party_type = "Customer" if reference_doctype == "Sales Order" else "Supplier" + party_field = "customer" if reference_doctype == "Sales Order" else "supplier" + party = ref_doc.get(party_field) + account = get_party_account(party_type, party, ref_doc.company) else: # Get the exchange rate based on the posting date of the ref doc. exchange_rate = get_exchange_rate(party_account_currency, company_currency, ref_doc.posting_date) diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index b1779e655dd..d7389ae4761 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -522,7 +522,8 @@ def reconcile_against_document( if voucher_type == "Payment Entry" and doc.book_advance_payments_in_separate_party_account: # both ledgers must be posted to for `Advance` in separate account feature - doc.make_advance_gl_entries(referenced_row, update_outstanding="No") + doc.make_advance_gl_entries(cancel=1) + doc.make_advance_gl_entries() else: gl_map = doc.build_gl_map() create_payment_ledger_entry(gl_map, update_outstanding="No", cancel=0, adv_adj=1)