Solved this use case. Made custom script below for both “Set QTY to Zero” and “Delete Zero Lines”:
frappe.ui.form.on("Purchase Receipt", "set_qty_to_zero", function(frm, cdt, cdn) {
var tbl = frm.doc.items || [];
var i = tbl.length;
while (i--) {
if(frm.doc.items[i].qty != 0) {
frm.doc.items[i].qty = 0
frm.refresh_field("items")
}
}
});
frappe.ui.form.on("Purchase Receipt", "delete_zero_items", function(frm, cdt, cdn) {
var tbl = frm.doc.items || [];
var i = tbl.length;
while (i--) {
if(frm.doc.items[i].qty == 0) {
cur_frm.get_field("items").grid.grid_rows[i].remove();
frm.refresh_field("items")
}
}
});