Пример #1
0
        public byte[] ObtenerReporteEgreso(Comprobante comprobante, out string mimeType)
        {
            mimeType = string.Empty;

            LocalReport localReport = new LocalReport();
            string      path        = Path.Combine(Server.MapPath("~/Reports"), "ComprobanteEgreso.rdlc");

            if (System.IO.File.Exists(path))
            {
                localReport.ReportPath = path;
            }
            else
            {
                throw new ApplicationException("La ruta al reporte no existe, favor verificar.");
            }

            var cuentaAsiento       = comprobante.CuentasAsientos.First();
            var cuentaBanco         = comprobante.CuentaBanco;
            var banco               = comprobante.CuentaBanco != null ? comprobante.CuentaBanco.Banco : null;
            var tipoComprobante     = comprobante.TiposComprobante;
            var reportesComprobante = reportesManager.GetReporteComprobante(comprobante.Id);


            var dataSourceComprobantes = new List <Comprobante> {
                comprobante
            };
            var dataSourceTiposComprobantes = new List <TiposComprobante> {
                tipoComprobante
            };
            var dataSourceCuentasAsientos = new List <CuentaAsiento> {
                cuentaAsiento
            };
            var dataSourceBancos = new List <Banco> {
                banco
            };
            var dataSourceCuentasBancos = new List <CuentaBanco> {
                cuentaBanco
            };

            ReportDataSource rdsComprobantes = new ReportDataSource("Comprobante", dataSourceComprobantes);

            localReport.DataSources.Add(rdsComprobantes);
            ReportDataSource rdsTiposComprobantes = new ReportDataSource("TipoComprobante", dataSourceTiposComprobantes);

            localReport.DataSources.Add(rdsTiposComprobantes);
            ReportDataSource rdsCuentasAsientos = new ReportDataSource("CuentasAsientos", dataSourceCuentasAsientos);

            localReport.DataSources.Add(rdsCuentasAsientos);
            ReportDataSource rdsBancos = new ReportDataSource("Banco", dataSourceBancos);

            localReport.DataSources.Add(rdsBancos);
            ReportDataSource rdsDetalleComprobante = new ReportDataSource("Datos", reportesComprobante);

            localReport.DataSources.Add(rdsDetalleComprobante);
            ReportDataSource rdsCuentasBancos = new ReportDataSource("CuentasBancos", dataSourceCuentasBancos);

            localReport.DataSources.Add(rdsCuentasBancos);

            string reportType = "PDF";
            string encoding;
            string fileNameExtension;
            string deviceInfo =
                "<DeviceInfo>" +
                "  <OutputFormat>" + reportType + "</OutputFormat>" +
                "  <PageWidth>21,59in</PageWidth>" +
                "  <PageHeight>27,94in</PageHeight>" +
                "  <MarginTop>0,5in</MarginTop>" +
                "  <MarginLeft>0,5in</MarginLeft>" +
                "  <MarginRight>0,5in</MarginRight>" +
                "  <MarginBottom>0,5in</MarginBottom>" +
                "</DeviceInfo>";

            Warning[] warnings;
            string[]  streams;
            byte[]    renderedBytes;
            renderedBytes = localReport.Render(
                reportType,
                deviceInfo,
                out mimeType,
                out encoding,
                out fileNameExtension,
                out streams,
                out warnings);
            return(renderedBytes);
        }