Merge branch 'hotfix' into fix-item-variant-settings-barcodes
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 45ee8dc..b1a393b 100755
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -585,5 +585,6 @@
erpnext.patches.v11_0.add_permissions_in_gst_settings
erpnext.patches.v11_1.setup_guardian_role
execute:frappe.delete_doc('DocType', 'Notification Control')
+erpnext.patches.v11_0.remove_barcodes_field_from_copy_fields_to_variants
erpnext.patches.v10_0.item_barcode_childtable_migrate # 16-02-2019
erpnext.patches.v11_0.make_italian_localization_fields
diff --git a/erpnext/patches/v11_0/remove_barcodes_field_from_copy_fields_to_variants.py b/erpnext/patches/v11_0/remove_barcodes_field_from_copy_fields_to_variants.py
new file mode 100644
index 0000000..97ddd41
--- /dev/null
+++ b/erpnext/patches/v11_0/remove_barcodes_field_from_copy_fields_to_variants.py
@@ -0,0 +1,7 @@
+import frappe
+
+def execute():
+ '''Remove barcodes field from "Copy Fields to Variants" table because barcodes must be unique'''
+
+ settings = frappe.get_doc('Item Variant Settings')
+ settings.remove_invalid_fields_for_copy_fields_in_variants()
diff --git a/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py b/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py
index 678de1a..0422442 100644
--- a/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py
+++ b/erpnext/stock/doctype/item_variant_settings/item_variant_settings.py
@@ -5,14 +5,17 @@
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
+from frappe import _
class ItemVariantSettings(Document):
+ invalid_fields_for_copy_fields_in_variants = ['barcodes']
+
def set_default_fields(self):
self.fields = []
fields = frappe.get_meta('Item').fields
exclude_fields = ["naming_series", "item_code", "item_name", "show_in_website",
"show_variant_in_website", "standard_rate", "opening_stock", "image", "description",
- "variant_of", "valuation_rate", "description",
+ "variant_of", "valuation_rate", "description", "barcodes",
"website_image", "thumbnail", "website_specifiations", "web_long_description"]
for d in fields:
@@ -20,4 +23,14 @@
d.fieldtype not in ['HTML', 'Section Break', 'Column Break', 'Button', 'Read Only']:
self.append('fields', {
'field_name': d.fieldname
- })
\ No newline at end of file
+ })
+
+ def remove_invalid_fields_for_copy_fields_in_variants(self):
+ fields = [row for row in self.fields if row.field_name not in self.invalid_fields_for_copy_fields_in_variants]
+ self.fields = fields
+ self.save()
+
+ def validate(self):
+ for d in self.fields:
+ if d.field_name in self.invalid_fields_for_copy_fields_in_variants:
+ frappe.throw(_('Cannot set the field <b>{0}</b> for copying in variants').format(d.field_name))