feat: filter on voucher no

This commit is contained in:
ruthra kumar 2023-08-26 20:45:18 +05:30
parent fc6be5bfb9
commit 41eb2c9f5a
2 changed files with 9 additions and 1 deletions

View File

@ -219,6 +219,8 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
add_filters_group: 0, add_filters_group: 0,
date_field: "posting_date", date_field: "posting_date",
columns: ["voucher_type", "voucher_no", "allocated_amount"], columns: ["voucher_type", "voucher_no", "allocated_amount"],
primary_action_label: "Un-Reconcile",
title: "Un-Reconcile Payments",
get_query() { get_query() {
return query_args; return query_args;
}, },

View File

@ -4,6 +4,7 @@
import frappe import frappe
from frappe import qb from frappe import qb
from frappe.model.document import Document from frappe.model.document import Document
from frappe.query_builder import Criterion
from frappe.query_builder.functions import Abs, Sum from frappe.query_builder.functions import Abs, Sum
from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries, update_voucher_outstanding from erpnext.accounts.utils import unlink_ref_doc_from_payment_entries, update_voucher_outstanding
@ -78,6 +79,11 @@ def get_linked_payments_for_doc(doctype, txt, searchfield, start, page_len, filt
_dn = filters.get("docname") _dn = filters.get("docname")
ple = qb.DocType("Payment Ledger Entry") ple = qb.DocType("Payment Ledger Entry")
if _dt in ["Sales Invoice", "Purchase Invoice"]: if _dt in ["Sales Invoice", "Purchase Invoice"]:
criteria = [(ple.delinked == 0), (ple.against_voucher_no == _dn), (ple.amount < 0)]
if txt:
criteria.append(ple.voucher_no.like(f"%{txt}%"))
res = ( res = (
qb.from_(ple) qb.from_(ple)
.select( .select(
@ -85,7 +91,7 @@ def get_linked_payments_for_doc(doctype, txt, searchfield, start, page_len, filt
ple.voucher_no, ple.voucher_no,
Abs(Sum(ple.amount_in_account_currency)).as_("allocated_amount"), Abs(Sum(ple.amount_in_account_currency)).as_("allocated_amount"),
) )
.where((ple.delinked == 0) & (ple.against_voucher_no == _dn) & (ple.amount < 0)) .where(Criterion.all(criteria))
.groupby(ple.against_voucher_no) .groupby(ple.against_voucher_no)
.run(as_dict=True) .run(as_dict=True)
) )