diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 2fb62b79ab1..26c88536e45 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -1227,7 +1227,7 @@ class PaymentEntry(AccountsController): def add_advance_gl_entries(self, gl_entries: list, entry: object | dict | None): """ - If 'entry' is passed, GL enties only for that reference is added. + If 'entry' is passed, GL entries only for that reference is added. """ if self.book_advance_payments_in_separate_party_account: references = [x for x in self.get("references")] @@ -1239,8 +1239,6 @@ class PaymentEntry(AccountsController): "Sales Invoice", "Purchase Invoice", "Journal Entry", - "Sales Order", - "Purchase Order", "Payment Entry", ): self.add_advance_gl_for_reference(gl_entries, ref) diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py index cafdaaaa957..26ed33c22b5 100644 --- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py @@ -1440,6 +1440,68 @@ class TestPaymentEntry(FrappeTestCase): self.check_gl_entries() self.check_pl_entries() + def test_advance_as_liability_against_order(self): + from erpnext.buying.doctype.purchase_order.purchase_order import ( + make_purchase_invoice as _make_purchase_invoice, + ) + from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order + + company = "_Test Company" + + advance_account = create_account( + parent_account="Current Liabilities - _TC", + account_name="Advances Paid", + company=company, + account_type="Liability", + ) + + frappe.db.set_value( + "Company", + company, + { + "book_advance_payments_in_separate_party_account": 1, + "default_advance_paid_account": advance_account, + }, + ) + + po = create_purchase_order(supplier="_Test Supplier") + pe = get_payment_entry("Purchase Order", po.name) + pe.save().submit() + + pre_reconciliation_gle = [ + {"account": advance_account, "debit": 5000.0, "credit": 0.0}, + {"account": "_Test Bank 2 - _TC", "debit": 0.0, "credit": 5000.0}, + ] + + self.voucher_no = pe.name + self.expected_gle = pre_reconciliation_gle + self.check_gl_entries() + + # Make Purchase Invoice against the order + pi = _make_purchase_invoice(po.name) + pi.append( + "advances", + { + "reference_type": pe.doctype, + "reference_name": pe.name, + "reference_row": pe.references[0].name, + "advance_amount": 5000, + "allocated_amount": 5000, + }, + ) + pi.save().submit() + + # # assert General and Payment Ledger entries post partial reconciliation + self.expected_gle = [ + {"account": pi.credit_to, "debit": 5000.0, "credit": 0.0}, + {"account": advance_account, "debit": 5000.0, "credit": 0.0}, + {"account": advance_account, "debit": 0.0, "credit": 5000.0}, + {"account": "_Test Bank 2 - _TC", "debit": 0.0, "credit": 5000.0}, + ] + + self.voucher_no = pe.name + self.check_gl_entries() + def check_pl_entries(self): ple = frappe.qb.DocType("Payment Ledger Entry") pl_entries = (