Hello Goutam,
I used the above code i was able to hide the button but it does not appear when the condition is satisfied.
enableSendMailForAssignSEButton = function (primaryControl) {
debugger;
try {
var isAsyncOperationCompleted = false;
var isButtonEnabled = false;
var executionContext = primaryControl;
function IsButtonEnabled(formContext) {
if (isAsyncOperationCompleted) {
return isButtonEnabled;
}
if (UTC.UtilitiesT == null || UTC.UtilitiesT == undefined) {
setTimeout("enableSendMailForAssignSEButton(executionContext);", 3000);
return;
}
var OpportunityId = executionContext.data.entity.getId().replace("{", "").replace("}", "");
Xrm.WebApi.retrieveRecord("opportunity", OpportunityId, "?$select=new_isquotecreated").then(
function success(result) {
debugger;
isAsyncOperationCompleted = true;
var stage = executionContext.data.process.getActiveStage().getName();
var opportunityType = executionContext.data.entity.attributes.get("new_opportunitytype").getText().toLowerCase();
var hasPSRole = Helperfile._hasPandSEngineerRole(executionContext);
if (opportunityType != null && opportunityType == "master") {
if (stage != null || stage != undefined || stage != "") {
if (stage.trim() == "Plan & Spec" || hasPSRole) {
isButtonEnabled = true;
}
}
}
if (isButtonEnabled) {
formContext.ui.refreshRibbon();
}
},
function (error) {
isAsyncOperationCompleted = true;
Xrm.Navigation.openAlertDialog({ text: error.message });
});
return false;
}
return {
IsButtonEnabled: IsButtonEnabled
};
}
catch (error) {
console.log("Error in Opportunity Js, Method: enableSendMailForAssignSEButton(), Error: " + error.message);
}
}

Thanks,
Hima