I want to run code on quick entry save button…but no code work on quick entry…
Can you please upload the script or any screenshot related to that. Which will be helpful.
i want to run my code when we create new customer using quick entry…below code works when we create new customer normally…but not work with quick entry
function removeSpecialChars(str) {
return str.replace(/[^A-Z0-9]+/ig, “”)
}
frappe.ui.form.on(“Customer”, “validate”, function(frm, cdt, cdn) {
frm.doc.ic_number=removeSpecialChars(frm.doc.ic_number)
console.log(frm)
refresh_field(“ic_number”)
})
also try
solved using hooks…hooks will work
2 ways to do it first using hook and second one is overwrite quick entry.
for overwrite quick entry use this here you can do all code as you want
var dialog = new frappe.ui.Dialog({
title: __("New Property Handover Defect Category"),
fields: [
{
fieldtype: "Link",
fieldname: "project_name",
label: __("project"),
options: "Project",
reqd: 1,
onchange: function(e) {
console.log(this.value)
console.log(dialog)
if(this.value){
options = [];
cur_dialog.refresh()
frappe.call({
method: 'property_handover.property_handover.doctype.property_handover_defect_category.property_handover_defect_category.project_builing_qty',
freeze: true,
args: {
parent: this.value
},
callback: function(data){
(data.message || []).forEach(function(row){ // start a loop over all options in the response, or in a empty list;
options.push(row.building_name) // makes a option entry 'value' and 'label'
});
console.log(options)
// dialog.fields_dict.building_name=options;
cur_dialog.fields[1].options=options
cur_dialog.refresh()
}
})
}
}
},
{ fieldtype: "Select",
fieldname: "building_name",
label: __("Building Name"),
options: "",
reqd: 1,
},
{ fieldtype: "Data",
fieldname: "category_name",
label: __("Area/Location (Category)"),
reqd: 1,
}
]
})
dialog.set_primary_action(__('Save'), function() {
if(dialog.working) {
return;
}
var data = dialog.get_values();
console.log(data)
if(data) {
dialog.set_message(__('Saving...'));
insert(dialog)
}
});
dialog.show()
USING HOOKS:
for example you want to create quick entry for customer doctype : (create new customer)
add this hook in parent doctype : for example you are in delivery doctype and here you have customer link type in which you want to use quick entry…
go to delivery doctype hooks and add below hook with your method
"Customer": {
"validate": "erpnext.selling.doctype.customer.customer.quickentry"
},
now go to method and add this code
@frappe.whitelist()
def quickentry(self,method):
ic=re.sub('[^A-Za-z0-9]+', '', self.ic_number)
self.db_set('ic_number', ic)
if self.mobile_no:
number=re.sub('[^0-9+-]+', '', self.mobile_no)
self.db_set('mobile_no', number)
if you still face issue give me your scenario.
check this code if still face any issue feel free to ask
actually i’ve just one field in quick entry, which is Link type, and i want to override its query, i’ve already done in form, but its not working in quick entry, what is easiest way to achieve this? overriding or hooks? i think hooks will not work for this, and don’t know if overriding works for this.
for link field we always use overwrite method because there is no other way to filter link field …if you need any help i will
can you show me example please?
add this in your doctype and add all fields i.e. shown in your dialog
var dialog = new frappe.ui.Dialog({
title: __(“New Property Handover Defect Category”),
fields: [
{
fieldtype: “Link”,
fieldname: “project_name”,
label: __(“project”),
options: “Project”,
reqd: 1,
onchange: function(e) {
console.log(this.value)
console.log(dialog)
if(this.value){
options = [];
cur_dialog.refresh()
frappe.call({
method: 'property_handover.property_handover.doctype.property_handover_defect_category.property_handover_defect_category.project_builing_qty',
freeze: true,
args: {
parent: this.value
},
callback: function(data){
(data.message || []).forEach(function(row){ // start a loop over all options in the response, or in a empty list;
options.push(row.building_name) // makes a option entry 'value' and 'label'
});
console.log(options)
// dialog.fields_dict.building_name=options;
cur_dialog.fields[1].options=options
cur_dialog.refresh()
}
})
}
}
},
{ fieldtype: "Select",
fieldname: "building_name",
label: __("Building Name"),
options: "",
reqd: 1,
},
{ fieldtype: "Data",
fieldname: "category_name",
label: __("Area/Location (Category)"),
reqd: 1,
}
]
})
dialog.set_primary_action(__('Save'), function() {
if(dialog.working) {
return;
}
var data = dialog.get_values();
console.log(data)
if(data) {
dialog.set_message(__('Saving...'));
insert(dialog)
}
});
dialog.show()
Thanks, let me try.
is your problem solved??