The solution below implements Using the FetchXML CRM 2011 Service within a JavaScript Web Resource.
99% of our customisations require the pricelist to be pre-filled. Here is a very quick snippet to populate the price list based on a supplied name and currency.
Firstly, the onload event:
- try {
- if (Xrm.Page.getAttribute("pricelevelid").getValue() == null) {
- var priceLookup = GetPriceLevelId("Personal", Xrm.Page.getAttribute("transactioncurrencyid").getValue()[0].id);
- Xrm.Page.getAttribute("pricelevelid").setValue(priceLookup);
- }
- }
- catch (err)
- { }
Library function:
- function GetPriceLevelId(Name, CurrencyId) {
- var fetchXml = "<fetch mapping='logical'> " +
- "<entity name='pricelevel'> " +
- " <attribute name='name'/> " +
- " <filter type='and'> " +
- " <condition attribute='name' operator='eq' value='" + Name + "'/> " +
- " <condition attribute='transactioncurrencyid' operator='eq' value='" + CurrencyId + "'/> " +
- " </filter> " +
- "</entity> " +
- "</fetch> "
- fetchService = new FetchUtil();
- var pricelevelid = fetchService.Fetch(fetchXml)[0].attributes["pricelevelid"].value;
- var lookupData = new Array();
- var lookupItem = new Object();
- lookupItem.id = pricelevelid;
- lookupItem.entityType = 'pricelevel';
- lookupItem.name = Name;
- lookupData[0] = lookupItem;
- return lookupData;
- }
Enjoy , and Happy Christmas to all.