fix: include only invoices with update_stock = 0 for billed amt in delivery note.

(cherry picked from commit 6dc459db58)
This commit is contained in:
ljain112
2025-05-15 14:06:04 +05:30
committed by Mergify
parent 6f1109226d
commit 54197ff760
2 changed files with 26 additions and 0 deletions

View File

@@ -491,16 +491,20 @@ def update_billed_amount_based_on_so(so_detail, update_modified=True):
from frappe.query_builder.functions import Sum
# Billed against Sales Order directly
si = frappe.qb.DocType("Sales Invoice").as_("si")
si_item = frappe.qb.DocType("Sales Invoice Item").as_("si_item")
sum_amount = Sum(si_item.amount).as_("amount")
billed_against_so = (
frappe.qb.from_(si_item)
.join(si)
.on(si.name == si_item.parent)
.select(sum_amount)
.where(
(si_item.so_detail == so_detail)
& ((si_item.dn_detail.isnull()) | (si_item.dn_detail == ""))
& (si_item.docstatus == 1)
& (si.update_stock == 0)
)
.run()
)

View File

@@ -865,6 +865,28 @@ class TestDeliveryNote(FrappeTestCase):
self.assertEqual(dn.per_billed, 100)
self.assertEqual(dn.status, "Completed")
def test_dn_billing_status_case5(self):
# SO -> SI(with update stock partial invoice)
# SO -> DN
from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note, make_sales_invoice
so = make_sales_order(po_no="12345")
si = make_sales_invoice(so.name)
si.get("items")[0].qty = 5
si.update_stock = 1
si.submit()
# Testing if Customer's Purchase Order No was rightly copied
self.assertEqual(so.po_no, si.po_no)
dn = make_delivery_note(so.name)
dn.submit()
self.assertEqual(dn.get("items")[0].billed_amt, 0)
self.assertEqual(dn.per_billed, 0)
self.assertEqual(dn.status, "To Bill")
def test_delivery_trip(self):
dn = create_delivery_note()
dt = make_delivery_trip(dn.name)