diff --git a/erpnext/patches.txt b/erpnext/patches.txt index b8e2e358b1..be97e81ddb 100755 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -586,3 +586,4 @@ erpnext.patches.v11_0.renamed_from_to_fields_in_project 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 #asdf 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 0000000000..97ddd41ddb --- /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 678de1a9ba..04224424a5 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 @@ class ItemVariantSettings(Document): 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 {0} for copying in variants').format(d.field_name))