Hi Mehdi,
please find the below, thanks.
var CreditUser = false;
function form_onLoad(executionContext){
debugger;
var formContext = executionContext.getFormContext();
var product = formContext.getAttribute("new_productcre").getValue();
var activeStage = formContext.data.process.getActiveStage();
var originatingLead = formContext.getAttribute("originatingleadid").getValue();
formContext.getControl("header_process_new_productnametext").setVisible(false);
stageValidation(executionContext);
if(product != null && product != ""){
formContext.getAttribute("new_productnametext").setValue(product[0].name);
formContext.ui.process.reflow(true);
}
formContext.getControl("new_promocode1").addPreSearch(function(){
filterPromoCodeLookup(formContext,"new_promocode1","100000000");
});
formContext.getControl("new_promocode2").addPreSearch(function(){
filterPromoCodeLookup(formContext,"new_promocode2","100000001");
});
formContext.getControl("new_promocode3").addPreSearch(function(){
filterPromoCodeLookup(formContext,"new_promocode3","100000002");
});
formContext.data.process.addOnStageChange(stageOnChange);
if(originatingLead != null){
formContext.getControl("Leadtoopportunitysalesprocess").setVisible(true);
formContext.getControl("opportunitysalesprocess").setVisible(false);
}else{
formContext.getControl("Leadtoopportunitysalesprocess").setVisible(false);
formContext.getControl("opportunitysalesprocess").setVisible(true);
formContext.ui.process.reflow(true);
}
}
function stageValidation(executionContext){
var formContext = executionContext.getFormContext();
var product = formContext.getAttribute("new_productcre").getValue();
var activeStage = formContext.data.process.getActiveStage();
var userSettings = Xrm.Utility.getGlobalContext().userSettings;
var loggedInUserID = userSettings.userId.slice(1,userSettings.userId.length-1);
var securityRoles = userSettings.roles._collection;
var new_financetype = formContext.getAttribute("new_financetype").getValue();
formContext.getControl("header_process_new_checked").setDisabled(true);
formContext.getControl("header_process_new_checked_1").setDisabled(true);
formContext.ui.process.reflow(true);
for(var key in securityRoles){
if(securityRoles[key].name == "Cl Credit")
{
CreditUser = true;
}
if(securityRoles[key].name == "Cl Compliance" || securityRoles[key].name == "System Administrator"){
formContext.getControl("header_process_new_checked").setDisabled(false);
formContext.getControl("header_process_new_checked_1").setDisabled(false);
formContext.ui.process.reflow(true);
}
}
if(product != null && product != ""){
if(product[0].name == "OB Type" && activeStage.getName() != "Prospecting"){
MarkAllFieldReadOnly(formContext);
formContext.ui.process.reflow(true);
}
else if(product[0].name == "AB Type" && activeStage.getName() != "Prospecting" && activeStage.getName() != "Proposal"){
var lockFields = ["parentaccountid","new_financetype","transactioncurrencyid", "new_amountfinanced", "new_paymentfrequency", "new_term", "new_interestonly", "new_greaterthan80ltv", "new_lmi"];
for(i=0;i<lockFields.length;i++){
if(formContext.getControl(lockFields[i]) != null)
formContext.getControl(lockFields[i]).setDisabled(true);
formContext.ui.process.reflow(true);
}
}
else {
if(new_financetype == 100000011 || new_financetype == 100000012){
formContext.getAttribute("new_assessmentform").setRequiredLevel("required");
formContext.getAttribute("new_disclosureform").setRequiredLevel("required");
}else{
formContext.getAttribute("new_assessmentform").setRequiredLevel("none");
formContext.getAttribute("new_disclosureform").setRequiredLevel("none");
formContext.ui.process.reflow(true);
}
}
if(!CreditUser && product[0].name == "AB Type"){
//Credit assesment fields
formContext.getControl("header_process_new_conditionalapproval").setDisabled(true);
formContext.getControl("header_process_new_status").setDisabled(true);
//Conditional Approved fields
formContext.getControl("header_process_new_conditionscomments").setDisabled(true);
// Credit Approved fields
formContext.getControl("header_process_new_creditapprovalsupportingdocuments").setDisabled(true);
formContext.getControl("header_process_new_policyexceptions").setDisabled(true);
formContext.getControl("header_process_new_submittedinolas").setDisabled(true);
formContext.getControl("header_process_new_policyexceptions").setDisabled(true);
//common field
formContext.getControl("header_process_new_allowstagechange").setDisabled(true);
formContext.getControl("header_process_new_allowstagechange_1").setDisabled(true);
formContext.getControl("header_process_new_allowstagechange_2").setDisabled(true);
formContext.ui.process.reflow(true);
}
}
if(product == "" || product == null){
if(new_financetype == 100000011 || new_financetype == 100000012){
formContext.getAttribute("new_assessmentform").setRequiredLevel("required");
formContext.getAttribute("new_disclosureform").setRequiredLevel("required");
}else{
formContext.getAttribute("new_assessmentform").setRequiredLevel("none");
formContext.getAttribute("new_disclosureform").setRequiredLevel("none");
formContext.ui.process.reflow(true);
}
}
}
function stageOnChange(executionContext){
debugger;
var formContext = executionContext.getFormContext();
var activeStage = formContext.data.process.getActiveStage();
var product = formContext.getAttribute("new_productcre").getValue();
if(product != null && product != "" && product[0].name == "OB Type" && activeStage.getName() != "Prospecting"){
MarkAllFieldReadOnly(formContext);
formContext.ui.process.reflow(true);
}
else if(product != null && product != "" && CreditUser && product[0].name == "AB Type"){
if(activeStage.getName() == "Conditional Approved" || activeStage.getName() == "Credit Assessment" || activeStage.getName() == "Credit Approved"){
formContext.getControl("header_process_new_allowstagechange").setDisabled(false);
formContext.getAttribute("new_allowstagechange").setValue(false);
}
if(activeStage.getName() != "Prospecting" && activeStage.getName() != "Proposal"){
var lockFields = ["parentaccountid","new_financetype","transactioncurrencyid", "new_amountfinanced", "new_paymentfrequency", "new_term", "new_interestonly", "new_greaterthan80ltv", "new_lmi"];
for(i=0;i<lockFields.length;i++){
formContext.getControl(lockFields[i]).setDisabled(true);
formContext.ui.process.reflow(true);
}
}
}else if(product != null && product != "" && !CreditUser && product[0].name == "AB Type"){
//Added so, User without credit security role can not change two stages at a time.
formContext.getAttribute("new_allowstagechange").setValue(false);
formContext.ui.process.reflow(true);
}
}
function MarkAllFieldReadOnly(formContext) {
var allowEdit = ["name","parentcontactid","new_leadsource", "new_supplier", "new_financesubtype", "new_estimatedassetvalue", "new_interestonly", "new_greaterthan80ltv", "estimatedclosedate", "new_conditionalapproval", "new_lmi"]
formContext.ui.controls.forEach(function (control, index) {
if(allowEdit.indexOf(control.getName()) == -1){
control.setDisabled(true);
formContext.ui.process.reflow(true);
}
});
}
function filterPromoCodeLookup(formContext, lookupField, Value){
var customerPromoCodeFilter = "<filter type='and'><condition attribute='new_category' operator='eq' value='"+Value+"'/></filter>";
formContext.getControl(lookupField).addCustomFilter(customerPromoCodeFilter, "new_promocode");
}
function productAccount_onChange(executionContext){
var formContext = executionContext.getFormContext();
var product = formContext.getAttribute("new_productcre").getValue();
if(product != null && product != ""){
formContext.getAttribute("new_productnametext").setValue(product[0].name);
}
stageValidation(executionContext);
formContext.ui.process.reflow(true);
}
function financetype_onChange(executionContext){
var formContext = executionContext.getFormContext();
var new_financetype = formContext.getAttribute("new_financetype").getValue();
if(new_financetype == 100000011 || new_financetype == 100000012){
formContext.getAttribute("new_assessmentform").setRequiredLevel("required");
formContext.getAttribute("new_disclosureform").setRequiredLevel("required");
}else{
formContext.getAttribute("new_assessmentform").setRequiredLevel("none");
formContext.getAttribute("new_disclosureform").setRequiredLevel("none");
//formContext.ui.process.reflow(true);
}
}
// Ribbon functions
function enableRibbonButtons(){
// show/hide "Mark as Won" & "Reopen Opportunity" buttons based on security roles.
var isAdmin = false;
var userSettings = Xrm.Utility.getGlobalContext().userSettings;
var loggedInUserID = userSettings.userId.slice(1,userSettings.userId.length-1);
var securityRoles = userSettings.roles._collection;
for(var key in securityRoles){
if(securityRoles[key].name == "System Administrator")
{
isAdmin = true;
}
}
return isAdmin;
}
ref