diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 47de0eff359..c4fafba2669 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -818,6 +818,31 @@ def get_held_invoices(party_type, party): return held_invoices +def remove_return_pos_invoices(party_type, party, invoice_list): + if invoice_list: + + if party_type == "Customer": + sinv = frappe.qb.DocType("Sales Invoice") + return_pos = ( + frappe.qb.from_(sinv) + .select(sinv.name) + .where((sinv.is_pos == 1) & (sinv.docstatus == 1) & (sinv.is_return == 1)) + .run() + ) + + if return_pos: + return_pos = [x[0] for x in return_pos] + else: + return invoice_list + + # remove pos return invoices from invoice_list + for idx, inv in enumerate(invoice_list, 0): + if inv.voucher_no in return_pos: + del invoice_list[idx] + + return invoice_list + + def get_outstanding_invoices(party_type, party, account, condition=None, filters=None): outstanding_invoices = [] precision = frappe.get_precision("Sales Invoice", "outstanding_amount") or 2 @@ -868,6 +893,8 @@ def get_outstanding_invoices(party_type, party, account, condition=None, filters as_dict=True, ) + invoice_list = remove_return_pos_invoices(party_type, party, invoice_list) + payment_entries = frappe.db.sql( """ select against_voucher_type, against_voucher,