Merge pull request #16663 from netchampfaris/fix-item-variant-settings-barcodes

fix: Validate invalid fields in Item Variant Settings
This commit is contained in:
Nabin Hait 2019-02-19 15:07:55 +05:30 committed by GitHub
commit ff6d2692d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 2 deletions

View File

@ -585,5 +585,6 @@ 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
erpnext.patches.v10_0.item_barcode_childtable_migrate # 16-02-2019
erpnext.patches.v11_0.make_italian_localization_fields

View File

@ -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()

View File

@ -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
})
})
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))