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:
parent
a0aaeafae8
commit
a748ca69e7
@ -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
|
||||
|
@ -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()
|
@ -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))
|
||||
|
Loading…
x
Reference in New Issue
Block a user