Esempio n. 1
0
        /// <summary>
        /// Muestra el reporte en un mediante el visor de Crystal Reports o
        /// manda a imprimir el reporte directamente a la impresora configurada.
        /// </summary>
        /// <param name="report"> Documento .rpt </param>
        /// <param name="reportName"> Nombre del reporte. </param>
        /// <param name="isDialog"> Se mostrará en una ventana tipo Dialogo. </param>
        /// <param name="owner"> Ventana Principal que utiliza el visor. </param>
        /// <param name="isDirectPrint"> Bandera de impresion directa. </param>
        /// <history>
        /// [edgrodriguez] 16/Jul/2016 Created
        /// </history>
        public static void ShowReport(ReportDocument report, string reportName = "", bool isDialog = false, Window owner = null, EnumPrintDevice PrintDevice = EnumPrintDevice.pdScreen, bool IsInvitation = false, int numCopies = 1)
        {
            switch (PrintDevice)
            {
            case EnumPrintDevice.pdPrinter:
                var boPrintReportOptions = new PrintReportOptions();
                boPrintReportOptions.PrinterName = (IsInvitation) ? ConfigRegistryHelper.GetConfiguredPrinter("PrintInvit") : boPrintReportOptions.PrinterName;
                if (IsInvitation && string.IsNullOrEmpty(boPrintReportOptions.PrinterName))
                {
                    UIHelper.ShowMessage($"The printer is not configured, please configure your printer.");
                    return;
                }
                var boReportClientDocument  = report.ReportClientDocument;
                var boPrintOutputController = boReportClientDocument.PrintOutputController;

                boPrintReportOptions.JobTitle       = reportName;
                boPrintReportOptions.NumberOfCopies = numCopies;
                boPrintOutputController.PrintReport(boPrintReportOptions);
                break;

            case EnumPrintDevice.pdScreen:
                var crViewer = new frmViewer(report, reportName);
                crViewer.Owner = owner;
                if (isDialog)
                {
                    crViewer.ShowDialog();
                    break;
                }
                crViewer.Show();
                break;
            }
        }
        /// <summary>
        /// Imprime el reporte RefundsLetter
        /// </summary>
        /// <history>
        /// [edgrodriguez] 15/Jul/2016 Created
        /// </history>
        private async void btnPrint_Click(object sender, RoutedEventArgs e)
        {
            var Refund = grdRefund.SelectedItem as DepositsRefund;

            if (Refund != null)
            {
                var RptRefundLetter = await BRDepositsRefund.GetRptRefundLetter(Refund.drID);

                if (RptRefundLetter.Any())
                {
                    var objRptRefundletter = RptRefundLetter[0].Cast <RptRefundLetter>().FirstOrDefault();
                    var reportText         = await BRReportsTexts.GetReportTexts("RefundLetter", objRptRefundletter.gula);

                    var header = reportText[0].reText
                                 .Replace("[SaleRoom]", objRptRefundletter.SaleRoom)
                                 .Replace("[RefundDate]", objRptRefundletter.RefundDate.ToString())
                                 .Replace("[RefundID]", objRptRefundletter.RefundID.ToString())
                                 .Replace("[RefundFolio]", objRptRefundletter.RefundFolio.ToString())
                                 .Replace("[GuestID]", objRptRefundletter.GuestID.ToString())
                                 .Replace("[OutInvt]", objRptRefundletter.OutInvt)
                                 .Replace("[GuestNames]", objRptRefundletter.GuestNames)
                                 .Replace("[TotalAmount]", objRptRefundletter.TotalAmount.ToString("#,##0.00"))
                                 .Replace("[PRName]", objRptRefundletter.PRName);
                    var footer = reportText[1].reText;

                    var crptRefundLetter = new Reports.rptRefundLetter();
                    crptRefundLetter.Database.Tables["depositRefund"].SetDataSource(ObjectHelper.ObjectToList(objRptRefundletter));
                    crptRefundLetter.Database.Tables["reportText"].SetDataSource(ObjectHelper.ObjectToList(new Classes.objReportText {
                        Header = header, Footer = footer
                    }));
                    crptRefundLetter.Subreports["RptBookingDeposits.rpt"].SetDataSource(TableHelper.GetDataTableFromList(RptRefundLetter[1].Cast <RptRefundLetter_BookingDeposit>().ToList()));

                    CrystalReportHelper.SetLanguage(crptRefundLetter, objRptRefundletter.gula);

                    //(crptRefundLetter.ReportDefinition.ReportObjects["txtHeader"] as FieldObject).ObjectFormat. = header;
                    //(crptRefundLetter.ReportDefinition.ReportObjects["txtFooter"] as FieldObject).Text = footer;

                    var frmReportViewer = new frmViewer(crptRefundLetter);
                    frmReportViewer.Show();
                }
            }
            else
            {
                UIHelper.ShowMessage("Select a Refund from the list.");
            }
        }