fix: include only invoices with update_stock = 0 for billed amt in delivery note.
(cherry picked from commit 6dc459db58)
This commit is contained in:
@@ -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()
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user