Restrict Cancel Rights

Add a handler to custom_before_cancel event:

cur_frm.cscript.custom_before_cancel = function(doc) {

   if (frappe.user_roles.indexOf("Accounts User")!=-1 && frappe.user_roles.indexOf("Accounts Manager")==-1

           && user_roles.indexOf("System Manager")==-1) {

       if (flt(doc.grand_total) > 10000) {

           frappe.msgprint("You can not cancel this transaction, because grand total \

               is greater than 10000");

           frappe.validated = false;

       }

   }

}