fix: Validate invalid fields in Item Variant Settings

- Some fields like barcodes cannot be copied in Item Variants
- Wrote a patch that deletes the fields if they exist
- Also, validate in controller
This commit is contained in:
Faris Ansari 2019-02-13 13:02:39 +05:30
parent a0aaeafae8
commit a748ca69e7
3 changed files with 23 additions and 2 deletions

View File

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

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:
@ -21,3 +24,13 @@ class ItemVariantSettings(Document):
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))