Java Script Task-8: On selection of asset in case entity, read the project in asset, project have project start date and end date from project entity, set the dates on case entity form as project start and end dates?
User Story: Whenever you select the asset in case entity then read the project from asset here project having start date and end date whatever dates you’re providing in project entity that dates should be updated in case entity.
In Field service
1) Create One project entity with two fields Start date and End date (Date data type)
2) In asset entity (Customer asset) create a Lookup of project entity
3) In case entity create a lookup of asset entity and in case entity create two Date data type fields such as Start Date and End Date.
4) By using CRM Rest Builder retrieve the Project entity from Asset entity. (Here we will get Project Id)
5) By using CRM Rest Builder retrieve the Start Date and End Date from Project Entity.
6) By using nested if condition write the Java script code.
7) Add java script code into Web Resource. And add this web Resource onto Case entity Form Properties.
8) Create on-change event to Project field in case entity.
By using CRM Rest Builder retrieve the Project entity from Asset entity.
Here we will get the Project entity GUID
Below code is generated by CRM Rest Builder
Xrm.WebApi.online.retrieveRecord("msdyn_customerasset", "00000000-0000-0000-0000-000000000000", "?$select=_new_project_value").then(
function success(result) {
var _new_project_value = result["_new_project_value"];
var _new_project_value_formatted = result["_new_project_value@OData.Community.Display.V1.FormattedValue"];
var _new_project_value_lookuplogicalname = result["_new_project_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);
By using CRM Rest Builder retrieve the Start Date and End Date from Project Entity.
Below Code is generated by CRM Rest Builder:
Xrm.WebApi.online.retrieveRecord("effi_project", "00000000-0000-0000-0000-000000000000", "?$select=effi_projectenddate,effi_projectstartdate").then(
function success(result) {
var effi_projectenddate = result["effi_projectenddate"];
var effi_projectstartdate = result["effi_projectstartdate"];
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);
Java Script Code:
By using Above 2 codes and Nested-If condition written a Java script code
function setDate(executionContext)
{
var formContext = executionContext.getFormContext();
var asset = formContext.getAttribute("new_asset").getValue();
if (asset != null)
{
var assetId = asset[0].id.replace("{", "").replace("}", "");
Xrm.WebApi.online.retrieveRecord("msdyn_customerasset", assetId, "?$select=_new_project_value").then(
function success(result)
{
var projectId = result["_new_project_value"];
// var _new_project_value_formatted = result["_new_project_value@OData.Community.Display.V1.FormattedValue"];
// var _new_project_value_lookuplogicalname = result["_new_project_value@Microsoft.Dynamics.CRM.lookuplogicalname"];
if (projectId != null)
{
Xrm.WebApi.online.retrieveRecord("effi_project", projectId, "?$select=effi_projectenddate,effi_projectstartdate").then(
function success(result) {
var effi_projectenddate = result["effi_projectenddate"];
var effi_projectstartdate = result["effi_projectstartdate"];
var start = new Date(effi_projectstartdate);
var end = new Date(effi_projectenddate);
formContext.getAttribute("new_projectstartdate").setValue(start);
formContext.getAttribute("new_projectenddate").setValue(end);
},
function (error) {
Xrm.Utility.alertDialog(error.message);
}
);
}
},
function (error) {
Xrm.Utility.alertDialog(error.message);
}
);
}
}
After writing the java script code add this code into web resource
Click on Text editor and add this code.
Click on case entity and go to form properties and add this web resource here and
Add Asset Filed on-change event.
Click on Ok and Publish
Output: Whenever you ‘re selected Asset in case entity then Project start Date and end date is updated automatically
Comments
Post a Comment