When a user changes the Parent Account lookup they would like the contact to have the same address information as the Account. Should they move the contact to another account their address changes as soon as the lookup has changed.
I have put a function 'retrieve' on the onchange event of parentcustomerid on the Contact Form.
Make sure you add Json2.js and JQuery -1.5.mins.js to the Entity.
The files can be found in the sdk at this location:
sdk\samplecode\js\restendpoint\restjquerycontacteditor\restjquerycontacteditor\scripts
Change the code below accordingly to any form you wish by following the instructions in highlighted green.
Enjoy
*********************************************************************
function retrieve() {
//1.Get Guid from lookup on the form, change lookup name accordingly
var lookupObject = Xrm.Page.getAttribute("parentcustomerid");
if (lookupObject != null)
{
var lookUpObjectValue = lookupObject.getValue();
if ((lookUpObjectValue != null))
{
var lookupid = lookUpObjectValue[0].id;
}
}
var id = lookupid;
//2.Change the second parameter to the Entity you want i.e. "ContactSet"
retrieveRecord(id, "AccountSet", retrieveCompleted, null);
}
function retrieveCompleted(data, textStatus, XmlHttpRequest) {
//Example of how to assign the data to CRM fields
//3. Assign the data to your CRM fields
var account = data;
Xrm.Page.getAttribute("address1_line1").setValue(account.Address1_Line1);
Xrm.Page.getAttribute("address1_line2").setValue(account.Address1_Line2);
Xrm.Page.getAttribute("address1_line3").setValue(account.Address1_Line3);
Xrm.Page.getAttribute("address1_city").setValue(account.Name);
Xrm.Page.getAttribute("address1_postalcode").setValue(account.Address1_PostalCode);
Xrm.Page.getAttribute("address1_stateorprovince").setValue(account.Address1_StateOrProvince);
Xrm.Page.getAttribute("address1_country").setValue(account.Address1_Country);
}
function retrieveRecord(id, odataSetName, successCallback, errorCallback) {
//You don't need to edit anything in this function at all! If this function
//works it will return the data to function retrieveCompleted(above)
var context = Xrm.Page.context;
var serverUrl = context.getServerUrl();
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
if (!id) {
alert("record id is required.");
return;
}
if (!odataSetName) {
alert("odataSetName is required.");
return;
}
//Asynchronous AJAX function to Retrieve a CRM record using OData
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "(guid'" + id + "')",
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
if (successCallback) {
successCallback(data.d, textStatus, XmlHttpRequest);
// Use this method for a selection that may return multiple entities
//RetrieveMultipleEntities(data.d.results);
//Example of what you might want in the RetrieveMultipleEntities function when you create it
//var account = data.d.results[0];
//var aname = eval('account.AccountNumber');
//alert(aname);
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
if (errorCallback)
errorCallback(XmlHttpRequest, textStatus, errorThrown);
else
errorHandler(XmlHttpRequest, textStatus, errorThrown);
}
});
}
Make sure you add Json2.js and JQuery -1.5.mins.js to the Entity.
The files can be found in the sdk at this location:
sdk\samplecode\js\restendpoint\restjquerycontacteditor\restjquerycontacteditor\scripts
Change the code below accordingly to any form you wish by following the instructions in highlighted green.
Enjoy
*********************************************************************
function retrieve() {
//1.Get Guid from lookup on the form, change lookup name accordingly
var lookupObject = Xrm.Page.getAttribute("parentcustomerid");
if (lookupObject != null)
{
var lookUpObjectValue = lookupObject.getValue();
if ((lookUpObjectValue != null))
{
var lookupid = lookUpObjectValue[0].id;
}
}
var id = lookupid;
//2.Change the second parameter to the Entity you want i.e. "ContactSet"
retrieveRecord(id, "AccountSet", retrieveCompleted, null);
}
function retrieveCompleted(data, textStatus, XmlHttpRequest) {
//Example of how to assign the data to CRM fields
//3. Assign the data to your CRM fields
var account = data;
Xrm.Page.getAttribute("address1_line1").setValue(account.Address1_Line1);
Xrm.Page.getAttribute("address1_line2").setValue(account.Address1_Line2);
Xrm.Page.getAttribute("address1_line3").setValue(account.Address1_Line3);
Xrm.Page.getAttribute("address1_city").setValue(account.Name);
Xrm.Page.getAttribute("address1_postalcode").setValue(account.Address1_PostalCode);
Xrm.Page.getAttribute("address1_stateorprovince").setValue(account.Address1_StateOrProvince);
Xrm.Page.getAttribute("address1_country").setValue(account.Address1_Country);
}
function retrieveRecord(id, odataSetName, successCallback, errorCallback) {
//You don't need to edit anything in this function at all! If this function
//works it will return the data to function retrieveCompleted(above)
var context = Xrm.Page.context;
var serverUrl = context.getServerUrl();
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
if (!id) {
alert("record id is required.");
return;
}
if (!odataSetName) {
alert("odataSetName is required.");
return;
}
//Asynchronous AJAX function to Retrieve a CRM record using OData
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "(guid'" + id + "')",
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
if (successCallback) {
successCallback(data.d, textStatus, XmlHttpRequest);
// Use this method for a selection that may return multiple entities
//RetrieveMultipleEntities(data.d.results);
//Example of what you might want in the RetrieveMultipleEntities function when you create it
//var account = data.d.results[0];
//var aname = eval('account.AccountNumber');
//alert(aname);
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
if (errorCallback)
errorCallback(XmlHttpRequest, textStatus, errorThrown);
else
errorHandler(XmlHttpRequest, textStatus, errorThrown);
}
});
}
Thank You, for providing the valuable information.
ReplyDeletetop crm companies