From e1bfffb72ca34f6f48cbd923dd9b7a3f02b6eb10 Mon Sep 17 00:00:00 2001 From: Loic Oberle Date: Thu, 28 May 2026 13:13:17 +0200 Subject: [PATCH] refactor(sales_invoice): replace sql with qb in get_discounting_status (#55378) --- .../doctype/sales_invoice/sales_invoice.py | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index ec74eb01da8..fbd5d377a08 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -2388,19 +2388,21 @@ def is_overdue(doc, total): def get_discounting_status(sales_invoice): status = None - invoice_discounting_list = frappe.db.sql( - """ - select status - from `tabInvoice Discounting` id, `tabDiscounted Invoice` d - where - id.name = d.parent - and d.sales_invoice=%s - and id.docstatus=1 - and status in ('Disbursed', 'Settled') - """, - sales_invoice, + InvoiceDiscounting = frappe.qb.DocType("Invoice Discounting") + DiscountedInvoice = frappe.qb.DocType("Discounted Invoice") + + query = ( + frappe.qb.from_(InvoiceDiscounting) + .join(DiscountedInvoice) + .on(InvoiceDiscounting.name == DiscountedInvoice.parent) + .select(InvoiceDiscounting.status) + .where(DiscountedInvoice.sales_invoice == sales_invoice) + .where(InvoiceDiscounting.docstatus == 1) + .where(InvoiceDiscounting.status.isin(["Disbursed", "Settled"])) ) + invoice_discounting_list = query.run() + for d in invoice_discounting_list: status = d[0] if status == "Disbursed":