var managerguid='nomanager';
var rolesDiscountvalue=0,quotediscountvalue=0;
function QuoteOnLoad()
{
if(crmForm.FormType==2)//form updated
{
if(!CurrentandQuoteUsersareEqual())
{
//alert('update form');
Xrm.Page.ui.controls.get("discountpercentage").setDisabled(true);
Xrm.Page.ui.controls.get("discountamount").setDisabled(true);
Xrm.Page.ui.controls.get("freightamount").setDisabled(true);
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue(); if(quotediscountvalue == null || quotediscountvalue == 0)
{
disablecustomdiscount(true);//disable fields
}
}
}
function Enablecustomdiscount(boolvalue)
{
Xrm.Page.ui.controls.get("new_approvaldiscount").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_approvaldiscountamount").setDisabled(boolvalue);
}
function disablecustomdiscount(boolvalue)
{
Xrm.Page.ui.controls.get("new_approvaldiscount").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_approvaldiscountamount").setDisabled(boolvalue);
}
function CurrentandQuoteUsersareEqual()
{
var LoggedInUserGUID = Xrm.Page.context.getUserId();
var QuoteOwnerGUID = Xrm.Page.data.entity.attributes.get("ownerid").getValue()[0].id;
if(GuidsAreEqual(LoggedInUserGUID,QuoteOwnerGUID))// if both are equal
{
return true;
}
else
{
return false;
}
}
function QuoteDiscountOnChange()
{
//alert('QuoteDiscountOnChange');
//debugger;
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue();
rolesDiscountvalue=GetCurrentUserRoleDiscountValue();
if(rolesDiscountvalue>=quotediscountvalue)
{
//alert('1');
//Valid discount value (Enable Approve and Reject Discount Button)
if(CurrentandQuoteUsersareEqual())
{
disablecustomdiscount(true);//disable fields
}
else if(!CurrentandQuoteUsersareEqual() && (Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Pending' || Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Rejected'))
{
//alert('11');
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
Enablecustomdiscount(false);
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setDisabled(true);
}
return false;//disable
}
else if(rolesDiscountvalue<quotediscountvalue && Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()==null)
{
//alert('2');
//InValid discount value (Enable Approve and Reject Discount Button)
alert('Your quote discounted % is more then that specified discount for you! If you required this % please save the quote and click seek for discount.');
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setDisabled(true);
return true;//enable
}
else if(rolesDiscountvalue<quotediscountvalue && Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Pending')
{
//alert('3');
//Invalid discount value (Disable Approve and Reject Discount Button)
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
disablecustomdiscount(true);//disable fields
return false;//disable
}
else if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Approved')
{
//alert('4');
//Invalid discount value (Disable Approve and Reject Discount Button)
return false;//disable
}
else
{
//alert('5');
return true;//enable
}
}
function CustomRuleForApproveReject()
{
//debugger;
//alert('CustomRuleForApproveReject');
if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Pending')
{
//alert('-1');
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
var LoggedInUserGUID = Xrm.Page.context.getUserId();
var QuoteOwnerGUID = Xrm.Page.data.entity.attributes.get("ownerid").getValue()[0].id;
if(GuidsAreEqual(LoggedInUserGUID,QuoteOwnerGUID))// if both are equal
{
//alert('-11');
return false;//disable
}
else
{
//alert('-12');
return true;//enable
}
}
else if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Approved')
{
//alert('-2');
if(!CurrentandQuoteUsersareEqual())
{
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
else
{
/*Show Activate quote button*/
ShowRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
Xrm.Page.data.entity.attributes.get("discountpercentage").setValue(Xrm.Page.data.entity.attributes.get("new_approvaldiscount").getValue());
Xrm.Page.getAttribute("discountpercentage").setSubmitMode("always");
return false;//disable
}
else
{
//alert('-3');
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue();
rolesDiscountvalue=GetCurrentUserRoleDiscountValue();
if(CurrentandQuoteUsersareEqual() && quotediscountvalue>rolesDiscountvalue)
{
//alert('-31');
Enablecustomdiscount(true);
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setDisabled(false);
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
return false;//disable
}
}
function HideRibbonButton(nameOfButton)
{
if (window.top.document.getElementById(nameOfButton) != null){
window.top.document.getElementById(nameOfButton).style.display='none';
}
}
function ShowRibbonButton(nameOfButton)
{
if (window.top.document.getElementById(nameOfButton) != null){
window.top.document.getElementById(nameOfButton).style.display='block';
}
}
function seekapprovalfordiscount()
{
var _return = window.confirm('Are you sure you want to seek approval?');
if(_return)
{
if(Xrm.Page.data.entity.attributes.get("new_reasonfordiscountrequest").getValue()== null)
{
alert('Plese Specify reason for quote discount request.');
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setFocus();
//event.returnValue = false;
}
else
{
if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()!='Pending')
{
Xrm.Page.data.entity.attributes.get("new_approvalstatus").setValue("Pending");
Xrm.Page.getAttribute("new_approvalstatus").setSubmitMode("always");
//Create Discount Approval Task
CreateQuoteApprovalTask();
Xrm.Page.getAttribute("new_reasonfordiscountrequest").setSubmitMode("always");
Xrm.Page.data.entity.save();
alert('The quote discount request Escalated for approval');
}
}
}
}
function approvediscountrequest()
{
var userName;
var _return = window.confirm('Are you sure you want to approved the discount?');
if(_return)
{
if(Xrm.Page.data.entity.attributes.get("new_reasonfordiscountap").getValue() == null)
{
alert('Plese Specify reason for discount Approval.');
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setFocus();
//event.returnValue = false;
}
else
{
if(Xrm.Page.data.entity.attributes.get("new_approvaldiscount").getValue()!=null)
{
Xrm.Page.data.entity.attributes.get("new_approvalstatus").setValue("Approved");
Xrm.Page.getAttribute("new_approvalstatus").setSubmitMode("always");
var UserGUID = Xrm.Page.context.getUserId();
var resultXml=WSRetrieveMultipleByCondition("systemuser","fullname","systemuserid",UserGUID);
var buNodes = resultXml.selectNodes("//BusinessEntity/q1:fullname");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
//alert('user Name - ' + buNodes[0].text);
userName= buNodes[0].text;
}
SetLookupValue("new_quoteapprovedbyid",UserGUID,userName,"systemuser");
closeOpenTask();
Xrm.Page.data.entity.save();
alert('The quote discount request approved');
}
else
{
alert('Please specify Approval Discount Percent value or amount.');
}
}
}
}
function rejectdiscountrequest()
{
var userName='';
var _return = window.confirm('Are you sure you want to reject the discount?');
if(_return)
{
if(Xrm.Page.data.entity.attributes.get("new_reasonfordiscountap").getValue() == null)
{
alert('Plese Specify reason for discount rejection.');
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setFocus();
//event.returnValue = false;
}
else
{
Xrm.Page.data.entity.attributes.get("new_approvalstatus").setValue("Rejected");
Xrm.Page.getAttribute("new_approvalstatus").setSubmitMode("always");
var UserGUID = Xrm.Page.context.getUserId();
var resultXml=WSRetrieveMultipleByCondition("systemuser","fullname","systemuserid",UserGUID);
var buNodes = resultXml.selectNodes("//BusinessEntity/q1:fullname");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
//alert('user Name - ' + buNodes[0].text);
userName= buNodes[0].text;
}
SetLookupValue("new_quoterejectedbyid",UserGUID,userName,"systemuser");
closeOpenTask();
Xrm.Page.data.entity.save();
alert('The quote discount request rejected');
}
}
}
function GetCurrentUserRoleDiscountValue()
{
//Get Current User Roles RoleID
var currentUserRoles = Xrm.Page.context.getUserRoles();
var Discount=0;
for (var i = 0; i < currentUserRoles.length; i++) {
var userRole = currentUserRoles[i];
var resultXml=WSRetrieveMultipleByCondition("new_rolediscount","new_maximumdiscount","new_securityroleid",userRole);
var buNodes = resultXml.selectNodes("//BusinessEntity/q1:new_maximumdiscount");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
//alert('Discounted percentage - ' + buNodes[0].text);
Discount= buNodes[0].text;
break;
}
}
return Discount;
}
function ExecuteQuery(RoleId)
{
var serverUrl = "http://" + window.location.host + "/" + Xrm.Page.context.getOrgUniqueName();
// Creating the Odata Endpoint
var oDataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";
var retrieveReq = new XMLHttpRequest();
var Odata = oDataPath + "/new_rolediscountSet?$select=new_maximumdiscount&$filter=new_securityroleid eq guid'" + RoleId + "'";
retrieveReq.open("GET", Odata, false,"raman.goswami","globaL7&");
retrieveReq.setRequestHeader("Accept", "application/json");
retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
retrieveReq.send();
//retrieveReq.onreadystatechange = function () { retrieveReqCallBack(this); };
if (retrieveReq.readyState == 4) {
var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d;
var EmailAddress = retrieved.results[0].new_maximumdiscount;
//alert(EmailAddress);
}
// var oDataEndpointUrl = "https://net2011.4crm.in:444/net2011/XRMServices/2011/OrganizationData.svc/";
}
function retrieveReqCallBack(retrieveReq) {
if (retrieveReq.readyState == 4) {
var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d;
var EmailAddress = retrieved.results[0].new_maximumdiscount;
//alert(EmailAddress);
}
}
function WSRetrieveMultipleByCondition(crmEntity, resultAttribute, queryAttribute, queryValue) {
var resultXml;
var oXMLSoapMsg = ""+
"" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
""+
""+
"" xsi:type='q1:QueryExpression'>"+
""+crmEntity+" "+
""+
""+
""+resultAttribute+" "+
" "+
" "+
""+
""+
""+
""+
""+
""+queryAttribute+" "+
""+
""+
""+queryValue+" "+
" "+
" "+
" "+
" "+
" "+
" "+
" "+
" ";
var oXMLHTTPReq = new ActiveXObject("Msxml2.XMLHTTP");
oXMLHTTPReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
oXMLHTTPReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
oXMLHTTPReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
oXMLHTTPReq.setRequestHeader("Content-Length", oXMLSoapMsg.length);
oXMLHTTPReq.send(oXMLSoapMsg);
resultXml = oXMLHTTPReq.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0){
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
else{
return resultXml;
}
}
function SetLookupValue(fieldName,id,name,entityType)
{
if(fieldName != null)
{
var lookupValue = new Array();
lookupValue[0] = new Object();
lookupValue[0].id = id;
lookupValue[0].name = name;
lookupValue[0].entityType = entityType;
Xrm.Page.getAttribute(fieldName).setValue(lookupValue);
Xrm.Page.getAttribute(fieldName).setSubmitMode("always"); // Need Changes
}
}
function GuidsAreEqual(guid1, guid2) {
var isEqual = false;
if (guid1 == null || guid2 == null) {
isEqual = false;
} else {
isEqual = guid1.replace(/[{}]/g, "").toLowerCase() == guid2.replace(/[{}]/g, "").toLowerCase();
}
return isEqual;
}
function CreateQuoteApprovalTask()
{
//debugger;
var LoggedInUserGUID = Xrm.Page.context.getUserId();
var QuoteOwnerGUID = Xrm.Page.data.entity.attributes.get("ownerid").getValue()[0].id;
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue();
GetTaskManagerID(LoggedInUserGUID,quotediscountvalue);
if(managerguid!=null)
{
CreateSeekTask(managerguid,LoggedInUserGUID);
}
}
function GetTaskManagerID(LoggedInUserGUID,qtdiscountvalue)
{
var managerid=GetManagerId(LoggedInUserGUID);
if(managerid!='')
{
//Get User Roles RoleID
var resultXml = GetUserRoles(managerid);
var NameNodes = resultXml.selectNodes("//BusinessEntity/q1:roleid");
if(NameNodes.length > 0)
{
for( i = 0; i < NameNodes.length; i++)
{
var roleid = NameNodes[i].text;
var resultXmlRoleDiscount=WSRetrieveMultipleByCondition("new_rolediscount","new_maximumdiscount","new_securityroleid",roleid);
var buNodes = resultXmlRoleDiscount.selectNodes("//BusinessEntity/q1:new_maximumdiscount");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
var Discount= buNodes[0].text;
if(qtdiscountvalue<=Discount)
{
managerguid = managerid;
break;
}
else
{
GetTaskManagerID(managerid,qtdiscountvalue);
}
}
}
}
}
else
{
managerguid ='nomanager';
}
}
function GetManagerId(LoggedInUserGUID)
{
var managerid='';
var resultXmlsystemuser=WSRetrieveMultipleByCondition("systemuser","parentsystemuserid","systemuserid",LoggedInUserGUID);
var buNodessystemuser = resultXmlsystemuser.selectNodes("//BusinessEntity/q1:parentsystemuserid");
var NodeExistsystemuser = buNodessystemuser.length;
if (NodeExistsystemuser >=1)
{
//alert('Manager Id - ' + buNodessystemuser[0].text);
managerid= buNodessystemuser[0].text;
}
return managerid;
}
function GetUserRoles(EqualUserId)
{
var xml = ""+
"" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
" <soap:Body>" +
" <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
" <q1:EntityName>role
" + var rolesDiscountvalue=0,quotediscountvalue=0;
function QuoteOnLoad()
{
if(crmForm.FormType==2)//form updated
{
if(!CurrentandQuoteUsersareEqual())
{
//alert('update form');
Xrm.Page.ui.controls.get("discountpercentage").setDisabled(true);
Xrm.Page.ui.controls.get("discountamount").setDisabled(true);
Xrm.Page.ui.controls.get("freightamount").setDisabled(true);
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue(); if(quotediscountvalue == null || quotediscountvalue == 0)
{
disablecustomdiscount(true);//disable fields
}
}
}
function Enablecustomdiscount(boolvalue)
{
Xrm.Page.ui.controls.get("new_approvaldiscount").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_approvaldiscountamount").setDisabled(boolvalue);
}
function disablecustomdiscount(boolvalue)
{
Xrm.Page.ui.controls.get("new_approvaldiscount").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setDisabled(boolvalue);
Xrm.Page.ui.controls.get("new_approvaldiscountamount").setDisabled(boolvalue);
}
function CurrentandQuoteUsersareEqual()
{
var LoggedInUserGUID = Xrm.Page.context.getUserId();
var QuoteOwnerGUID = Xrm.Page.data.entity.attributes.get("ownerid").getValue()[0].id;
if(GuidsAreEqual(LoggedInUserGUID,QuoteOwnerGUID))// if both are equal
{
return true;
}
else
{
return false;
}
}
function QuoteDiscountOnChange()
{
//alert('QuoteDiscountOnChange');
//debugger;
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue();
rolesDiscountvalue=GetCurrentUserRoleDiscountValue();
if(rolesDiscountvalue>=quotediscountvalue)
{
//alert('1');
//Valid discount value (Enable Approve and Reject Discount Button)
if(CurrentandQuoteUsersareEqual())
{
disablecustomdiscount(true);//disable fields
}
else if(!CurrentandQuoteUsersareEqual() && (Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Pending' || Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Rejected'))
{
//alert('11');
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
Enablecustomdiscount(false);
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setDisabled(true);
}
return false;//disable
}
else if(rolesDiscountvalue<quotediscountvalue && Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()==null)
{
//alert('2');
//InValid discount value (Enable Approve and Reject Discount Button)
alert('Your quote discounted % is more then that specified discount for you! If you required this % please save the quote and click seek for discount.');
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setDisabled(true);
return true;//enable
}
else if(rolesDiscountvalue<quotediscountvalue && Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Pending')
{
//alert('3');
//Invalid discount value (Disable Approve and Reject Discount Button)
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
disablecustomdiscount(true);//disable fields
return false;//disable
}
else if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Approved')
{
//alert('4');
//Invalid discount value (Disable Approve and Reject Discount Button)
return false;//disable
}
else
{
//alert('5');
return true;//enable
}
}
function CustomRuleForApproveReject()
{
//debugger;
//alert('CustomRuleForApproveReject');
if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Pending')
{
//alert('-1');
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
var LoggedInUserGUID = Xrm.Page.context.getUserId();
var QuoteOwnerGUID = Xrm.Page.data.entity.attributes.get("ownerid").getValue()[0].id;
if(GuidsAreEqual(LoggedInUserGUID,QuoteOwnerGUID))// if both are equal
{
//alert('-11');
return false;//disable
}
else
{
//alert('-12');
return true;//enable
}
}
else if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()=='Approved')
{
//alert('-2');
if(!CurrentandQuoteUsersareEqual())
{
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
else
{
/*Show Activate quote button*/
ShowRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
Xrm.Page.data.entity.attributes.get("discountpercentage").setValue(Xrm.Page.data.entity.attributes.get("new_approvaldiscount").getValue());
Xrm.Page.getAttribute("discountpercentage").setSubmitMode("always");
return false;//disable
}
else
{
//alert('-3');
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue();
rolesDiscountvalue=GetCurrentUserRoleDiscountValue();
if(CurrentandQuoteUsersareEqual() && quotediscountvalue>rolesDiscountvalue)
{
//alert('-31');
Enablecustomdiscount(true);
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setDisabled(false);
/*Hide Activate quote button*/
HideRibbonButton("quote|NoRelationship|Form|Mscrm.Form.quote.ActivateQuote-Large");
}
return false;//disable
}
}
function HideRibbonButton(nameOfButton)
{
if (window.top.document.getElementById(nameOfButton) != null){
window.top.document.getElementById(nameOfButton).style.display='none';
}
}
function ShowRibbonButton(nameOfButton)
{
if (window.top.document.getElementById(nameOfButton) != null){
window.top.document.getElementById(nameOfButton).style.display='block';
}
}
function seekapprovalfordiscount()
{
var _return = window.confirm('Are you sure you want to seek approval?');
if(_return)
{
if(Xrm.Page.data.entity.attributes.get("new_reasonfordiscountrequest").getValue()== null)
{
alert('Plese Specify reason for quote discount request.');
Xrm.Page.ui.controls.get("new_reasonfordiscountrequest").setFocus();
//event.returnValue = false;
}
else
{
if(Xrm.Page.data.entity.attributes.get("new_approvalstatus").getValue()!='Pending')
{
Xrm.Page.data.entity.attributes.get("new_approvalstatus").setValue("Pending");
Xrm.Page.getAttribute("new_approvalstatus").setSubmitMode("always");
//Create Discount Approval Task
CreateQuoteApprovalTask();
Xrm.Page.getAttribute("new_reasonfordiscountrequest").setSubmitMode("always");
Xrm.Page.data.entity.save();
alert('The quote discount request Escalated for approval');
}
}
}
}
function approvediscountrequest()
{
var userName;
var _return = window.confirm('Are you sure you want to approved the discount?');
if(_return)
{
if(Xrm.Page.data.entity.attributes.get("new_reasonfordiscountap").getValue() == null)
{
alert('Plese Specify reason for discount Approval.');
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setFocus();
//event.returnValue = false;
}
else
{
if(Xrm.Page.data.entity.attributes.get("new_approvaldiscount").getValue()!=null)
{
Xrm.Page.data.entity.attributes.get("new_approvalstatus").setValue("Approved");
Xrm.Page.getAttribute("new_approvalstatus").setSubmitMode("always");
var UserGUID = Xrm.Page.context.getUserId();
var resultXml=WSRetrieveMultipleByCondition("systemuser","fullname","systemuserid",UserGUID);
var buNodes = resultXml.selectNodes("//BusinessEntity/q1:fullname");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
//alert('user Name - ' + buNodes[0].text);
userName= buNodes[0].text;
}
SetLookupValue("new_quoteapprovedbyid",UserGUID,userName,"systemuser");
closeOpenTask();
Xrm.Page.data.entity.save();
alert('The quote discount request approved');
}
else
{
alert('Please specify Approval Discount Percent value or amount.');
}
}
}
}
function rejectdiscountrequest()
{
var userName='';
var _return = window.confirm('Are you sure you want to reject the discount?');
if(_return)
{
if(Xrm.Page.data.entity.attributes.get("new_reasonfordiscountap").getValue() == null)
{
alert('Plese Specify reason for discount rejection.');
Xrm.Page.ui.controls.get("new_reasonfordiscountap").setFocus();
//event.returnValue = false;
}
else
{
Xrm.Page.data.entity.attributes.get("new_approvalstatus").setValue("Rejected");
Xrm.Page.getAttribute("new_approvalstatus").setSubmitMode("always");
var UserGUID = Xrm.Page.context.getUserId();
var resultXml=WSRetrieveMultipleByCondition("systemuser","fullname","systemuserid",UserGUID);
var buNodes = resultXml.selectNodes("//BusinessEntity/q1:fullname");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
//alert('user Name - ' + buNodes[0].text);
userName= buNodes[0].text;
}
SetLookupValue("new_quoterejectedbyid",UserGUID,userName,"systemuser");
closeOpenTask();
Xrm.Page.data.entity.save();
alert('The quote discount request rejected');
}
}
}
function GetCurrentUserRoleDiscountValue()
{
//Get Current User Roles RoleID
var currentUserRoles = Xrm.Page.context.getUserRoles();
var Discount=0;
for (var i = 0; i < currentUserRoles.length; i++) {
var userRole = currentUserRoles[i];
var resultXml=WSRetrieveMultipleByCondition("new_rolediscount","new_maximumdiscount","new_securityroleid",userRole);
var buNodes = resultXml.selectNodes("//BusinessEntity/q1:new_maximumdiscount");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
//alert('Discounted percentage - ' + buNodes[0].text);
Discount= buNodes[0].text;
break;
}
}
return Discount;
}
function ExecuteQuery(RoleId)
{
var serverUrl = "http://" + window.location.host + "/" + Xrm.Page.context.getOrgUniqueName();
// Creating the Odata Endpoint
var oDataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";
var retrieveReq = new XMLHttpRequest();
var Odata = oDataPath + "/new_rolediscountSet?$select=new_maximumdiscount&$filter=new_securityroleid eq guid'" + RoleId + "'";
retrieveReq.open("GET", Odata, false,"raman.goswami","globaL7&");
retrieveReq.setRequestHeader("Accept", "application/json");
retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
retrieveReq.send();
//retrieveReq.onreadystatechange = function () { retrieveReqCallBack(this); };
if (retrieveReq.readyState == 4) {
var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d;
var EmailAddress = retrieved.results[0].new_maximumdiscount;
//alert(EmailAddress);
}
// var oDataEndpointUrl = "https://net2011.4crm.in:444/net2011/XRMServices/2011/OrganizationData.svc/";
}
function retrieveReqCallBack(retrieveReq) {
if (retrieveReq.readyState == 4) {
var retrieved = this.parent.JSON.parse(retrieveReq.responseText).d;
var EmailAddress = retrieved.results[0].new_maximumdiscount;
//alert(EmailAddress);
}
}
function WSRetrieveMultipleByCondition(crmEntity, resultAttribute, queryAttribute, queryValue) {
var resultXml;
var oXMLSoapMsg = ""+
"
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
"
var oXMLHTTPReq = new ActiveXObject("Msxml2.XMLHTTP");
oXMLHTTPReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
oXMLHTTPReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
oXMLHTTPReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
oXMLHTTPReq.setRequestHeader("Content-Length", oXMLSoapMsg.length);
oXMLHTTPReq.send(oXMLSoapMsg);
resultXml = oXMLHTTPReq.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0){
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
else{
return resultXml;
}
}
function SetLookupValue(fieldName,id,name,entityType)
{
if(fieldName != null)
{
var lookupValue = new Array();
lookupValue[0] = new Object();
lookupValue[0].id = id;
lookupValue[0].name = name;
lookupValue[0].entityType = entityType;
Xrm.Page.getAttribute(fieldName).setValue(lookupValue);
Xrm.Page.getAttribute(fieldName).setSubmitMode("always"); // Need Changes
}
}
function GuidsAreEqual(guid1, guid2) {
var isEqual = false;
if (guid1 == null || guid2 == null) {
isEqual = false;
} else {
isEqual = guid1.replace(/[{}]/g, "").toLowerCase() == guid2.replace(/[{}]/g, "").toLowerCase();
}
return isEqual;
}
function CreateQuoteApprovalTask()
{
//debugger;
var LoggedInUserGUID = Xrm.Page.context.getUserId();
var QuoteOwnerGUID = Xrm.Page.data.entity.attributes.get("ownerid").getValue()[0].id;
quotediscountvalue=Xrm.Page.data.entity.attributes.get("discountpercentage").getValue();
GetTaskManagerID(LoggedInUserGUID,quotediscountvalue);
if(managerguid!=null)
{
CreateSeekTask(managerguid,LoggedInUserGUID);
}
}
function GetTaskManagerID(LoggedInUserGUID,qtdiscountvalue)
{
var managerid=GetManagerId(LoggedInUserGUID);
if(managerid!='')
{
//Get User Roles RoleID
var resultXml = GetUserRoles(managerid);
var NameNodes = resultXml.selectNodes("//BusinessEntity/q1:roleid");
if(NameNodes.length > 0)
{
for( i = 0; i < NameNodes.length; i++)
{
var roleid = NameNodes[i].text;
var resultXmlRoleDiscount=WSRetrieveMultipleByCondition("new_rolediscount","new_maximumdiscount","new_securityroleid",roleid);
var buNodes = resultXmlRoleDiscount.selectNodes("//BusinessEntity/q1:new_maximumdiscount");
var NodeExist = buNodes.length;
if (NodeExist >=1)
{
var Discount= buNodes[0].text;
if(qtdiscountvalue<=Discount)
{
managerguid = managerid;
break;
}
else
{
GetTaskManagerID(managerid,qtdiscountvalue);
}
}
}
}
}
else
{
managerguid ='nomanager';
}
}
function GetManagerId(LoggedInUserGUID)
{
var managerid='';
var resultXmlsystemuser=WSRetrieveMultipleByCondition("systemuser","parentsystemuserid","systemuserid",LoggedInUserGUID);
var buNodessystemuser = resultXmlsystemuser.selectNodes("//BusinessEntity/q1:parentsystemuserid");
var NodeExistsystemuser = buNodessystemuser.length;
if (NodeExistsystemuser >=1)
{
//alert('Manager Id - ' + buNodessystemuser[0].text);
managerid= buNodessystemuser[0].text;
}
return managerid;
}
function GetUserRoles(EqualUserId)
{
var xml = ""+
"
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
" <soap:Body>" +
" <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
" <q1:EntityName>role
" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
" <q1:Attributes>" +
" <q1:Attribute>name" +
" <q1:Attribute>roleid" +
" " +
" " +
" <q1:Distinct>false" +
" <q1:LinkEntities>" +
" <q1:LinkEntity>" +
" <q1:LinkFromAttributeName>roleid" +
" <q1:LinkFromEntityName>role" +
" <q1:LinkToEntityName>systemuserroles" +
" <q1:LinkToAttributeName>roleid" +
" <q1:JoinOperator>Inner" +
" <q1:LinkEntities>" +
" <q1:LinkEntity>" +
" <q1:LinkFromAttributeName>systemuserid" +
" <q1:LinkFromEntityName>systemuserroles" +
" <q1:LinkToEntityName>systemuser" +
" <q1:LinkToAttributeName>systemuserid" +
" <q1:JoinOperator>Inner" +
" <q1:LinkCriteria>" +
" <q1:FilterOperator>And" +
" <q1:Conditions>" +
" <q1:Condition>" +
" <q1:AttributeName>systemuserid" +
" <q1:Operator>Equal" +
"
"
"
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
"" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0){
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
else{
return resultXml;
}
}
function CreateSeekTask(MangerID,CreatedByID)
{
//debugger;
var CurrentQuoteID = Xrm.Page.data.entity.attributes.get("quotenumber").getValue();
var attributesandvalues="subject|Discount Approval Request for "+ CurrentQuoteID + ",regardingobjectid|"+Xrm.Page.data.entity.getId()+",statecode|Open";
var returnXML=WSRetrieveMultipleByMultipleCondition("task","activityid",attributesandvalues);
var nodecount = returnXML.selectNodes("//BusinessEntity/q1:activityid");
if(nodecount.length==0)
{
var xml = ""+
"
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
" <soap:Body>" +
" <Create xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <entity xsi:type=\"task\">" +
" <description>Your Discount Approval is Required for the Quote "+ CurrentQuoteID + "
" <ownerid>" + MangerID + "" +
" <regardingobjectid type=\"quote\">" + Xrm.Page.data.entity.getId() + "" +
" <subject>Discount Approval Request for "+ CurrentQuoteID + "" +
" <createdby>" + CreatedByID + "" +
" " +
" " +
" " +
"" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Create");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
}
}
function GenerateQuoteDiscountValuePercent()
{
var valueinpercent=0;
var discountamount=Xrm.Page.data.entity.attributes.get("discountamount").getValue();
if(discountamount!=null)
{
var totallineitemamount=Xrm.Page.data.entity.attributes.get("totallineitemamount").getValue();
valueinpercent= (discountamount/totallineitemamount)*100;
Xrm.Page.data.entity.attributes.get("discountpercentage").setValue(valueinpercent);
Xrm.Page.getAttribute("discountpercentage").setSubmitMode("always");
Xrm.Page.data.entity.attributes.get("discountamount").setValue(0);
Xrm.Page.getAttribute("discountamount").setSubmitMode("always");
}
}
function GenerateQuoteDiscountValuePercentbyManager()
{
var valueinpercent=0;
var approvaldiscountamount=Xrm.Page.data.entity.attributes.get("new_approvaldiscountamount").getValue();
if(approvaldiscountamount!=null)
{
rolesDiscountvalue=GetCurrentUserRoleDiscountValue();
var totallineitemamount=Xrm.Page.data.entity.attributes.get("totallineitemamount").getValue();
valueinpercent= (approvaldiscountamount/totallineitemamount)*100;
if(valueinpercent<=rolesDiscountvalue)
{
Xrm.Page.data.entity.attributes.get("new_approvaldiscount").setValue(valueinpercent);
Xrm.Page.getAttribute("new_approvaldiscount").setSubmitMode("always");
Xrm.Page.data.entity.attributes.get("new_approvaldiscountamount").setValue(0);
Xrm.Page.getAttribute("new_approvaldiscountamount").setSubmitMode("always");
}
else
{
alert('Your quote discounted amount is more then that specified discount for you!');
//event.returnValue=false;
}
}
}
function WSRetrieveMultipleByMultipleCondition(crmEntity, resultAttribute, queryAttributeandValue) {
var resultXml,arrayqueryAttribute,xmlAttributeandValue;
arrayqueryAttribute = queryAttributeandValue.split(",");
for (var i = 0; i < arrayqueryAttribute.length; i++) {
var Attribute,Value,arrayAttributeandValue;
AttributeandValue=arrayqueryAttribute[i].split("|");
Attribute=AttributeandValue[0];
Value=AttributeandValue[1];
xmlAttributeandValue +="
"
"
"
"
"
"
}
var oXMLSoapMsg = ""+
"
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
"
"
"
"
"
"
"
"
"
"
"
"
"
xmlAttributeandValue +
"
"
"
"
"
"
var oXMLHTTPReq = new ActiveXObject("Msxml2.XMLHTTP");
oXMLHTTPReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
oXMLHTTPReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
oXMLHTTPReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
oXMLHTTPReq.setRequestHeader("Content-Length", oXMLSoapMsg.length);
oXMLHTTPReq.send(oXMLSoapMsg);
resultXml = oXMLHTTPReq.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0){
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
else{
return resultXml;
}
}
function closeOpenTask()
{
debugger;
var CurrentQuoteID = Xrm.Page.data.entity.attributes.get("quotenumber").getValue();
var currentuserid=Xrm.Page.context.getUserId();
var attributesandvalues="subject|Discount Approval Request for "+ CurrentQuoteID + ",regardingobjectid|"+Xrm.Page.data.entity.getId()+",statecode|Open,ownerid|"+currentuserid+"";
var returnXML=WSRetrieveMultipleByMultipleCondition("task","activityid",attributesandvalues);
var nodecount = returnXML.selectNodes("//BusinessEntity/q1:activityid");
if(nodecount.length!=0)
{
//close the task
for (var i = 0; i < nodecount.length; i++)
{
var taskid= nodecount[i].text;
SetStateTaskRequest(taskid);
//SetLookupValue("modifiedby",currentuserid,ModifiedBy,"systemuser");
}
}
}
function SetStateTaskRequest(taskid)
{
var xml = ""+
"
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+
GenerateAuthenticationHeader().toString()+
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"SetStateTaskRequest\">" +
" <EntityId>" + taskid + "
" <TaskState>Completed" +
" <TaskStatus>-1" +
" " +
" " +
" " +
"" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
alert(resultXml.xml);
}