Skip to content

Commit

Permalink
fix: always update item_name for stock entry (backport frappe#31068) (f…
Browse files Browse the repository at this point in the history
…rappe#31071)

fix: always update item_name for stock entry (frappe#31068)

If item_name is already set and for some reason becomes outdated then
it's not updated in backend.

Fix: always set item_name and stock_uom when fetching item details
(cherry picked from commit 6d6616d)

Co-authored-by: Ankush Menat <me@ankush.dev>
  • Loading branch information
mergify[bot] and ankush authored May 19, 2022
1 parent 0efbabe commit f519dc6
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 15 deletions.
24 changes: 11 additions & 13 deletions erpnext/stock/doctype/stock_entry/stock_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -299,19 +299,17 @@ def validate_item(self):
for_update=True,
)

for f in (
"uom",
"stock_uom",
"description",
"item_name",
"expense_account",
"cost_center",
"conversion_factor",
):
if f == "stock_uom" or not item.get(f):
item.set(f, item_details.get(f))
if f == "conversion_factor" and item.uom == item_details.get("stock_uom"):
item.set(f, item_details.get(f))
reset_fields = ("stock_uom", "item_name")
for field in reset_fields:
item.set(field, item_details.get(field))

update_fields = ("uom", "description", "expense_account", "cost_center", "conversion_factor")

for field in update_fields:
if not item.get(field):
item.set(field, item_details.get(field))
if field == "conversion_factor" and item.uom == item_details.get("stock_uom"):
item.set(field, item_details.get(field))

if not item.transfer_qty and item.qty:
item.transfer_qty = flt(
Expand Down
18 changes: 16 additions & 2 deletions erpnext/stock/doctype/stock_entry/test_stock_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
# License: GNU General Public License v3. See license.txt


import unittest

import frappe
from frappe.permissions import add_user_permission, remove_user_permission
from frappe.tests.utils import FrappeTestCase, change_settings
Expand All @@ -13,6 +11,7 @@
from erpnext.accounts.doctype.account.test_account import get_inventory_account
from erpnext.stock.doctype.item.test_item import (
create_item,
make_item,
make_item_variant,
set_item_variant_settings,
)
Expand Down Expand Up @@ -1400,6 +1399,21 @@ def test_mapped_stock_entry(self):
self.assertEqual(mapped_se.items[0].basic_rate, 100)
self.assertEqual(mapped_se.items[0].basic_amount, 200)

def test_stock_entry_item_details(self):
item = make_item()

se = make_stock_entry(
item_code=item.name, qty=1, to_warehouse="_Test Warehouse - _TC", do_not_submit=True
)

self.assertEqual(se.items[0].item_name, item.item_name)
se.items[0].item_name = "wat"
se.items[0].stock_uom = "Kg"
se.save()

self.assertEqual(se.items[0].item_name, item.item_name)
self.assertEqual(se.items[0].stock_uom, item.stock_uom)


def make_serialized_item(**args):
args = frappe._dict(args)
Expand Down

0 comments on commit f519dc6

Please sign in to comment.