fix: clear "Retain Sample" and "Max Sample Quantity" in Item card if Has Batch No is uncheck (backport #30307) (#30314)

* fix: clear "Retain Sample" and "Max Sample Quantity" in Item card if Has Batch No is uncheck (#30307)

(cherry picked from commit ca8d757691)

# Conflicts:
#	erpnext/stock/doctype/item/test_item.py

* chore: conflicts

* refactor: correct usage for test decorator

Co-authored-by: HENRY Florian <florian.henry@open-concept.pro>
Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
mergify[bot]
2022-03-21 15:39:04 +05:30
committed by GitHub
parent cedabd7242
commit 34d27f1855
2 changed files with 22 additions and 0 deletions

View File

@@ -108,6 +108,7 @@ class Item(Document):
self.validate_variant_attributes()
self.validate_variant_based_on_change()
self.validate_fixed_asset()
self.clear_retain_sample()
self.validate_retain_sample()
self.validate_uom_conversion_factor()
self.validate_customer_provided_part()
@@ -210,6 +211,13 @@ class Item(Document):
frappe.throw(_("{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item").format(
self.item_code))
def clear_retain_sample(self):
if not self.has_batch_no:
self.retain_sample = None
if not self.retain_sample:
self.sample_quantity = None
def add_default_uom_in_conversion_factor_table(self):
if not self.is_new() and self.has_value_changed("stock_uom"):
self.uoms = []

View File

@@ -622,6 +622,20 @@ class TestItem(FrappeTestCase):
item.item_group = "All Item Groups"
item.save() # if item code saved without item_code then series worked
@change_settings("Stock Settings", {"sample_retention_warehouse": "_Test Warehouse - _TC"})
def test_retain_sample(self):
item = make_item("_TestRetainSample", {'has_batch_no': 1, 'retain_sample': 1, 'sample_quantity': 1})
self.assertEqual(item.has_batch_no, 1)
self.assertEqual(item.retain_sample, 1)
self.assertEqual(item.sample_quantity, 1)
item.has_batch_no = None
item.save()
self.assertEqual(item.retain_sample, None)
self.assertEqual(item.sample_quantity, None)
item.delete()
def set_item_variant_settings(fields):
doc = frappe.get_doc('Item Variant Settings')