fix: don't set rate for non-stock item in Internal Transfer (backport #39140) (#39168)

* fix: don't set rate for non-stock item in Internal Transfer

(cherry picked from commit e1b0fffd0c)

* test: internal transfer for non-stock item

(cherry picked from commit 57b6a98703)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/test_delivery_note.py

* chore: `conflicts`

---------

Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>
This commit is contained in:
mergify[bot]
2024-01-08 11:44:52 +05:30
committed by GitHub
parent f6b10f3d84
commit 06d193ad87
2 changed files with 22 additions and 0 deletions

View File

@@ -422,6 +422,9 @@ class SellingController(StockController):
items = self.get("items") + (self.get("packed_items") or []) items = self.get("items") + (self.get("packed_items") or [])
for d in items: for d in items:
if not frappe.get_cached_value("Item", d.item_code, "is_stock_item"):
continue
if not self.get("return_against") or ( if not self.get("return_against") or (
get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return") get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return")
): ):

View File

@@ -1435,6 +1435,25 @@ class TestDeliveryNote(FrappeTestCase):
returned_dn.reload() returned_dn.reload()
self.assertAlmostEqual(returned_dn.items[0].incoming_rate, 200.0) self.assertAlmostEqual(returned_dn.items[0].incoming_rate, 200.0)
def test_internal_transfer_for_non_stock_item(self):
from erpnext.selling.doctype.customer.test_customer import create_internal_customer
from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
item = make_item(properties={"is_stock_item": 0}).name
warehouse = "_Test Warehouse - _TC"
target = "Stores - _TC"
company = "_Test Company"
customer = create_internal_customer(represents_company=company)
rate = 100
so = make_sales_order(item_code=item, qty=1, rate=rate, customer=customer, warehouse=warehouse)
dn = make_delivery_note(so.name)
dn.items[0].target_warehouse = target
dn.save().submit()
self.assertEqual(so.items[0].rate, rate)
self.assertEqual(dn.items[0].rate, so.items[0].rate)
def create_delivery_note(**args): def create_delivery_note(**args):
dn = frappe.new_doc("Delivery Note") dn = frappe.new_doc("Delivery Note")