Wednesday, May 23, 2012

Copy data from other Opportunity to new Opportunity


// Add a button on opportunity form. Add this file as web resource and call the function copyFromOpportunity on button action
var serverUrl = null;
serverUrl = Xrm.Page.context.getServerUrl();


//The XRM OData end-point
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";


function copyFromOpportunity() {
  
    retrieveRecord("Opportunity Lookup View", "SavedQuerySet", retrieveViewCompleted, null);


}


function retrieveOpportunity(id) {


    retrieveRecord(id, "opportunitySet", retrieveOpportunityCompleted, null);
}


function retrieveViewCompleted(data, textStatus, XmlHttpRequest) {


    var view = data[0];


    var viewId = view.SavedQueryId;


    if (viewId == null) {
        alert('null: setting value');
       
    }


    var queryStringParams = Xrm.Page.context.getQueryStringParameters();


    var etc = 0;


    for (var item in queryStringParams) {
        if (item == 'etc') {


            etc = queryStringParams[item];
            break;
        }
    }
    var customer = new Array();


    customer = Xrm.Page.getAttribute('customerid').getValue();


    var customerId = customer[0].id;


    var viewUrl = serverUrl + '/_controls/lookup/lookupinfo.aspx?AllowFilterOff=1&DefaultType=' + etc + '&DefaultViewId=' + viewId + '&DisableQuickFind=0&DisableViewPicker=1&LookupStyle=single&ShowNewButton=0&ShowPropButton=1&browse=0&objecttypes=' + etc;


    // alert(viewUrl);


    var retVal = window.showModalDialog(viewUrl, "", "width=900px,height=600px,resizable=1");


    if (retVal != null) {
        var kpLookup = retVal.items;
        retrieveKeyPlayer(kpLookup[0].id);
    }
}


function retrieveOpportunityCompleted(data, textStatus, XmlHttpRequest) {


    var opportunity = data;


    var opportunityName = opportunity.name;
 
    var customerLookup = new Array();
    if (opportunity.customerId.Id != null) {
        customerLookup[0] = new Object();
        customerLookup[0].id = opportunity.customerId.Id;
        customerLookup[0].name = opportunity.customerId.Name;
        customerLookup[0].entityType = 'account';


    }


    Xrm.Page.getAttribute('name').setValue(name);
    Xrm.Page.getAttribute('customerId').setValue(customerLookup);
// Setrequired fields values
}


function errorFromCallback(XmlHttpRequest, textStatus, error) {
    alert('error: ' + error);
}


function retrieveRecord(id, odataSetName, successCallback, errorCallback) {

    if (!id) {
        alert("record id is required.");
        return;
    }

    if (!odataSetName) {
        alert("odataSetName is required.");
        return;
    }
    if (odataSetName == 'opportunitySet') {
        $.ajax(
        {
            type: "GET",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "(guid'" + id + "')",
            beforeSend: function (XMLHttpRequest) {
                //Specifying this header ensures that the results will be returned as JSON.            
                XMLHttpRequest.setRequestHeader("Accept", "application/json");
            },
            success: function (data, textStatus, XmlHttpRequest) {
                if (successCallback) {
                    successCallback(data.d, textStatus, XmlHttpRequest);
                }
            },
            error: function (XmlHttpRequest, textStatus, errorThrown) {
                if (errorCallback)
                    errorCallback(XmlHttpRequest, textStatus, errorThrown);
                else
                    errorHandler(XmlHttpRequest, textStatus, errorThrown);
            }
        });
    }
    else if (odataSetName == 'SavedQuerySet') {
        //alert("SavedQuerySet");
        $.ajax(
        {
            type: "GET",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?$filter=Name eq '" + id + "'",
            beforeSend: function (XMLHttpRequest) {
                //Specifying this header ensures that the results will be returned as JSON.            
                XMLHttpRequest.setRequestHeader("Accept", "application/json");
            },
            success: function (data, textStatus, XmlHttpRequest) {
                if (successCallback) {
                    //alert(serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?$filter=Name eq '" + id + "'");
                    successCallback(data.d.results, textStatus, XmlHttpRequest);
                }
            },
            error: function (XmlHttpRequest, textStatus, errorThrown) {
                if (errorCallback)
                    errorCallback(XmlHttpRequest, textStatus, errorThrown);
                else
                    errorHandler(XmlHttpRequest, textStatus, errorThrown);
            }
        });
    }
}

No comments:

Post a Comment