I am trying to build a script report in which I want to a button in the last column of each row and when a user clicks on the button want to show a modal dialog with data from another DocType.
I tried adding a button field to DocType but that field does not show up in report.
How to create a Script Report and add button in the last column of each row?
Regards,
Sorry to bump it.
Is this feature possible in Script Report?
I have the same problem as you, did you have a solution for this?
Sorry I have not been able to find any solution for this yet.
Here is the code I use for a report on Purchase Order:
In your report’s python file:
def execute(filters=None):
columns = get_columns()
data = get_data(filters)
for row in data:
row["button"] = '<button class="btn btn-sm" onclick="frappe.open_dialog({})">Open</button>'.format("'" + row.name + "'")
return columns, data
def get_data(filters=None):
#TODO: consider filters
return frappe.db.get_list("Purchase Order", fields=["*"])
def get_columns():
return [
{
"label": "ID",
"fieldname": "name",
"fieldtype": "Link",
"options": "Purchase Order",
"width": 180,
},
{
"label": "Action",
"fieldname": "button",
"fieldtype": "Data",
"width": 180,
},
]
and in your report’s javascript file:
frappe.query_reports["<Report Name>"] = {
"filters": [
],
onload: async function (report) {
frappe.open_dialog = function (po_name) {
let d = new frappe.ui.Dialog({
title: 'Enter details',
fields: [
{
label: 'Field name',
fieldname: 'fieldname',
fieldtype: 'Data'
}
],
primary_action_label: 'Submit',
primary_action(values) {
console.log(values)
d.hide();
}
});
d.show();
}
Hope this help.
6 Likes