/* Get opportunity details with the associated contacts (connection1, connection2) */
var req = new XMLHttpRequest();
var myOpportunityID = '00000000-0000-0000-0000-000000000000';
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v9.0/opportunities(" + myOpportunityID + ")" +
"?$select=description,stepname,estimatedvalue,opportunityid,statuscode,createdon,modifiedon,name,estimatedclosedate,_ownerid_value" +
"&$expand=opportunity_connections1($select=name,record1objecttypecode,record2objecttypecode,_record2roleid_value,_record2id_value)" +
",opportunity_connections2($select=name,record1objecttypecode,record2objecttypecode,_record2roleid_value,_record2id_value)" +
",parentaccountid($select=accountid)", true);
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;
console.clear();
if (this.status === 200) {
var result = JSON.parse(this.response);
var subReq = new XMLHttpRequest();
subReq.open("GET", Xrm.Page.context.getClientUrl() + '/api/data/v9.0/opportunitysalesprocesses' +
'?$select=_activestageid_value,_opportunityid_value,_processid_value' +
'&$filter=_opportunityid_value eq ' + myOpportunityID, true);
subReq.setRequestHeader("OData-MaxVersion", "4.0");
subReq.setRequestHeader("OData-Version", "4.0");
subReq.setRequestHeader("Accept", "application/json");
subReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
subReq.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
subReq.onreadystatechange = function() {
if (this.readyState === 4) {
subReq.onreadystatechange = null;
console.clear();
if (this.status === 200) {
var subResult = JSON.parse(this.response)['value'][0];
console.log('Opportunity Details: ', {
'AccountId': (result.parentaccountid) ? result.parentaccountid.accountid : '',
'Description': (result.description) ? result.description : '',
'StageId': subResult['_activestageid_value'],
'StageName': subResult['_activestageid_value@OData.Community.Display.V1.FormattedValue'],
'Amount': result.estimatedvalue,
'Id': result.opportunityid,
'IsDeleted': false,
'IsWon': (result.statuscode === 3) ? true : false,
'Type': '',
'IsClosed': (result.statuscode === 1) ? false : true,
'CreatedDate': result.createdon,
'SystemModstamp': result.modifiedon,
'Name': result.name,
'CloseDate': result.estimatedclosedate,
'LastModifiedDate': result.modifiedon,
'OwnerId': result._ownerid_value,
'RecordTypeId': subResult['_processid_value']
});
console.log('Opportunity Contacts: ', result['opportunity_connections1']);
} else {
console.log(JSON.parse(this.response)['error']);
}
}
};
subReq.send();
} else {
console.log('Error: ', JSON.parse(this.response).error.message);
}
}
};
req.send();