Monday, August 20, 2012

How to write code in JavaScript for an entity quote in MS CRM 2011 or 4.0

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
" + 
 " <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" +
 ""+
 ""+EqualUserId+""+
 "
"+ 
 " " + 
 " " + 
 " " + 
 " " + 
 " " + 
 " " + 
 " " +
 " " + 
 " " + 
 " " + 
 "" + 
 ""; 
 
 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:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
" 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 +=""+
        ""+Attribute+""+
        ""+
        ""+
        ""+Value+""+
        "
"+
        "
"
    }
   
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+""+
"
"+
"
"+
""+
""+
""+
""+
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:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
" 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);

}

1 comment:

Unknown said...

Hi Harish,
I need your help. I am new to CRM.I developedd a page in asp.net ,fetch data from crm database and integrate it with crm portal. i added a button on Quote ,when we click on button we able to open that asp.net page. What i want that...
when i open any quote then button sholud be disabled, when quote is activated then button should be enabled. how we can achieve that functionality.
Thanks in advance!!

Split the String values with a special character in MS Flow to convert this into Array

 Many times we have a requirement to prepare the Mailing address for some of the documents, suppose there are Address Line1, Address Line2, ...