1
0
forked from test/crm

fix: show asterisk for mandatory fields and also validate before saving

This commit is contained in:
Shariq Ansari 2024-01-04 21:26:18 +05:30
parent 6773266667
commit f4cd8bf6b3
4 changed files with 26 additions and 4 deletions

View File

@ -188,11 +188,16 @@ def get_doctype_fields(doctype):
else: else:
section_fields.append(get_field_obj(field)) section_fields.append(get_field_obj(field))
all_fields = [] section_fields = []
for section in sections: for section in sections:
all_fields.append(sections[section]) section_fields.append(sections[section])
return all_fields fields = [field for field in fields if field.fieldtype not in "Tab Break"]
fields_meta = {}
for field in fields:
fields_meta[field.fieldname] = field
return section_fields, fields_meta
def get_field_obj(field): def get_field_obj(field):

View File

@ -27,7 +27,7 @@ def get_deal(name):
fields=["contact", "is_primary"], fields=["contact", "is_primary"],
) )
deal["doctype_fields"] = get_doctype_fields("CRM Deal") deal["doctype_fields"], deal["all_fields"] = get_doctype_fields("CRM Deal")
deal["doctype"] = "CRM Deal" deal["doctype"] = "CRM Deal"
deal["_form_script"] = get_form_script('CRM Deal') deal["_form_script"] = get_form_script('CRM Deal')
return deal return deal

View File

@ -8,6 +8,7 @@
> >
<div class="w-[106px] shrink-0 text-sm text-gray-600"> <div class="w-[106px] shrink-0 text-sm text-gray-600">
{{ field.label }} {{ field.label }}
<span class="text-red-500">{{ field.reqd ? ' *' : '' }}</span>
</div> </div>
<div <div
class="grid min-h-[28px] flex-1 items-center overflow-hidden text-base" class="grid min-h-[28px] flex-1 items-center overflow-hidden text-base"

View File

@ -355,6 +355,8 @@ const organization = computed(() => {
function updateDeal(fieldname, value, callback) { function updateDeal(fieldname, value, callback) {
value = Array.isArray(fieldname) ? '' : value value = Array.isArray(fieldname) ? '' : value
if (validateRequired(fieldname, value)) return
createResource({ createResource({
url: 'frappe.client.set_value', url: 'frappe.client.set_value',
params: { params: {
@ -386,6 +388,20 @@ function updateDeal(fieldname, value, callback) {
}) })
} }
function validateRequired(fieldname, value) {
let meta = deal.data.all_fields || {}
if (meta[fieldname]?.reqd && !value) {
createToast({
title: 'Error Updating Deal',
text: `${meta[fieldname].label} is a required field`,
icon: 'x',
iconClasses: 'text-red-600',
})
return true
}
return false
}
const breadcrumbs = computed(() => { const breadcrumbs = computed(() => {
let items = [{ label: 'Deals', route: { name: 'Deals' } }] let items = [{ label: 'Deals', route: { name: 'Deals' } }]
items.push({ items.push({