From 5ec87ae06c679a9065edcd72821c61b5499a0192 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Mon, 3 Aug 2026 13:29:37 +0530 Subject: [PATCH] chore: resolve conflict --- .../controllers/sales_and_purchase_return.py | 4 --- .../tests/test_sales_and_purchase_return.py | 29 ++----------------- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/erpnext/controllers/sales_and_purchase_return.py b/erpnext/controllers/sales_and_purchase_return.py index efca82b425b..5f469b6a7fd 100644 --- a/erpnext/controllers/sales_and_purchase_return.py +++ b/erpnext/controllers/sales_and_purchase_return.py @@ -158,9 +158,6 @@ def validate_returned_items(doc): ): frappe.throw(_("Warehouse is mandatory")) -<<<<<<< HEAD - items_returned = True -======= if doc.doctype in ( "Purchase Invoice", "Purchase Receipt", @@ -173,7 +170,6 @@ def validate_returned_items(doc): items_returned = True else: items_returned = True ->>>>>>> a3e9d13da3 (fix(sales): reject sales returns where every item has zero quantity) elif d.item_name: items_returned = True diff --git a/erpnext/controllers/tests/test_sales_and_purchase_return.py b/erpnext/controllers/tests/test_sales_and_purchase_return.py index 1063b0d6f8d..0de679352f7 100644 --- a/erpnext/controllers/tests/test_sales_and_purchase_return.py +++ b/erpnext/controllers/tests/test_sales_and_purchase_return.py @@ -2,11 +2,10 @@ # See license.txt import frappe - -from erpnext.tests.utils import ERPNextTestSuite +from frappe.tests.utils import FrappeTestCase -class TestSalesAndPurchaseReturn(ERPNextTestSuite): +class TestSalesAndPurchaseReturn(FrappeTestCase): @staticmethod def _cancel_and_delete(doctype, name): if not frappe.db.exists(doctype, name): @@ -16,28 +15,6 @@ class TestSalesAndPurchaseReturn(ERPNextTestSuite): doc.cancel() frappe.delete_doc(doctype, name, force=1) - def test_sales_return_validates_against_original(self): - # Submitting a return Delivery Note runs validate_returned_items (Item / Packed Item lookups - # via frappe.get_all) and get_already_returned_items (qb GROUP BY of the returned qty) -- both - # converted from raw SQL here. Exercises them on both engines. - from erpnext.stock.doctype.delivery_note.mapper import make_sales_return - from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note - from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry - - se = make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=20, basic_rate=100) - self.addCleanup(self._cancel_and_delete, "Stock Entry", se.name) - - dn = create_delivery_note(qty=5) - self.addCleanup(self._cancel_and_delete, "Delivery Note", dn.name) - - return_dn = make_sales_return(dn.name) - return_dn.insert() - return_dn.submit() - self.addCleanup(self._cancel_and_delete, "Delivery Note", return_dn.name) - - self.assertEqual(return_dn.is_return, 1) - self.assertEqual(return_dn.items[0].qty, -5) - def test_purchase_invoice_zero_qty_return_is_rejected(self): # A return with every item at qty 0 moves no stock and no value, so it must be # rejected the same way a return with no items at all would be. @@ -82,7 +59,7 @@ class TestSalesAndPurchaseReturn(ERPNextTestSuite): def test_delivery_note_zero_qty_return_is_rejected(self): # A return with every item at qty 0 moves no stock and no value, so it must be # rejected the same way a return with no items at all would be. - from erpnext.stock.doctype.delivery_note.mapper import make_sales_return + from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry