private void btnPrint_Click(object sender, RoutedEventArgs e)
        {


            try
            {
                btnPrint.IsEnabled = false;



                if (_worker.IsBusy)
                {
                    MessageBox.ShowBox("MessageID368", BMC_Icon.Information);
                    return;
                }
                if (StartDate > EndDate)
                {
                    MessageBox.ShowBox("MessageID282", BMC_Icon.Information);
                    return;
                }

                if (StartDate > System.DateTime.Now)
                {
                    MessageBox.ShowBox("MessageID283", BMC_Icon.Information);
                    return;
                }

                if (EndDate > System.DateTime.Now)
                {
                    MessageBox.ShowBox("MessageID284", BMC_Icon.Information);
                    return;
                }

                if (isDateChanged)
                {
                    btnProcess_Click(sender, e);
                }

                IReports objReports = ReportsBusinessObject.CreateInstance();

                LogManager.WriteLog("Fetching report data from database...", LogManager.enumLogLevel.Info);

                DataSet CashdeskDetails = null;
                String UserName = string.Empty;
                User lstUser = cboUser.SelectedItem as User;
                if (lstUser == null || String.IsNullOrEmpty(lstUser.UserName))
                {
                    UserName = SecurityHelper.CurrentUser.UserName;
                }
                else
                {
                    UserName = lstUser.UserName;
                }

                CashdeskDetails = new DataSet();

                //Add this list in order amount/count 
                CashdeskDetails.Tables.Add("CDSummary");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CDPaidAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CDPaidCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CDPrintedAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CDPrintedCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("HandPayAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("HandPayCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("JackpotAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("JackpotCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ProgAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ProgCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ShortPayAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ShortPayCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("OfflineVoucherAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("OfflineVoucherCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("VoidAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("VoidCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("MCPaidAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("MCPaidCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("MCPrintAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("MCPrintCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ActiveCashableVoucherAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ActiveCashableVoucherCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("VoidTicketsAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("VoidTicketsCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("VoidVoucherAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("VoidVoucherCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CancelledAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CancelledCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ExpiredAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("ExpiredCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("TicketInExceptionAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("TicketInExceptionCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("TicketOutExceptionAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("TicketOutExceptionCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CashableVoucherLiabilityAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("CashableVoucherLiabilityCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("PromoCashableAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("PromoCashableCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("NonCashableINAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("NonCashableINCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("NonCashableOutAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("NonCashableOutCount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("OutstandingHandpaysAmount");
                CashdeskDetails.Tables["CDSummary"].Columns.Add("OutstandingHandpaysCount");



                CashdeskDetails.Tables["CDSummary"].Rows.Add(CashdeskDetails.Tables["CDSummary"].NewRow());


                foreach (rsp_CDM_GetCashierTransactionsSummary item in _CashierHistory.Summary)
                {
                    if (CashdeskDetails.Tables["CDSummary"].Columns.IndexOf(item.Summary_Type) < 0)
                        continue;
                    CashdeskDetails.Tables["CDSummary"].Rows[0][item.Summary_Type] = item.Amount.ToString();
                    CashdeskDetails.Tables["CDSummary"].Rows[0][CashdeskDetails.Tables["CDSummary"].Columns.IndexOf(item.Summary_Type) + 1] = item.Count_Summary.ToString();
                }


                //= objReports.GetCashDeskReconcilationDetails(StartDate, EndDate);
                // CashdeskDetails = objReports.GetCashierTransactions(StartDate, EndDate, UserNo, iRoute_No);

                using (CReportViewer cReportViewer = new CReportViewer())
                {
                    LogManager.WriteLog("Report data fetched successfully from database", LogManager.enumLogLevel.Info);

                    cReportViewer.ShowCashierTransactionsHistoryReport(CashdeskDetails, StartDate, EndDate, UserNo, UserName, sRoute_Name, iRoute_No, CashdeskDetails.GetXml());
                    cReportViewer.SetOwner(System.Windows.Window.GetWindow(this));

                    cReportViewer.Show();
                }

                LogManager.WriteLog("ShowCashDeskReconcilationReport Successfull", LogManager.enumLogLevel.Info);
            }
            catch (Exception ex)
            {
                ExceptionManager.Publish(ex);
            }
            finally
            {
                btnPrint.IsEnabled = true;
            }
        }