function AttachReport()
{
debugger;
var params = OpenOrderReport();
var newPth = Xrm.Page.context.getClientUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession="+ params[0]+"&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID="+ params[1] +"&OpType=Export&FileName=public&ContentDisposition=OnlyHtmlInline&Format=PDF";
window.open(newPth, "_self");
encodePdf(params);
}
function OpenOrderReport()
{
debugger;
var rdlName = "invoice.rdl";
var reportGuid = "8e547587-59e8-e611-80d7-00155d004f8b";
var entityType = "1090"; //Replace
var entityGuid = Xrm.Page.data.entity.getId();
var url = Xrm.Page.context.getClientUrl() + "/crmreports/viewer/viewer.aspx?action=run&context=records&helpID=" +rdlName + "&id=%7b" + reportGuid + "%7d&records=%7b" + entityGuid.replace('{', '').replace('}', '') + "%7d&recordstype=" + entityType;
//added
var retrieveEntityReq = new XMLHttpRequest();
retrieveEntityReq.open("POST", url, false);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var x = retrieveEntityReq.responseText.lastIndexOf("ReportSession=");
var y = retrieveEntityReq.responseText.lastIndexOf("ControlID=");
var ret = new Array();
ret[0] = retrieveEntityReq.responseText.substr(x + 14, 24);
ret[1] = retrieveEntityReq.responseText.substr(x + 10, 32);
return ret;
//window.open(url, null, 800, 600, true, false, null); <--- alrdy exists
}
function encodePdf(responseSession)
{
debugger;
alert("encode pdf");
var retrieveEntityReq = new XMLHttpRequest();
var pth = Xrm.Page.context.getClientUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + responseSession[0] +"&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" +responseSession[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
retrieveEntityReq.open("GET", pth, true);
retrieveEntityReq.setRequestHeader("Accept", "*/*");
retrieveEntityReq.responseType = "arraybuffer";
retrieveEntityReq.onreadystatechange = function () {
if (retrieveEntityReq.readyState == 4 && retrieveEntityReq.status == 200)
{
var binary = "";
var bytes = new Uint8Array(this.response);
for (var i = 0; i < bytes.byteLength; i++) {
binary += String.fromCharCode(bytes[i]);
}
var bdy = btoa(binary);
createNote(bdy);
}
};
retrieveEntityReq.send();
}
function createNote(data)
{
debugger;
alert("create new note");
var note = {};
var refInvoice = new Object();
refInvoice.LogicalName = "invoice";
refInvoice.Id = recordId;
note.ObjectId = refInvoice;
note.ObjectTypeCode = refInvoice.LogicalName;
note.Subject = "Invoice: " + new_invoicenumber;
note.MimeType = "application/pdf";
note.DocumentBody = data;
note.FileName = new_invoicenumber+ ".pdf";
XrmServiceToolkit.Rest.Create(
note,
"AnnotationSet",
function (result)
{
//Alert user
alert("Note Created");
//Refresh data so user sees newly created note
Xrm.Page.data.refresh(false);
},
function (error)
{
alert(error.message);
},
true
);
}
//==========================================End==============================//