The pricelist choosing dialog has a filter built into it to present only the pricelists that use the selected currency. Since the workflow configuration does not offer currency selection, so no pricelists pass through the filter.
Instructions:
1. First retrieve the default price list id, open default price list record and copy the URL address.
(If you are using CRM application mode then press F11 to make address bar visible)
In my case URL is: http://mycrm:5555/myorg/main.aspx?etc=1022&extraqs=%3f_gridType%3d1022%26etc%3d1022%26id%3d%257b7EC1E3A2-6B8C-E011-A88AE5EF0498D042%257d%26rskey%3d490666710&pagetype=entityrecord
2. Decode CRM URL address, open web address http://meyerweb.com/eric/tools/dencoder
3. Paste the URL address into the URL Decoder/Encoder text area
4. Click two times on Decode button to decode Url address completely. Decoded URL: http://mycrm:5555/myorg/main.aspx?etc=1022&extraqs=?_gridType=1022&etc=1022&id={7EC1E3A2-6B8C-E011-A88AE5EF0498D042}&rskey=490666710&pagetype=entityrecord
5. Copy Id= value in my case it is {7EC1E3A2-6B8C-E011-A88A-E5EF0498D042} and use in default price list JScript.
6. Use the following Jscript code into Opportunity entity form Onload event and make sure to change the Price List Name and Price List Id in function frmOnLoad.
JScript Code:
// Call this function on Opportunity Form onLoad |
function frmOnLoad() { |
// If form Type = Create |
if (Xrm.Page.ui.getFormType() == 1) { |
// 1st Parameter is Price List Name, 2nd Parameter is Price List GUID |
SetDefaultPriceList("Test", "{36A2E249-278D-E011-A88A-E5EF0498D042}"); |
} |
} |
function SetDefaultPriceList(prmPriceListName, prmPriceListId) { |
//Create an array to set as the DataValue for the lookup control. |
var lookupData = new Array(); |
//Create an Object add to the array. |
var lookupItem = new Object(); |
//Set the id, typename, and name properties to the object. |
lookupItem.id = prmPriceListId; |
lookupItem.typename = "pricelevel"; |
lookupItem.name = prmPriceListName; |
// Add the object to the array. |
lookupData[0] = lookupItem; |
// Set the value of the lookup field to the value of the array. |
Xrm.Page.getAttribute("pricelevelid").setValue(lookupData); |
} |