diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 1c7052f8ffb6..f8d5324707e1 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -468,6 +468,9 @@ def reconcile_against_document(args, skip_ref_details_update_for_pe=False): # n frappe.flags.ignore_party_validation = True _delete_pl_entries(voucher_type, voucher_no) + if voucher_type == "Payment Entry" and doc.book_advance_payments_in_separate_party_account: + _delete_gl_entries(voucher_type, voucher_no) + for entry in entries: check_if_advance_entry_modified(entry) validate_allocated_amount(entry) @@ -488,16 +491,19 @@ def reconcile_against_document(args, skip_ref_details_update_for_pe=False): # n doc.save(ignore_permissions=True) # re-submit advance entry doc = frappe.get_doc(entry.voucher_type, entry.voucher_no) - gl_map = doc.build_gl_map() - create_payment_ledger_entry(gl_map, update_outstanding="No", cancel=0, adv_adj=1) + + if voucher_type == "Payment Entry" and doc.book_advance_payments_in_separate_party_account: + # both ledgers must be posted to for `Advance as Liability` + doc.make_gl_entries() + else: + gl_map = doc.build_gl_map() + create_payment_ledger_entry(gl_map, update_outstanding="No", cancel=0, adv_adj=1) # Only update outstanding for newly linked vouchers for entry in entries: update_voucher_outstanding( entry.against_voucher_type, entry.against_voucher, entry.account, entry.party_type, entry.party ) - if voucher_type == "Payment Entry": - doc.make_advance_gl_entries(entry.against_voucher_type, entry.against_voucher) frappe.flags.ignore_party_validation = False