Ravi, This is all the JS code we have on the Account form
/// <reference path="common.js" />
// JavaScript source code
var saved = false;
var isOnload = false;
function onload(executionContext) {
var formName = null;
debugger;
var formContext = executionContext.getFormContext();
if (formContext.getAttribute("prm_consultingindustry") != null) {
formContext.getAttribute("prm_consultingindustry").setRequiredLevel("none");
formContext.ui.controls.get("prm_consultingindustry").setDisabled(true);
}
if (formContext.ui.formSelector.getCurrentItem() != null) {
formName = formContext.ui.formSelector.getCurrentItem().getLabel();
}
if (formName != null && formName == "Commercial Administration") {
if (formContext.getAttribute("prm_consultingindustry") != null) {
formContext.getAttribute("prm_consultingindustry").setRequiredLevel("none");
formContext.ui.controls.get("prm_consultingindustry").setDisabled(false);
}
}
// Signature (Common.js) - FilterNotNull(filterOn, primaryAttribute)
if (formName != null && formName != "Distributor Form" && formName != "Distributor Restricted Form" && formName != "Distributor General Form") {
var Sdk = window.Sdk || {};
Sdk.filterCustomerAccounts = function () {
var customerAccountFilter = "<filter type='and'> <filter type='and'> <condition attribute='statecode' operator='eq' value='0' /> <condition attribute='prm_sapbpid' operator='not-null' /> <filter type='or'> <condition attribute='prm_locationid1' operator='eq' uiname='ACP ThinManager' uitype='account' value='" + formContext.data.entity.getId() + "' /> <condition attribute='prm_locationid1' operator='null' /> </filter> </filter> </filter>";
formContext.getControl("prm_bpid").addCustomFilter(customerAccountFilter, "prm_location");
}
Sdk.setParentAccountIdFilter = function () {
formContext.getControl("prm_bpid").addPreSearch(Sdk.filterCustomerAccounts);
}
Sdk.setParentAccountIdFilter();
//FilterLookupAddConditions("prm_bpid", "<filter type='and'> <filter type='and'> <condition attribute='statecode' operator='eq' value='0' /> <condition attribute='prm_sapbpid' operator='not-null' /> <filter type='or'> <condition attribute='prm_locationid1' operator='eq' uiname='ACP ThinManager' uitype='account' value='" + formContext.data.entity.getId() + "' /> <condition attribute='prm_locationid1' operator='null' /> </filter> </filter> </filter>");
}
if (formName != null && (formName == "Commercial Sponsoring" || formName == "Commercial Form" || formName == "Commercial Administration")) {
if (formContext.getAttribute("prm_bpid") != null) {
//formContext.getControl("prm_bpid").setFocus();
}
}
isOnload = true;
BPID_OnChange(executionContext,isOnload);
ProgramType_OnLoad(executionContext);
preFilterLookup("prm_consultingindustry", "prm_consultingindustry", "1", null, executionContext);
var arraySubgrids = new Array("PartnerApprovers_contextualButtonsContainer");
ToggleDisplay(arraySubgrids, "none", true, executionContext);
// Pre Filter Headquarter Locations
var currentAccount = formContext.data.entity.getId();
if (currentAccount != null) {
preFilterLookup("prm_americahq", "prm_locationid1", currentAccount, "location", executionContext);
preFilterLookup("prm_asiahq", "prm_locationid1", currentAccount, "location", executionContext);
preFilterLookup("prm_europehq", "prm_locationid1", currentAccount, "location", executionContext);
preFilterLookup("prm_globalhq", "prm_locationid1", currentAccount, "location", executionContext);
} else {
formContext.ui.controls.get("prm_americahq").setDisabled(true);
formContext.ui.controls.get("prm_asiahq").setDisabled(true);
formContext.ui.controls.get("prm_europehq").setDisabled(true);
formContext.ui.controls.get("prm_globalhq").setDisabled(true);
}
if (formContext.getAttribute("prm_applicationstatus") != null) {
if (formContext.getAttribute("prm_applicationstatus").getValue() != null) {
var applicationStatus = formContext.getAttribute("prm_applicationstatus").getValue();
var partnerStatus = null;
if (formContext.getAttribute("statuscode") != null) {
partnerStatus = formContext.getAttribute("statuscode").getValue();
if (partnerStatus != null && applicationStatus == 166130002 && partnerStatus == 100000002) {
if (formName != null && formName == "Commercial Form") {
formContext.data.entity.attributes.forEach(function (attribute, index) {
var control = formContext.getControl(attribute.getName());
if (control) {
control.setDisabled(true)
}
});
return;
}
}
}
}
}
if (formContext.ui.getFormType() == 1) { // Create Form
formContext.getAttribute("new_motionanalyzer").setValue("No");
var globalContext = Xrm.Utility.getGlobalContext();
var setUservalue = new Array();
setUservalue[0] = new Object();
setUservalue[0].id = globalContext.userSettings.userId;
setUservalue[0].entityType = 'systemuser';
if (formContext.getAttribute("prm_rockwellsponsor") != null) {
formContext.getAttribute("prm_rockwellsponsor").setValue(setUservalue);
formContext.getAttribute("prm_rockwellsponsor").setSubmitMode("always");
}
}
}
function controlFormRibbon(executionContext) {
var formContext = executionContext.getFormContext();
var formName = null;
if (formContext.ui.formSelector.getCurrentItem() != null) {
formName = formContext.ui.formSelector.getCurrentItem().getLabel();
}
if (formName != null && formName == "Commercial Form") {
return true;
}
else {
return false;
}
}
function SetSPANumber(executionContext) {
var formContext = executionContext.getFormContext();
var programType = formContext.getAttribute("prm_programtype").getValue();
var country = formContext.getAttribute("prm_country").getValue();
var spaNumber = formContext.ui.controls.get("prm_spanumber");
if (programType != null && country != null && spaNumber != null) {
var programTypeid = programType[0].id;
var countryid = country[0].id;
var spaNumberResults = RetrieveMultiple("prm_spanumberSet?$select=prm_spanumber,prm_spanumberId&$filter=prm_ProgramTypeId/Id eq guid'" + programTypeid + "' and prm_CountryId/Id eq guid'" + countryid + "'");
if (spaNumberResults != null && spaNumberResults.results.length > 0 && spaNumberResults.results[0] != null) {
formContext.getAttribute("prm_spanumber").setValue([{ id: spaNumberResults.results[0].prm_spanumberId, name: spaNumberResults.results[0].prm_spanumber, entityType: "prm_spanumber" }]);
}
}
}
function OnChangeOfPrimaryLocation(executionContext) {
debugger;
var formContext = executionContext.getFormContext();
var location = null;
if (formContext.getAttribute("prm_bpid") != null) {
location = formContext.getAttribute("prm_bpid").getValue();
}
if (location != null) {
var locationid = location[0].id;
var locationResults = RetrieveMultiple("prm_locationSet(guid'" + locationid + "')?$select=prm_LocationName,prm_CustomerType,prm_APRBase");
var programType = formContext.getAttribute("prm_programtype").getValue();
if (locationResults != null && locationResults.prm_CustomerType != null && programType == null) {
var programTypeResults = RetrieveMultiple("new_programtypeSet?$select=new_name,new_programtypeId&$filter=prm_CustomerType/Value eq " + locationResults.prm_CustomerType.Value);
if (programTypeResults != null && programTypeResults.results.length > 0 && programTypeResults.results[0].new_programtypeId != null && programTypeResults.results[0].new_name != null) {
var lookupData = new Array();
var lookupItem = new Object();
//Set the GUID
lookupItem.id = programTypeResults.results[0].new_programtypeId;
// Set the name
lookupItem.name = programTypeResults.results[0].new_name;
lookupItem.entityType = "new_programtype";
lookupData[0] = lookupItem;
formContext.getAttribute("prm_programtype").setValue(lookupData);
ProgramType_OnChange(executionContext);
if (lookupItem.name == "Consultant") {
if (formContext.getAttribute("prm_consultingindustry") != null) {
formContext.getAttribute("prm_consultingindustry").setRequiredLevel("required");
formContext.getAttribute("prm_consultingindustry").setValue(null);
formContext.ui.controls.get("prm_consultingindustry").setDisabled(false);
}
}
}
}
if (locationResults != null && locationResults.prm_LocationName != null) {
if (formContext.getAttribute("name") != null) {
formContext.getAttribute("name").setValue(locationResults.prm_LocationName);
}
if (formContext.getAttribute("prm_displayname") != null) {
formContext.getAttribute("prm_displayname").setValue(locationResults.prm_LocationName);
}
}
if (locationResults != null && locationResults.prm_APRBase != null && locationResults.prm_APRBase.Id != null) {
var lookupData = new Array();
var lookupItem = new Object();
//Set the GUID
lookupItem.id = locationResults.prm_APRBase.Id;
//Set the name
lookupItem.name = locationResults.prm_APRBase.Name;
lookupItem.entityType = locationResults.prm_APRBase.LogicalName;
lookupData[0] = lookupItem;
if (formContext.getAttribute("prm_aprbase") != null) {
formContext.getAttribute("prm_aprbase").setValue(lookupData);
formContext.getAttribute("prm_aprbase").setSubmitMode("always");
}
}
}
}
function BPID_OnChange(executionContext,isOnload) {
var formContext = executionContext.getFormContext();
var bpidObject = null;
if (formContext.getAttribute("prm_bpid") != null) {
bpidObject = formContext.getAttribute("prm_bpid").getValue();
}
var filterAlreadyApplied = false;
var fieldsArray = new Array("address1_composite", "prm_displayname", "address1_line1", "address1_line2", "address1_line3", "address1_city", "prm_country", "prm_stateprovince", "address1_postalcode", "emailaddress1", "address1_telephone1", "fax", "websiteurl", "prm_programtype"); // "prm_distributorcontact");
if (bpidObject != null) {
ToggleFieldsAll(fieldsArray, true, executionContext);
}
fieldsArray = new Array("primarycontactid", "prm_softwarelibrarian", "prm_encompasscontentadmin", "prm_executivecontact", "prm_momcontact", "prm_applicant");
if (formContext.ui.getFormType() == 1) {
ToggleFieldsAll(fieldsArray, true, executionContext);
}
else {
ToggleFieldsAll(fieldsArray, false, executionContext);
}
if (!isOnload)
OnChangeOfPrimaryLocation(executionContext);
}
function OnSave(executionContext) {
var formContext = executionContext.getFormContext();
formContext.getAttribute("statuscode").setSubmitMode("always");
formContext.getAttribute("prm_applicationstatus").setSubmitMode("always");
}
function OnStatusChange(executionContext) {
var formContext = executionContext.getFormContext();
if (formContext.getAttribute("statuscode") != null && formContext.getAttribute("statuscode").getValue() != null &&
formContext.getAttribute("prm_applicationstatus") != null && formContext.getAttribute("prm_applicationstatus").getValue() != null &&
formContext.getAttribute("prm_requirementsmet") != null) {
var applicationStatus = formContext.getAttribute("prm_applicationstatus").getValue();
var partnerStatus = formContext.getAttribute("statuscode").getValue();
if (applicationStatus == 166130002 && partnerStatus == 100000002) { // Partner Approved
formContext.getAttribute("prm_requirementsmet").setValue(true);
}
}
}
function ProgramType_OnLoad(executionContext) {
var formContext = executionContext.getFormContext();
var programType = formContext.getAttribute("prm_programtype").getValue();
var ToolkitRequired = formContext.ui.controls.get("prm_istoolkitrequired");
if (programType != null && ToolkitRequired != null) {
var programTypeid = programType[0].id;
var programTypeResults = RetrieveMultiple("new_programtypeSet?$select=prm_AllowEditsonToolkitRequired,prm_NoToolkitRequired,new_programtypeId&$filter=new_programtypeId eq guid'" + programTypeid + "'");
if (programTypeResults != null && programTypeResults.results.length > 0 && programTypeResults.results[0].prm_AllowEditsonToolkitRequired != null) {
var allowToolkitEdits = programTypeResults.results[0].prm_AllowEditsonToolkitRequired;
ToolkitRequired.setDisabled(!allowToolkitEdits);
}
}
}
function ProgramType_OnChange(executionContext) {
var formContext = executionContext.getFormContext();
var programType = formContext.getAttribute("prm_programtype").getValue();
var ToolkitRequired = formContext.getAttribute("prm_istoolkitrequired");
if (programType != null && ToolkitRequired != null) {
var programTypeid = programType[0].id;
var programTypeResults = RetrieveMultiple("new_programtypeSet?$select=prm_AllowEditsonToolkitRequired,prm_NoToolkitRequired,new_programtypeId&$filter=new_programtypeId eq guid'" + programTypeid + "'");
if (programTypeResults != null && programTypeResults.results.length > 0 && programTypeResults.results[0].prm_NoToolkitRequired != null) {
var defaultToolkitRequired = programTypeResults.results[0].prm_NoToolkitRequired;
ToolkitRequired.setValue(defaultToolkitRequired);
}
}
}
//var SYSTEM_ADMINISTRATOR_ROLENAME = "system administrator";
//var SYSTEM_CUSTOMIZER_ROLENAME = "system customizer";
var DistributorGeneralUser_ROLENAME = "distributor general user";
function showHideTabsByRole_OnLoad(executionContext) {
//Retrieve Server URL
var globalContext = Xrm.Utility.getGlobalContext();
var serverUrl = globalContext.getClientUrl();
var str = "";
// Cater for URL differences between on premise and online
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}
//Check for security role
var currentUserRoles = globalContext.userSettings.securityRoles;
for (var i = 0; i < currentUserRoles.length; i++) {
var userRoleId = currentUserRoles[i];
//Detail for entity & Web API query
var entity = "Role";
var filterQuery = "/XRMServices/2011/OrganizationData.svc/RoleSet?$select=Name&$filter=RoleId eq guid'" + userRoleId + "'";
var query = serverUrl + filterQuery;
var service = new XMLHttpRequest();
service.open("GET", query, false);
service.setRequestHeader("X-Requested-Width", "XMLHttpRequest");
service.setRequestHeader("Accept", "application/json,text/javascript, */*");
service.send();
if (service.readyState == 4 /* complete */) {
if (service.status == 200) {
if (JSON.parse(service.response).d.results[0] != null && JSON.parse(service.response).d.results[0].Name != "") {
str += JSON.parse(service.response).d.results[0].Name + ",";
}
}
}
}
GetEntityData(str.substring(0, str.length - 1), executionContext);
}
function ShowOrHideListOfViews(listOfView, ENABLE, executionContext) {
var formContext = executionContext.getFormContext();
if (listOfView.length > 0) {
for (var f = 0; f < listOfView.length; f++) {
(formContext.ui.tabs.get(listOfView[f]) != null) ? formContext.ui.tabs.get(listOfView[f]).setVisible(ENABLE) : "";
}
}
}
function GetEntityData(retrieveReq, executionContext) {
var userRoleName = retrieveReq.split(",");
var formContext = executionContext.getFormContext();
var formTypeValue = formContext.ui.getFormType();
var viewsToVisibleByAdmin = ["tab_6", "tab_10", "tab_radocuments", "tab_11", "tab_15", "tab_12", "tab_14", "tab_9"];
for (var i = 0; i < userRoleName.length; i++) {
var usersCurrentRole = userRoleName[i].toLowerCase();
if (usersCurrentRole == DistributorGeneralUser_ROLENAME) {
//Disable fields
if (formTypeValue == 1 || formTypeValue == 2) {
ShowOrHideListOfViews(viewsToVisibleByAdmin, false);
}
return;
}
}
}
function statusOnChange(executionContext) {
var formContext = executionContext.getFormContext();
var Statuscode = formContext.getAttribute("statuscode").getValue();
var ApplicationStatus = formContext.getAttribute("prm_applicationstatus").getValue();
var fieldsArray = new Array("primarycontactid", "prm_softwarelibrarian", "prm_encompasscontentadmin", "prm_executivecontact", "prm_momcontact", "prm_applicant");
if (Statuscode == 100000000 || (Statuscode != 100000000 && ApplicationStatus == null)) {
ToggleFieldsAll(fieldsArray, true, executionContext);
}
else {
ToggleFieldsAll(fieldsArray, false, executionContext);
}
}