/// <summary> /// Form On Load functions /// </summary> /// <param name="executionContext">Execution Context</param> function OnLoadConnection(executionContext) { "use strict"; try { if (executionContext === null || executionContext === undefined) return; SetCacheForMultilingualMessages(); EnableOpportunityFields(executionContext); ConnectionRoleFilter(executionContext); var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; if (formContext.data.attributes.get("source_0") !== null) { if (formContext.data.attributes.get("source_0").getValue() == "1") //accounts { if (formContext.getAttribute('record2id') !== null) { formContext.getControl("record2id").setEntityTypes(["account"]); filterConnectToLookup(executionContext, "account"); } } else if (formContext.data.attributes.get("source_0").getValue() == "2") { if (formContext.getAttribute('record2id') !== null) { formContext.getControl("record2id").setEntityTypes(["contact"]); //contacts filterConnectToLookup(executionContext, "contact"); } } else if (formContext.data.attributes.get("source_0").getValue() == null) { formContext.getControl("record2id").setEntityTypes(["account", "contact", "opportunity"]); } } var formType = formContext.ui.getFormType(); //On Update Form if (formType === 2) { var connectToEntityType; var connectToNameLookupItem = GetAttributeData(formContext, "record2id"); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined) { connectToEntityType = connectToNameLookupItem[0].entityType; } if (connectToEntityType === "account") { formContext.getControl("record2id").setEntityTypes(["account"]); filterConnectToLookup(executionContext, "account"); } else if (connectToEntityType === "contact") { formContext.getControl("record2id").setEntityTypes(["contact"]); filterConnectToLookup(executionContext, "contact"); } } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "An error occurred while OnLoadConnection" }); } } /// <summary> /// Show Is win, Is payer, Price fields if Connected From is of type opportunity else hide them /// </summary> /// <param name="executionContext">Execution Context</param> function EnableOpportunityFields(executionContext) { "use strict"; try { var entityType; if (executionContext === null || executionContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var connectedFrom = formContext.getAttribute("record1id").getValue(); if (connectedFrom !== null) { entityType = connectedFrom[0].entityType; } var fields = ["negt_ispayer", "negt_iswin"]; if (connectedFrom === null || connectedFrom === undefined || entityType !== "opportunity") { ShowOrHideFields(executionContext, fields, false); } else { ShowOrHideFields(executionContext, fields, true); } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "An error occurred while EnableOpportunityFields" }); } } /// <summary> /// Common function to show or hide any field /// </summary> /// <param name="executionContext">Execution Context</param> /// <param name="fields">Fields array to show or hide</param> /// <param name="value">Value true to show or false to hide the field</param> function ShowOrHideFields(executionContext, fields, value) { "use strict"; try { if (executionContext === null || executionContext === undefined) return; for (var f = 0; f < fields.length; f++) { var control = executionContext.getFormContext().getControl(fields[f].toLowerCase()); if (control !== null || control !== undefined) { executionContext.getFormContext().getControl(fields[f].toLowerCase()).setVisible(value); } } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "Error Occured while ShowOrHideFields in constant js" }); } } /// <summary> /// function to approve the account as primary connection /// </summary> /// <param name="executionContext">Execution Context</param> function OnChangeOfPrimaryConnection(executionContext) { "use strict"; try { var primaryAttributeName = "negt_iswin"; var recordToRoleAttributeName = "record2roleid"; var connectionAttributeName = "record2id"; var opportunityAttributeName = "record1id"; var payerAttributeName = "negt_ispayer"; if (executionContext === null || executionContext === undefined) return; var globalContext = Xrm.Utility.getGlobalContext(); if (globalContext === null || globalContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var formType = formContext.ui.getFormType(); var primaryOptionValue = formContext.getAttribute(primaryAttributeName).getValue(); var payerOptionValue = formContext.getAttribute(payerAttributeName).getValue(); //On Create Form if (formType === 1) { var roleToGuid; var roleTolookupItem = GetAttributeData(formContext, recordToRoleAttributeName); if (roleTolookupItem !== null && roleTolookupItem !== undefined) { roleToGuid = roleTolookupItem[0].id.slice(1, 37); } var relatedOpportunityId; var connectedFromEntityType; var relatedOpportunitylookupItem = GetAttributeData(formContext, opportunityAttributeName); if (relatedOpportunitylookupItem !== null && relatedOpportunitylookupItem !== undefined) { relatedOpportunityId = relatedOpportunitylookupItem[0].id.slice(1, 37); connectedFromEntityType = relatedOpportunitylookupItem[0].entityType; ; } var connectToEntityType; var connectToNameLookupItem = GetAttributeData(formContext, connectionAttributeName); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined) { connectToEntityType = connectToNameLookupItem[0].entityType; } var primaryConnectionCount; var PrimaryConnectionGuid; var isPayer; var resultAPI; if (connectToEntityType === "account" && connectedFromEntityType === "opportunity" && roleTolookupItem !== null) { resultAPI = ConnectionRetrieveAPI(globalContext, roleToGuid, relatedOpportunityId); primaryConnectionCount = resultAPI["@odata.count"]; if (primaryConnectionCount === 1) { PrimaryConnectionGuid = resultAPI.value[0]["connectionid"]; isPayer = resultAPI.value[0]["negt_ispayer"]; } } if (primaryConnectionCount === 1 && primaryOptionValue === true) { var winOptionValue = false; var payerOptionValue = false; if (isPayer) { payerOptionValue = false; formContext.getAttribute("negt_ispayer").setValue(isPayer); } ConfirmationDialogAction(globalContext, PrimaryConnectionGuid, winOptionValue, formContext, payerOptionValue); } } //On Update Form if (formType === 2 && primaryOptionValue === true) { var primaryRecordConnectionGuid = null; var isPayer; var currentConnectionId = formContext.data.entity.getId().slice(1, 37); var roleToGuid; var roleTolookupItem = GetAttributeData(formContext, recordToRoleAttributeName); if (roleTolookupItem !== null && roleTolookupItem !== undefined) { roleToGuid = roleTolookupItem[0].id.slice(1, 37); } var relatedOpportunityId, connectToEntityType, connectedFromEntityType, relatedConnectedToId; var relatedOpportunitylookupItem = GetAttributeData(formContext, opportunityAttributeName); if (relatedOpportunitylookupItem !== null && relatedOpportunitylookupItem !== undefined) { relatedOpportunityId = relatedOpportunitylookupItem[0].id.slice(1, 37); connectedFromEntityType = relatedOpportunitylookupItem[0].entityType; } var connectToNameLookupItem = GetAttributeData(formContext, connectionAttributeName); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined) { connectToEntityType = connectToNameLookupItem[0].entityType; relatedConnectedToId = connectToNameLookupItem[0].id.slice(1, 37); } var recordcount; if (connectToEntityType === "account" && connectedFromEntityType === "opportunity" && roleTolookupItem !== null) { var results = ConnectionRetrieveAPI(globalContext, roleToGuid, relatedOpportunityId); recordcount = results["@odata.count"]; if (recordcount === 1) { primaryRecordConnectionGuid = results.value[0]["connectionid"]; isPayer = results.value[0]["negt_ispayer"]; } } if (primaryRecordConnectionGuid !== null && primaryRecordConnectionGuid !== undefined) { if (currentConnectionId !== primaryRecordConnectionGuid.toUpperCase()) { //var winOptionValue = true; var winOptionValue = false; var payerOptionValue = false; if (isPayer) { payerOptionValue = false; formContext.getAttribute("negt_ispayer").setValue(isPayer); } ConfirmationDialogAction(globalContext, primaryRecordConnectionGuid, winOptionValue, formContext, payerOptionValue); } } } if (formType === 2 && primaryOptionValue === false) { var primaryRecordConnectionGuid = null; var currentConnectionId = formContext.data.entity.getId().slice(1, 37); var roleToGuid; var roleTolookupItem = GetAttributeData(formContext, recordToRoleAttributeName); if (roleTolookupItem !== null && roleTolookupItem !== undefined) { roleToGuid = roleTolookupItem[0].id.slice(1, 37); } var relatedOpportunityId, connectToEntityType, connectedFromEntityType; var relatedOpportunitylookupItem = GetAttributeData(formContext, opportunityAttributeName); if (relatedOpportunitylookupItem !== null && relatedOpportunitylookupItem !== undefined) { relatedOpportunityId = relatedOpportunitylookupItem[0].id.slice(1, 37); connectedFromEntityType = relatedOpportunitylookupItem[0].entityType; } var connectToNameLookupItem = GetAttributeData(formContext, connectionAttributeName); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined) { connectToEntityType = connectToNameLookupItem[0].entityType; } var recordcount; if (connectToEntityType === "account" && connectedFromEntityType === "opportunity" && roleTolookupItem !== null) { var results = ConnectionRetrieveAPI(globalContext, roleToGuid, relatedOpportunityId); recordcount = results["@odata.count"]; if (recordcount === 1) { primaryRecordConnectionGuid = results.value[0]["connectionid"]; } } //if (primaryRecordConnectionGuid !== null && primaryRecordConnectionGuid !== undefined) { // if (currentConnectionId !== primaryRecordConnectionGuid.toUpperCase()) { // Xrm.Navigation.openAlertDialog({ text: GetMessageText("M61") }); // formContext.getAttribute("negt_iswin").setValue(true); // } // } } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "Error Occured while OnChangeOfPrimaryConnection executing...." }); } } /// <summary> /// Common function to retrieve the value from the field /// </summary> /// <param name="executionContext">Execution Context</param> /// <param name="attributeName">Attribute Schema Name</param> function GetAttributeData(executionFormCtx, attributeName) { "use strict"; var returnValue = executionFormCtx.getAttribute(attributeName).getValue(); return returnValue; } /// <summary> /// Common function to Show the Confirmation Dialog /// </summary> /// <param name="contextURL">Global Context</param> /// <param name="connectionGuid">Connection Guid</param> /// <param name="optionValue">Primary Option Value</param> /// <param name="formContext">Form Context</param> function ConfirmationDialogAction(contextURL, connectionGuid, optionValue, formContext, payerOption) { "use strict"; var exMsg = ""; var exMsgCancelbtn = ""; var exMsgApprovbtn = ""; var exMsgSubtitle = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M59"); exMsgCancelbtn = sessionStorage.getItem("M96"); exMsgApprovbtn = sessionStorage.getItem("M95"); exMsgSubtitle = sessionStorage.getItem("M97"); } else { exMsg = GetMessageText("M59"); exMsgCancelbtn = GetMessageText("M96"); exMsgApprovbtn = GetMessageText("M95"); exMsgSubtitle = GetMessageText("M97"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M59"); } if (exMsgCancelbtn === "" || exMsgCancelbtn === null) { exMsgCancelbtn = GetMessageText("M96"); } if (exMsgApprovbtn === "" || exMsgApprovbtn === null) { exMsgApprovbtn = GetMessageText("M95"); } if (exMsgSubtitle === "" || exMsgSubtitle === null) { exMsgSubtitle = GetMessageText("M97"); } var confirmStrings = { title: "Information", text: exMsg, subtitle: exMsgSubtitle, confirmButtonLabel: exMsgApprovbtn, cancelButtonLabel: exMsgCancelbtn }; var confirmOptions = { height: 200, width: 450 }; //Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(successCallback, errorCallback); Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success) { if (success.confirmed) { var entity = {}; entity.negt_iswin = optionValue; if (payerOption !== undefined && payerOption !== null && payerOption !== '') { entity.negt_ispayer = payerOption; } var req = new XMLHttpRequest(); req.open("PATCH", contextURL.getClientUrl() + "/api/data/v9.1/connections(" + connectionGuid + ")", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 204) { //Success - No Return Data - Do Something } else { Xrm.Navigation.openAlertDialog(this.statusText); } } }; req.send(JSON.stringify(entity)); } else { formContext.getAttribute("negt_iswin").setValue(false); formContext.getAttribute("negt_ispayer").setValue(false); } }, function () { formContext.getAttribute("negt_iswin").setValue(false); formContext.getAttribute("negt_ispayer").setValue(false); }); } /// <summary> /// Common function to retrive WebAPI /// </summary> /// <param name="contextURL">Global Context</param> /// <param name="roleGuid">Connection Role Guid</param> /// <param name="relatedOpportunityId">Connected From Guid</param> function ConnectionRetrieveAPI(contextURL, roleGuid, relatedOpportunityId) { "use strict"; var results = null; var req = new XMLHttpRequest(); req.open("GET", contextURL.getClientUrl() + "/api/data/v9.1/connections?$select=connectionid,negt_ispayer&$filter=negt_iswin eq true and statecode eq 0 and _record2roleid_value eq " + roleGuid + " and _record1id_value eq " + relatedOpportunityId + " and record2objecttypecode eq 1 &$count=true", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { results = JSON.parse(this.response); } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(); return results; } // function to trigger on save of connection /// <summary> /// function to prevent saving two connections with Primary No for same role /// </summary> /// <param name="executionContext">Execution Context</param> // function to trigger on save of connection /// <summary> /// function to prevent saving two connections with Primary No for the same role /// </summary> /// <param name="executionContext">Execution Context</param> function OnSaveOfConnection(executionContext) { "use strict"; var primaryAttributeName = "negt_iswin"; var recordToRoleAttributeName = "record2roleid"; var connectionAttributeName = "record2id"; var opportunityAttributeName = "record1id"; var isPayerOptionName = "negt_ispayer"; var isPayerSessionFlag=sessionStorage.getItem("IsPayerFlag"); if(isPayerSessionFlag!==null && isPayerSessionFlag!==undefined) { if(isPayerSessionFlag==="1") { sessionStorage.setItem("IsPayerFlag","0"); return; } } var abc=executionContext.getEventArgs().isDefaultPrevented(); console.log("Save Mode is "+abc); var eventArgs = executionContext.getEventArgs(); console.log("Save Mode is "+eventArgs.getSaveMode()); if (executionContext === null || executionContext === undefined) return; var globalContext = Xrm.Utility.getGlobalContext(); if (globalContext === null || globalContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var formType = formContext.ui.getFormType(); var primaryOptionValue = formContext.getAttribute(primaryAttributeName).getValue(); var primaryOptionValue = formContext.getAttribute(primaryAttributeName).getValue(); var isPayerOptionValue = GetAttributeData(formContext, isPayerOptionName); var roleToGuid; var roleTolookupItem = GetAttributeData(formContext, recordToRoleAttributeName); if (roleTolookupItem !== null && roleTolookupItem !== undefined) { roleToGuid = roleTolookupItem[0].id.slice(1, 37); } var relatedOpportunityId, connectedFromEntityType, connectToEntityType, connectToEntityId; var relatedOpportunitylookupItem = GetAttributeData(formContext, opportunityAttributeName); if (relatedOpportunitylookupItem !== null && relatedOpportunitylookupItem !== undefined) { relatedOpportunityId = relatedOpportunitylookupItem[0].id.slice(1, 37); connectedFromEntityType = relatedOpportunitylookupItem[0].entityType; } var connectToNameLookupItem = GetAttributeData(formContext, connectionAttributeName); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined) { connectToEntityType = connectToNameLookupItem[0].entityType; connectToEntityId = connectToNameLookupItem[0].id.slice(1, 37); } var primaryConnectionCount; var totalConnectionCount; if (connectedFromEntityType = "opportunity") { if (connectToEntityType !== "account" && connectToEntityType !== "contact") { var exMsg = ""; exMsg = GetMessageText("M78"); Xrm.Navigation.openAlertDialog({ text: exMsg }); formContext.getAttribute(connectionAttributeName).setValue(null); executionContext.getEventArgs().preventDefault(); } } if (formType === 1) { if (connectToEntityType === "account" && connectedFromEntityType === "opportunity" && isPayerOptionValue === true) { IsPayerYesAlertCreate(relatedOpportunityId, globalContext, executionContext, formType); } if (connectToEntityType === "account" && connectedFromEntityType === "opportunity" && roleTolookupItem !== null && primaryOptionValue === false) { var results = ConnectionRetrieveAPI(globalContext, roleToGuid, relatedOpportunityId); primaryConnectionCount = results["@odata.count"]; var results1 = TotalConnectionRetrieveAPI(globalContext, roleToGuid, relatedOpportunityId); totalConnectionCount = results1["@odata.count"]; if (totalConnectionCount === 1 && primaryConnectionCount === 0) { var exMsg = ""; var exMsgCancelbtn = ""; var exMsgApprovbtn = ""; var exMsgSubtitle = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M60"); exMsgCancelbtn = sessionStorage.getItem("M96"); exMsgApprovbtn = sessionStorage.getItem("M95"); exMsgSubtitle = sessionStorage.getItem("M97"); } else { exMsg = GetMessageText("M60"); exMsgCancelbtn = GetMessageText("M96"); exMsgApprovbtn = GetMessageText("M95"); exMsgSubtitle = GetMessageText("M97"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M60"); } if (exMsgCancelbtn === "" || exMsgCancelbtn === null) { exMsgCancelbtn = GetMessageText("M96"); } if (exMsgApprovbtn === "" || exMsgApprovbtn === null) { exMsgApprovbtn = GetMessageText("M95"); } if (exMsgSubtitle === "" || exMsgSubtitle === null) { exMsgSubtitle = GetMessageText("M97"); } executionContext.getEventArgs().preventDefault(); var confirmStrings = { title: "Information", text: exMsg, subtitle: exMsgSubtitle, confirmButtonLabel: exMsgApprovbtn, cancelButtonLabel: exMsgCancelbtn }; var confirmOptions = { height: 200, width: 450 }; //Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(successCallback, errorCallback); Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success) { if (success.confirmed) { formContext.getAttribute("negt_iswin").setValue(true); } else { formContext.getAttribute("negt_iswin").setValue(false); } }, function () { formContext.getAttribute("negt_iswin").setValue(false); }); } } } if (formType === 2) { var connectionId = formContext.data.entity.getId().slice(1, 37); if (connectToEntityType === "account" && connectedFromEntityType === "opportunity" && isPayerOptionValue === true) { IsPayerYesAlertUpdate(relatedOpportunityId, globalContext, connectionId, executionContext, formType); } } } /// <summary> /// function to retrive WebAPI(retrieves total count of connections for a particular role) /// </summary> /// <param name="contextURL">Global Context</param> /// <param name="roleGuid">Connection Role Guid</param> /// <param name="relatedOpportunityId">Connected From Guid</param> function TotalConnectionRetrieveAPI(contextURL, roleGuid, relatedOpportunityId) { "use strict"; var results1 = null; var req = new XMLHttpRequest(); req.open("GET", contextURL.getClientUrl() + "/api/data/v9.1/connections?$filter=record2objecttypecode eq 1 and statecode eq 0 and _record2roleid_value eq " + roleGuid + " and _record1id_value eq " + relatedOpportunityId + "&$count=true", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { results1 = JSON.parse(this.response); } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(); return results1; } /// <summary> /// function to show alert when changing Is Payer field /// </summary> /// <param name="executionContext">Execution Context</param> function OnChangeOfIsPayer(executionContext) { "use strict"; if (executionContext === null || executionContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var globalContext = Xrm.Utility.getGlobalContext(); if (globalContext === null || globalContext === undefined) return; var connectionAttributeName = "record2id"; var isPayerOptionName = "negt_ispayer"; var isPayerOptionValue = GetAttributeData(formContext, isPayerOptionName); var connectedAccountId = null; var connectedRecordEntityType = null; var connectToNameLookupItem = GetAttributeData(formContext, connectionAttributeName); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined) { connectedAccountId = connectToNameLookupItem[0].id.slice(1, 37); connectedRecordEntityType = connectToNameLookupItem[0].entityType; } var accountType; var mkDenial; if (isPayerOptionValue === true && connectedRecordEntityType === "account") { var result = RetrieveConnectedAccountDetails(globalContext, connectedAccountId); accountType = result["accountcategorycode"]; mkDenial = result["negt_mkdenialcode"]; if (accountType === 10000 && mkDenial !== 10001) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M49"); } else { exMsg = GetMessageText("M49"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M49"); } Xrm.Navigation.openAlertDialog({ text: exMsg }); formContext.getAttribute(isPayerOptionName).setValue(false); } if (accountType !== 10000 && mkDenial === 10001) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M50"); } else { exMsg = GetMessageText("M50"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M50"); } Xrm.Navigation.openAlertDialog({ text: exMsg }); formContext.getAttribute(isPayerOptionName).setValue(false); } if (accountType === 10000 && mkDenial === 10001) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M51"); } else { exMsg = GetMessageText("M51"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M51"); } Xrm.Navigation.openAlertDialog({ text: exMsg }); formContext.getAttribute(isPayerOptionName).setValue(false); } } } /// <summary> /// function to retrieve Connected account details /// </summary> /// <param name="globalContext">Global Context</param> /// <param name="connectedAccountId">Connected Account Guid</param> function RetrieveConnectedAccountDetails(globalContext, connectedAccountId) { "use strict"; var result = null; var req = new XMLHttpRequest(); req.open("GET", globalContext.getClientUrl() + "/api/data/v9.1/accounts(" + connectedAccountId + ")?$select=accountcategorycode,negt_mkdenialcode", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { result = JSON.parse(this.response); } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(); return result; } /// <summary> /// common function to retrieve the data through api call /// </summary> /// <param name="query">Query to pass in api call</param> function GetData(query) { "use strict"; try { var data = {}; var serverURL = Xrm.Utility.getGlobalContext().getClientUrl(); var req = new XMLHttpRequest(); req.open("GET", serverURL + "/api/data/v9.1/" + query, false); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { data = JSON.parse(this.responseText); return data; } else { var error = JSON.parse(this.responseText).error; Xrm.Navigation.openAlertDialog({ text: error.message }); } } }; req.send(); return data; } catch (error) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M8"); } else { exMsg = GetMessageText("M8"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M8"); } Xrm.Navigation.openAlertDialog({ text: exMsg }); } } /// <summary> /// Common function to retrieve the messages to be displayed while alerting /// </summary> /// <param name="msgKey">Message Key</param> function GetMessageText(msgKey) { "use strict"; try { var userId = Xrm.Utility.getGlobalContext().userSettings.userId; userId = userId.replace("{", ""); userId = userId.replace("}", ""); var query = "usersettingscollection(" + userId + ")?$select=uilanguageid"; var userData = GetData(query); if (userData !== null && userData !== undefined) { var langCode = userData.uilanguageid; var defaultLangCode = 1033; var langQuery = "negt_multilingualconfigurations?$select=negt_languagecode,negt_message,negt_messagekey,negt_multilingualconfigurationid,negt_name&$filter=negt_languagecode eq '" + langCode + "' and negt_messagekey eq '" + msgKey + "'"; var langData = GetData(langQuery); if (langData !== null && langData !== undefined && langData.value.length > 0) { return langData.value[0].negt_message; } else{ var defaultLangQuery = "negt_multilingualconfigurations?$select=negt_languagecode,negt_message,negt_messagekey,negt_multilingualconfigurationid,negt_name&$filter=negt_languagecode eq '" + defaultLangCode + "' and negt_messagekey eq '" + msgKey + "'"; var defaultLangData = GetData(defaultLangQuery); if (defaultLangData !== null && defaultLangData !== undefined && defaultLangData.value.length > 0) { return defaultLangData.value[0].negt_message; } } } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "An error occurred while GetMessageText." }); } } /// <summary> /// On Change of Account lock set/clear is payer accordingly and check for denied accounts /// </summary> /// <param name="executionContext">executionContext</param> function OnChangeOfAccount(executionContext) { "use strict"; try { if (executionContext === null || executionContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var globalContext = Xrm.Utility.getGlobalContext(); if (globalContext === null || globalContext === undefined) return; var isPayerOptionName = "negt_ispayer"; var connectToNameLookupItem = GetAttributeData(formContext, "record2id"); var stateCode = GetAttributeData(formContext, "statecode"); if (connectToNameLookupItem !== null && connectToNameLookupItem !== undefined && stateCode === 0) { var connectedId = connectToNameLookupItem[0].id.slice(1, 37); var connectedRecordEntityType = connectToNameLookupItem[0].entityType; var connectFromNameLookupItem = GetAttributeData(formContext, "record1id"); if (connectFromNameLookupItem !== null && connectFromNameLookupItem !== undefined) { var connectedFromRecordEntityType = connectFromNameLookupItem[0].entityType; if (connectedFromRecordEntityType === "opportunity") { if (connectedRecordEntityType === "account") { formContext.getControl(isPayerOptionName).setDisabled(false); var result = RetrieveConnectedAccountDetails(globalContext, connectedId); CheckDeniedCode(result, formContext, true); } else if (connectedRecordEntityType === "contact") { SetIsPayerForContact(formContext); //retrieve account and check for denied code var contactResult = GetData("contacts(" + connectedId + ")?$select=_parentcustomerid_value"); if (contactResult !== null) { var accId = contactResult["_parentcustomerid_value"]; if (accId !== null) { var accResult = RetrieveConnectedAccountDetails(globalContext, accId); CheckDeniedCode(accResult, formContext, false); } } } } } if (connectedRecordEntityType === "account") { OnChangeOfIsPayer(executionContext); } } } catch (e) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M62"); } else { exMsg = GetMessageText("M62"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M62"); } Xrm.Navigation.openAlertDialog({ text: exMsg }); } } /// <summary> /// check for denied accounts /// </summary> /// <param name="executionContext">executionContext</param> function CheckDeniedCode(result, formContext, accFlag) { "use strict"; try { if (result !== null || result !== undefined) { var mkDenialCode = result["negt_mkdenialcode"]; if (mkDenialCode === 10001) //denied { var exMsg = ""; if (typeof(Storage) !== "undefined") { if (accFlag) { exMsg = sessionStorage.getItem("M63"); } else { exMsg = sessionStorage.getItem("M68"); } } else { if (accFlag) { exMsg = GetMessageText("M63"); } else { exMsg = sessionStorage.getItem("M68"); } } if (exMsg === "" || exMsg === null) { if (accFlag) { exMsg = GetMessageText("M63"); } else { exMsg = sessionStorage.getItem("M68"); } } Xrm.Navigation.openAlertDialog({ text: exMsg }); formContext.getAttribute("record2id").setValue(null); } } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "An error occurred in CheckDeniedCode" }); } } /// <summary> /// Set Cache For Multilingual Messages /// </summary> /// <param name="executionContext">executionContext</param> function SetCacheForMultilingualMessages() { "use strict"; try { if (typeof(Storage) !== "undefined") { var arrAccountMessages = ["M8", "M49", "M50", "M51", "M59", "M60", "M62", "M63", "M68", "M84", "M94", "M95", "M96", "M97", "M128", "M129", "M146"]; // Get the data from cache using user-specific cache key for (var j = 0; j < arrAccountMessages.length; j++) { var res = sessionStorage.getItem(arrAccountMessages[j]); if (res === null || res === undefined) { var msgText = GetMessageText(arrAccountMessages[j]); sessionStorage.setItem(arrAccountMessages[j], msgText); } } } } catch (e) { Xrm.Navigation.openAlertDialog({ text: "An error occurred in SetCacheForMultilingualMessages" }); } } /// <summary> /// Fuction to restrict setting up 'Payer'- Keep value as No and read-only." for connection with contacts /// </summary> /// <param name="msgKey">Message Key</param> //Fuction to restrict setting up 'Payer'- Keep value as No and read-only." for connection with contacts function SetIsPayerForContact(formContext) { "use strict"; var isPayerOptionName = "negt_ispayer"; formContext.getAttribute(isPayerOptionName).setValue(false); formContext.getControl(isPayerOptionName).setDisabled(true); } /// <summary> /// function to retrieve the total count of connections with Is payer = Yes (for account) from a particular opportunity. /// </summary> /// <param name="msgKey">Message Key</param> function IsPayerYesAlertCreate(relatedOpportunityId, globalContext, executionContext, formType) { "use strict"; var recordCount = 0; var connectGuid = null; //var accountId = null; //var recordToRoleId = null; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var exMsg = ""; var exMsgCancelbtn = ""; var exMsgApprovbtn = ""; var exMsgSubtitle = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M84"); exMsgCancelbtn = sessionStorage.getItem("M96"); exMsgApprovbtn = sessionStorage.getItem("M95"); //exMsgSubtitle = sessionStorage.getItem("M94"); } else { exMsg = GetMessageText("M84"); exMsgCancelbtn = GetMessageText("M96"); exMsgApprovbtn = GetMessageText("M95"); //exMsgSubtitle = GetMessageText("M94"); } if (exMsgCancelbtn === "" || exMsgCancelbtn === null) { exMsgCancelbtn = GetMessageText("M96"); } if (exMsgApprovbtn === "" || exMsgApprovbtn === null) { exMsgApprovbtn = GetMessageText("M95"); } // if (exMsgSubtitle === "" || exMsgSubtitle === null) { // exMsgSubtitle = GetMessageText("M97"); // } var confirmStrings = { title: "Information", //text: exMsg, subtitle: exMsg, confirmButtonLabel: exMsgApprovbtn, cancelButtonLabel: exMsgCancelbtn }; var confirmOptions = { height: 100, width: 450 }; //var isPayerOptionName = "negt_ispayer"; //Get count of Payer Account Connection var req = new XMLHttpRequest(); req.open("GET", globalContext.getClientUrl() + "/api/data/v9.1/connections?$filter=_record1id_value eq " + relatedOpportunityId + " and negt_ispayer eq true and statecode eq 0 and record2objecttypecode eq 1&$count=true", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { var results = JSON.parse(this.response); if (results !== undefined) { recordCount = results["@odata.count"]; for (var i = 0; i < results.value.length; i++) { connectGuid = results.value[i]["connectionid"]; } } } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(); //If Is Payer Account Connection Present, confirmation to set new payer account if (formType === 1 && recordCount === 1 && connectGuid !== null) { executionContext.getEventArgs().preventDefault(); Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success) { if (success.confirmed) { var entity = {}; entity.negt_ispayer = false; var req = new XMLHttpRequest(); req.open("PATCH", globalContext.getClientUrl() + "/api/data/v9.1/connections(" + connectGuid + ")", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("If-Match", "*"); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 204) { //Success - No Return Data - Do Something } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(JSON.stringify(entity)); formContext.getAttribute("negt_ispayer").setValue(true); //formContext.data.entity.save(); ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); } else { //sessionStorage.setItem("IsPayerFlag","1"); formContext.getAttribute("negt_ispayer").setValue(false); //formContext.data.save(); } }, function () { formContext.getAttribute("negt_ispayer").setValue(false); //sessionStorage.setItem("IsPayerFlag","1"); //formContext.data.save(); }); } //Confirmation to set payer account else if(formType === 1 && recordCount === 0 && connectGuid === null){ executionContext.getEventArgs().preventDefault(); Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success){ if(success.confirmed){ formContext.getAttribute("negt_ispayer").setValue(true); //formContext.data.entity.save(); ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); }else { formContext.getAttribute("negt_ispayer").setValue(false); //formContext.data.save(); } }, function(){ formContext.getAttribute("negt_ispayer").setValue(false); //formContext.data.save(); }); } } /// <summary> /// Set Payer to only one account on update /// </summary> /// <param name="msgKey">Message Key</param> function IsPayerYesAlertUpdate(relatedOpportunityId, globalContext, connectionId, executionContext, formType) { "use strict"; var recordCount = 0; var connectGuid = null; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var exMsg = ""; var exMsgCancelbtn = ""; var exMsgApprovbtn = ""; var exMsgSubtitle = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M84"); exMsgCancelbtn = sessionStorage.getItem("M96"); exMsgApprovbtn = sessionStorage.getItem("M95"); //exMsgSubtitle = sessionStorage.getItem("M94"); } else { exMsg = GetMessageText("M84"); exMsgCancelbtn = GetMessageText("M96"); exMsgApprovbtn = GetMessageText("M95"); //exMsgSubtitle = GetMessageText("M94"); } if (exMsgCancelbtn === "" || exMsgCancelbtn === null) { exMsgCancelbtn = GetMessageText("M96"); } if (exMsgApprovbtn === "" || exMsgApprovbtn === null) { exMsgApprovbtn = GetMessageText("M95"); } var confirmStrings = { title: "Information", //text: exMsg, subtitle: exMsg, confirmButtonLabel: exMsgApprovbtn, cancelButtonLabel: exMsgCancelbtn }; var confirmOptions = { height: 100, width: 450 }; var req = new XMLHttpRequest(); req.open("GET", globalContext.getClientUrl() + "/api/data/v9.1/connections?$filter=_record1id_value eq " + relatedOpportunityId + " and negt_ispayer eq true and statecode eq 0 and record2objecttypecode eq 1&$count=true", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { var results = JSON.parse(this.response); if (results !== undefined) { recordCount = results["@odata.count"]; for (var i = 0; i < results.value.length; i++) { connectGuid = results.value[i]["connectionid"]; } ConfirmationForIsPayer(executionContext,formType,recordCount,connectionId,connectGuid,relatedOpportunityId,confirmStrings,confirmOptions); } } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(); } function ConfirmationForIsPayer(executionContext,formType,recordCount,connectionId,connectGuid,relatedOpportunityId,confirmStrings,confirmOptions) { try { var formContext = executionContext.getFormContext(); var globalContext = Xrm.Utility.getGlobalContext(); if (globalContext === null || globalContext === undefined) return; //If Is Payer Account Connection Present, confirmation to set new payer account if (formType === 2 && recordCount === 1 && connectionId !== null && connectGuid !== null) { if (connectGuid.toLowerCase() !== connectionId.toLowerCase()) { executionContext.getEventArgs().preventDefault(); Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success) { if (success.confirmed) { var entity = {}; entity.negt_ispayer = false; var req = new XMLHttpRequest(); req.open("PATCH", globalContext.getClientUrl() + "/api/data/v9.1/connections(" + connectGuid + ")", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("If-Match", "*"); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 204) { //Success - No Return Data - Do Something } else { Xrm.Navigation.openAlertDialog({ text: this.statusText }); } } }; req.send(JSON.stringify(entity)); formContext.getAttribute("negt_ispayer").setValue(true); ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); var entity = {}; entity.negt_ispayer = true; // var req = new XMLHttpRequest(); // req.open("PATCH", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/connections("+connectionId+")", false); // req.setRequestHeader("OData-MaxVersion", "4.0"); // req.setRequestHeader("OData-Version", "4.0"); // req.setRequestHeader("Accept", "application/json"); // req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); // req.onreadystatechange = function() { // if (this.readyState === 4) { // req.onreadystatechange = null; // if (this.status === 204) { // ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); // //Success - No Return Data - Do Something // } else { // Xrm.Utility.alertDialog(this.statusText); // } // } // }; // req.send(JSON.stringify(entity)); } else { formContext.getAttribute("negt_ispayer").setValue(false); //sessionStorage.setItem("IsPayerFlag","1"); //formContext.data.save(); } }, function () { formContext.getAttribute("negt_ispayer").setValue(false); //sessionStorage.setItem("IsPayerFlag","1"); //formContext.data.save(); }); } else { //formContext.data.save(); } } //Confirmation to set payer account else if(formType === 2 && recordCount === 0 && connectionId !== null && connectGuid === null){ //if (connectGuid.toLowerCase() !== connectionId.toLowerCase()) { executionContext.getEventArgs().preventDefault(); Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success){ if(success.confirmed){ formContext.getAttribute("negt_ispayer").setValue(true); ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); // var entity = {}; // entity.negt_ispayer = true; // Xrm.WebApi.online.updateRecord("connection", connectionId, entity).then( // function success(result) { // var updatedEntityId = result.id; // ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); // }, // function(error) { // Xrm.Utility.alertDialog(error.message); // } // ); //ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId); }else { formContext.getAttribute("negt_ispayer").setValue(false); sessionStorage.setItem("IsPayerFlag","1"); formContext.data.save(); } }, function(){ formContext.getAttribute("negt_ispayer").setValue(false); sessionStorage.setItem("IsPayerFlag","1"); formContext.data.save(); }); } } else { //formContext.data.save(); } }catch { } } function ChangeOpportuntiyBillingAddress(executionContext, globalContext, relatedOpportunityId){ debugger; "use strict"; try{ //Get Account Payer Address var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var name = null; var address1_line1 = null; var address1_city = null; var address1_postalcode = null; var stateName = null; var stateId = null; var countryName = null; var countryId = null; var payerAccount = formContext.getAttribute("record2id"); if(payerAccount !== null && payerAccount !== undefined){ var payerAccountId = payerAccount.getValue()[0].id; payerAccountId = payerAccountId.replace("}", ""); payerAccountId = payerAccountId.replace("{", ""); var query = "accounts?$select=name,address1_city,address1_line1,address1_postalcode,_negt_countryid_value,_negt_stateid_value&$filter=accountid eq " + payerAccountId; var payerAccountAddress = GetData(query); if(payerAccountAddress !== null && payerAccountAddress !== undefined){ if (payerAccountAddress.value !== undefined){ if (payerAccountAddress.value.length > 0){ name = payerAccountAddress.value[0]["name"]; address1_line1 = payerAccountAddress.value[0]["address1_line1"]; address1_city = payerAccountAddress.value[0]["address1_city"]; address1_postalcode = payerAccountAddress.value[0]["address1_postalcode"]; //Get countryid and countryname if (payerAccountAddress.value[0]["_negt_countryid_value"] !== null && payerAccountAddress.value[0]["_negt_countryid_value"] !== undefined) { countryId = payerAccountAddress.value[0]["_negt_countryid_value"]; countryName = payerAccountAddress.value[0]["[email protected]"]; } //Get stateid and statename if (payerAccountAddress.value[0]["_negt_stateid_value"] !== null && payerAccountAddress.value[0]["_negt_stateid_value"] !== undefined) { stateId = payerAccountAddress.value[0]["_negt_stateid_value"]; stateName = payerAccountAddress.value[0]["[email protected]"]; } } } } } var subtitleMsg = ""; var cancelBtnLbl = ""; var confirmBtnLbl = ""; if (typeof(Storage) !== "undefined") { subtitleMsg = sessionStorage.getItem("M146"); cancelBtnLbl = sessionStorage.getItem("M96"); confirmBtnLbl = sessionStorage.getItem("M95"); } else { subtitleMsg = sessionStorage.getItem("M146"); cancelBtnLbl = sessionStorage.getItem("M96"); confirmBtnLbl = sessionStorage.getItem("M95"); } if (cancelBtnLbl === "" || cancelBtnLbl === null) { cancelBtnLbl = GetMessageText("M96"); } if (confirmBtnLbl === "" || confirmBtnLbl === null) { confirmBtnLbl = GetMessageText("M95"); } if (subtitleMsg === "" || subtitleMsg === null) { subtitleMsg = GetMessageText("M146"); } var subTittleMsgArray = []; subTittleMsgArray = subtitleMsg.split(";"); var res = ""; //Show account name if(name === null){ res = subTittleMsgArray[1].replace("@BillingName", ""); } else{ res = subTittleMsgArray[1].replace("@BillingName", name); } //Show account street if(address1_line1 === null){ res = res.replace("@Street", ""); } else{ res = res.replace("@Street", address1_line1); } //Show account city if(address1_city === null){ res = res.replace("@City", ""); } else{ res = res.replace("@City", address1_city); } //Show account postal code if(address1_postalcode === null){ res = res.replace("@Zip/Postal Code", ""); } else{ res = res.replace("@Zip/Postal Code", address1_postalcode); } //Show account state name if(stateName === null){ res = res.replace("@State/Province", ""); } else{ res = res.replace("@State/Province", stateName); } //Show account country name if(countryName === null){ res = res.replace("@County/Region", ""); } else{ res = res.replace("@County/Region", countryName); } var confirmStrings = { title: "Information", //text: "Payer Address : Name - "+name+"\nStreet - "+address1_line1+", City - "+address1_city+",\nPostal Code - "+address1_postalcode+",\nState - "+stateName+",\nCountry - "+countryName, text: res, subtitle: subTittleMsgArray[0], confirmButtonLabel: confirmBtnLbl, cancelButtonLabel: cancelBtnLbl }; var confirmOptions = { height: 320, width: 450 }; Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(function (success){ if(success.confirmed){ console.log("Success....!!!"); //Save connection record //formContext.data.entity.save(); var entity = {}; //Set billing name entity.negt_billingname = name; //Set billing site street entity.negt_billingstreet = address1_line1; //Set billing site city entity.negt_billingcity = address1_city; //Set billing site zip/postal code, if account zip/postal code is not null entity.negt_billingpostalcode = address1_postalcode; //Set billing site country, if account country is not null if(countryId !== null && countryId !== undefined){ entity["[email protected]"] = "/negt_countries("+countryId+")"; entity["negt_billingcountry"] = countryName; } else{ entity["negt_billingcountryid"] = null; entity["negt_billingcountry"] = countryName; } //Set billing site state, if account state is not null if(stateId !== null && stateId !== undefined){ entity["[email protected]"] = "/negt_states("+stateId+")"; entity["negt_billingstateorprovince"] = stateName; } else{ entity["negt_billingstateid"] = null; entity["negt_billingstateorprovince"] = stateName; } var req = new XMLHttpRequest(); req.open("PATCH", globalContext.getClientUrl() + "/api/data/v9.1/opportunities("+relatedOpportunityId+")", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function() { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 204) { console.log("Opportunity Billing Address Update Successfull....!!!"); } else { Xrm.Navigation.openAlertDialog({ text: "Error in Opportunity Billing Address Update....!!" }); } } }; req.send(JSON.stringify(entity)); sessionStorage.setItem("IsPayerFlag","1"); formContext.data.entity.save(); } else{ //Save connection record sessionStorage.setItem("IsPayerFlag","1"); formContext.data.save(); } },function () { //formContext.getAttribute("negt_ispayer").setValue(false); sessionStorage.setItem("IsPayerFlag","1"); formContext.data.save(); }); } catch(error){ Xrm.Navigation.openAlertDialog({ text: "Error occurred in ChangeOpportuntiyBillingAddress" }); } } //nachiket function ConnectionRoleFilter(executionContext) { "use strict"; try { if (executionContext === null || executionContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var langCode = 1033; var userId = Xrm.Utility.getGlobalContext().userSettings.userId; userId = userId.replace("{", ""); userId = userId.replace("}", ""); var query = "usersettingscollection(" + userId + ")?$select=uilanguageid"; var userData = GetData(query); if (userData !== null && userData !== undefined) { langCode = userData.uilanguageid; } var categoryValue = GetConfigurationKeyValue(langCode); if (categoryValue == null) { categoryValue = 1; } var queryRoles = "connectionroles?$filter=category eq " + categoryValue + ""; var roleData = GetData(queryRoles); if (roleData !== null && roleData !== undefined) { if (roleData.value.length == 0) { categoryValue = 1; } } formContext.getControl("record2roleid").addPreSearch(function () { var fetchXml = "<filter type='and'><condition attribute='category' operator='eq' value='" + categoryValue + "' /></filter>"; formContext.getControl("record2roleid").addCustomFilter(fetchXml); }); } catch (e) {} } /// <summary> /// GetConfigurationKeyValue /// </summary> /// <param name="executionContext">executionContext</param> function GetConfigurationKeyValue(key) { "use strict"; var configValue = null; try { var query = "negt_configurationentities?$select=negt_value&$filter=negt_name eq '" + key + "'"; var configData = GetData(query); if (configData !== null && configData !== undefined) { if (configData.value !== undefined) { if (configData.value.length > 0) { if (configData.value[0]["negt_value"] !== null && configData.value[0]["negt_value"] !== undefined) { configValue = configData.value[0]["negt_value"]; } } } } } catch (e) {} return configValue; } function OpenConnectionFormFromSubgrid(executionContext, selectedControl) { "use strict"; try { if (executionContext === null || executionContext === undefined) return; var name = ""; if (executionContext.data.entity.getEntityName() === "account" || executionContext.data.entity.getEntityName() === "opportunity") { name = executionContext.getAttribute('name').getValue(); } else if (executionContext.data.entity.getEntityName() === "contact") { name = executionContext.getAttribute('firstname').getValue(); if (executionContext.getAttribute('middlename').getValue() !== null) { name = name + " " + executionContext.getAttribute('middlename').getValue(); } if (executionContext.getAttribute('lastname').getValue() !== null) { name = name + " " + executionContext.getAttribute('lastname').getValue(); } } var accountGrid = false; //var control = executionContext.ui.controls.get("AccountConnection"); //if (control !== null) { if (selectedControl.name === "AccountConnection") { accountGrid = true; } //} var contactGrid = false; //var control = executionContext.ui.controls.get("ContactConnection"); //if (control !== null) { if (selectedControl.name === "ContactConnection") { contactGrid = true; } //} var entityFormOptions = {}; entityFormOptions["entityName"] = "connection"; var formParameters = {}; if (accountGrid) { formParameters["source_0"] = "1"; } if (contactGrid) { formParameters["source_0"] = "2"; } formParameters["record1id"] = [{ "entityType": executionContext.data.entity.getEntityName(), "id": executionContext.data.entity.getId(), "name": name } ]; Xrm.Navigation.openForm(entityFormOptions, formParameters).then( function (success) { console.log(success); }, function (error) { console.log(error); }); } catch (e) {} } //nachiket function filterConnectToLookup(executionContext, entity) { try { if (executionContext === null || executionContext === undefined) return; var formContext = executionContext.getFormContext(); if (formContext === null || formContext === undefined) return; var countryId = ""; var ownerIdLookup = formContext.getAttribute("ownerid").getValue(); if (ownerIdLookup !== null) { var ownerId = ownerIdLookup[0].id; ownerId = ownerId.replace("}", "").replace("{", ""); var query = "systemusers?$select=_negt_countryid_value&$filter=systemuserid eq " + ownerId; var userData = GetData(query); if (userData !== null && userData !== undefined) { if (userData.value !== undefined) { if (userData.value.length > 0) { if (userData.value[0]["_negt_countryid_value"] !== null && userData.value[0]["_negt_countryid_value"] !== undefined) { countryId = userData.value[0]["_negt_countryid_value"]; } } } } } var negt_elogcompanyid = ""; if (countryId !== null && countryId !== undefined && countryId !== "") { var qry = "negt_countries?$select=negt_elogcompanyid&$filter=negt_countryid eq " + countryId; var Data = GetData(qry); if (Data !== null && Data !== undefined) { if (Data.value !== undefined) { if (Data.value.length > 0) { if (Data.value[0]["negt_elogcompanyid"] !== null && Data.value[0]["negt_elogcompanyid"] !== undefined) { negt_elogcompanyid = Data.value[0]["negt_elogcompanyid"]; } } } } } if (negt_elogcompanyid !== null && negt_elogcompanyid !== undefined && negt_elogcompanyid !== "") { //custom view for account if (entity === "account") { var viewId = "{A9AF0AB8-861D-4CFA-92A5-C6281FED7FAB}"; //var viewId = formContext.getControl("record2id").getDefaultView(); var viewDisplayName = "Owner Country Wise Account"; var entityName = "account"; var viewIsDefault = true; var Fetch = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + "<entity name='account'>" + "<attribute name='name' />" + "<attribute name='primarycontactid' />" + "<attribute name='telephone1' />" + "<attribute name='accountid' />" + "<attribute name='negt_stateid' />" + "<attribute name='negt_countryid' />" + "<attribute name='address1_city' />" + "<order attribute='name' descending='false' />" + "<filter type='and'>" + "<condition attribute='statecode' operator='eq' value='0' />" + "<condition attribute='negt_mkdenialcode' operator='ne' value='10001' />" + "</filter>" + "<link-entity name='contact' from='contactid' to='primarycontactid' visible='false' link-type='outer' alias='primaryemail'>" + "<attribute name='emailaddress1' />" + "</link-entity>" + "<link-entity name='systemuser' from='systemuserid' to='negt_ownerid' link-type='inner' alias='ae'>" + "<link-entity name='negt_country' from='negt_countryid' to='negt_countryid' link-type='inner' alias='af'>" + "<filter type='and'>" + "<condition attribute='negt_elogcompanyid' operator='eq' value='" + negt_elogcompanyid + "' />" + "</filter>" + "</link-entity>" + "</link-entity>" + "</entity>" + "</fetch>"; var layoutXml = "<grid name='resultset' object='1' jump='name' select='1' icon='1' preview='1'>" + "<row name='result' id='accountid'>" + "<cell name='name' width='200' />" + "<cell name='address1_city' width='200' />" + "<cell name='negt_stateid' width='200' />" + "<cell name='negt_countryid' width='200' />" + "<cell name='telephone1' width='200' />" + "<cell name='primarycontactid' width='200' />" + "<cell name='primaryemail.emailaddress1' width='200' />" + "</row>" + "</grid>"; formContext.getAttribute("record2id").controls.forEach( function (control, i) { control.addCustomView(viewId, entityName, viewDisplayName, Fetch, layoutXml, viewIsDefault); }); } else if (entity === "contact") { //custom view for contact var viewId1 = "{A2D479C5-53E3-4C69-ADDD-802327E67A0D}"; //var viewId = formContext.getControl("record2id").getDefaultView(); var viewDisplayName1 = "Owner Country Wise Contact"; var entityName1 = "contact"; var viewIsDefault1 = true; var Fetch1 = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + "<entity name='contact'>" + "<attribute name='fullname' />" + "<attribute name='telephone1' />" + "<attribute name='contactid' />" + "<attribute name='emailaddress1' />" + "<attribute name='address1_city' />" + "<attribute name='negt_countryid' />" + "<attribute name='parentcustomerid' />" + "<attribute name='address1_telephone1' />" + "<order attribute='fullname' descending='false' />" + "<filter type='and'>" + "<condition attribute='statecode' operator='eq' value='0' />" + "</filter>" + "<link-entity name='account' from='accountid' to='parentcustomerid' link-type='inner' alias='ao'>" + "<filter type='and'>" + "<condition attribute='negt_mkdenialcode' operator='ne' value='10001' />" + "<condition attribute='statecode' operator='eq' value='0' />" + "</filter>" + "</link-entity>" + "<link-entity name='systemuser' from='systemuserid' to='negt_ownerid' link-type='inner' alias='ae'>" + "<link-entity name='negt_country' from='negt_countryid' to='negt_countryid' link-type='inner' alias='af'>" + "<filter type='and'>" + "<condition attribute='negt_elogcompanyid' operator='eq' value='" + negt_elogcompanyid + "' />" + "</filter>" + "</link-entity>" + "</link-entity>" + "</entity>" + "</fetch>"; var layoutXml1 = "<grid name='resultset' object='1' jump='name' select='1' icon='1' preview='1'>" + "<row name='result' id='contactid'>" + "<cell name='fullname' width='200' />" + "<cell name='emailaddress1' width='200' />" + "<cell name='telephone1' width='200' />" + "<cell name='parentcustomerid' width='200' />" + "<cell name='address1_city' width='200' />" + "<cell name='negt_countryid' width='200' />" + "<cell name='address1_telephone1' width='200' />" + "</row>" + "</grid>"; formContext.getAttribute("record2id").controls.forEach( function (control, i) { control.addCustomView(viewId1, entityName1, viewDisplayName1, Fetch1, layoutXml1, viewIsDefault1); }); } } } catch (e) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M128"); } else { exMsg = GetMessageText("M128"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M128"); } Xrm.Navigation.openAlertDialog({ text: GetMessageText("M128") }); } } function GetConfigValue(column, value) { "use strict"; try { var field = "negt_name"; var results = null; var req = new XMLHttpRequest(); req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.1/negt_configurationentities?$select=" + column + "&$filter=" + field + " eq '" + value + "'", false); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("Prefer", "odata.include-annotations=\"*\""); req.onreadystatechange = function () { if (this.readyState === 4) { req.onreadystatechange = null; if (this.status === 200) { results = JSON.parse(this.response); } else { Xrm.Utility.alertDialog(this.statusText); } } }; req.send(); } catch (e) { Xrm.Navigation.openAlertDialog({ text: "Error Occured while executing the GetConfigValue ...." }); } return results; } function CheckAdminRole() { "use strict"; var flag = false; try { var RoleArray = []; var GetRole = GetConfigValue("negt_value", "AdminRole"); if (GetRole !== null && GetRole !== undefined) { if (GetRole.value !== undefined) { if (GetRole.value.length > 0) { if (GetRole.value[0]["negt_value"] !== null && GetRole.value[0]["negt_value"] !== undefined) { RoleArray = GetRole.value[0]["negt_value"].split(','); } } } } var userRole = Xrm.Utility.getGlobalContext().getUserRoles(); for (var i = 0; i < userRole.length; i++) { var query = "roles?$select=name&$filter=roleid eq '" + userRole[i] + "'"; var roleData = GetData(query); if (roleData !== null || roleData !== undefined) { if (roleData.value !== undefined) { if (roleData.value.length > 0) { for (var j = 0; j < RoleArray.length; j++) { if (roleData.value[0]["name"].toLowerCase() === RoleArray[j].toLowerCase()) { flag = true; } } } } } } } catch (error) { var exMsg = error; window.parent.Xrm.Navigation.openAlertDialog({ text: exMsg }); } return flag; } /// <summary> /// hideNewButton /// </summary> /// <param name="executionContext">executionContext</param> function hideNewButton(primaryControl) { try { var formContext = primaryControl; if (formContext !== null) { var isAdmin = CheckAdminRole(); if (isAdmin) { return true; } } } catch (e) { var exMsg = ""; if (typeof(Storage) !== "undefined") { exMsg = sessionStorage.getItem("M129"); } else { exMsg = GetMessageText("M129"); } if (exMsg === "" || exMsg === null) { exMsg = GetMessageText("M129"); } Xrm.Navigation.openAlertDialog({ text: GetMessageText("M129") }); } }