mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-15 19:19:17 +00:00
Merge pull request #47903 from aerele/fix-return-qty
fix: modify query to fetch valid return qty
This commit is contained in:
@@ -795,12 +795,14 @@ def get_returned_qty_map(delivery_note):
|
|||||||
"""returns a map: {so_detail: returned_qty}"""
|
"""returns a map: {so_detail: returned_qty}"""
|
||||||
returned_qty_map = frappe._dict(
|
returned_qty_map = frappe._dict(
|
||||||
frappe.db.sql(
|
frappe.db.sql(
|
||||||
"""select dn_item.dn_detail, abs(dn_item.qty) as qty
|
"""select dn_item.dn_detail, sum(abs(dn_item.qty)) as qty
|
||||||
from `tabDelivery Note Item` dn_item, `tabDelivery Note` dn
|
from `tabDelivery Note Item` dn_item, `tabDelivery Note` dn
|
||||||
where dn.name = dn_item.parent
|
where dn.name = dn_item.parent
|
||||||
and dn.docstatus = 1
|
and dn.docstatus = 1
|
||||||
and dn.is_return = 1
|
and dn.is_return = 1
|
||||||
and dn.return_against = %s
|
and dn.return_against = %s
|
||||||
|
and dn_item.qty <= 0
|
||||||
|
group by dn_item.item_code
|
||||||
""",
|
""",
|
||||||
delivery_note,
|
delivery_note,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import json
|
|||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.tests import IntegrationTestCase
|
from frappe.tests import IntegrationTestCase, change_settings
|
||||||
from frappe.utils import add_days, cstr, flt, getdate, nowdate, nowtime, today
|
from frappe.utils import add_days, cstr, flt, getdate, nowdate, nowtime, today
|
||||||
|
|
||||||
from erpnext.accounts.doctype.account.test_account import get_inventory_account
|
from erpnext.accounts.doctype.account.test_account import get_inventory_account
|
||||||
@@ -1023,6 +1023,30 @@ class TestDeliveryNote(IntegrationTestCase):
|
|||||||
self.assertEqual(dn2.per_billed, 100)
|
self.assertEqual(dn2.per_billed, 100)
|
||||||
self.assertEqual(dn2.status, "Completed")
|
self.assertEqual(dn2.status, "Completed")
|
||||||
|
|
||||||
|
@change_settings("Accounts Settings", {"delete_linked_ledger_entries": True})
|
||||||
|
def test_sales_invoice_qty_after_return(self):
|
||||||
|
from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return
|
||||||
|
|
||||||
|
dn = create_delivery_note(qty=10)
|
||||||
|
|
||||||
|
dnr1 = make_sales_return(dn.name)
|
||||||
|
dnr1.get("items")[0].qty = -3
|
||||||
|
dnr1.save().submit()
|
||||||
|
|
||||||
|
dnr2 = make_sales_return(dn.name)
|
||||||
|
dnr2.get("items")[0].qty = -2
|
||||||
|
dnr2.save().submit()
|
||||||
|
|
||||||
|
si = make_sales_invoice(dn.name)
|
||||||
|
si.save().submit()
|
||||||
|
|
||||||
|
self.assertEqual(si.get("items")[0].qty, 5)
|
||||||
|
|
||||||
|
si.reload().cancel().delete()
|
||||||
|
dnr1.reload().cancel().delete()
|
||||||
|
dnr2.reload().cancel().delete()
|
||||||
|
dn.reload().cancel().delete()
|
||||||
|
|
||||||
def test_dn_billing_status_case3(self):
|
def test_dn_billing_status_case3(self):
|
||||||
# SO -> DN1 -> SI and SO -> SI and SO -> DN2
|
# SO -> DN1 -> SI and SO -> SI and SO -> DN2
|
||||||
from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
|
from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
|
||||||
|
|||||||
Reference in New Issue
Block a user