private void ExportButton_Click(object sender, EventArgs e)
        {
            if (invoiceList.Count > 0)
            {
                ToggleButtons(false);
                LoadImage.Visible = true;

                ORExportObject obj = CreateExportObject();
                exportWorker.RunWorkerAsync(obj);
            }
            else
            {
                ClientHelper.ShowErrorMessage("No items to export.");
            }
        }
        void exportWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                ORExportObject  exportObject = (ORExportObject)e.Argument;
                IExportStrategy strategy     = new ORExportStrategy(exportObject);

                var exporter = new ReportExporter(strategy);
                exporter.ExportReport();
            }
            catch (Exception ex)
            {
                ClientHelper.LogException(ex);
                ClientHelper.ShowErrorMessage("An error occurred while exporting. Please try again.");
            }
        }
        private ORExportObject CreateExportObject()
        {
            ORExportObject obj = new ORExportObject()
            {
                Code          = VoucherNumberTextbox.Text,
                Customer      = CustomerDropdown.Text,
                Remarks       = RemarksTextbox.Text,
                Items         = invoiceList.ToList(),
                WitholdingTax = WitholdingTaxTextbox.Text.ToDecimal(),
                Discount      = DiscountTextbox.Value,
                Checks        = checksList,
                Cash          = TotalCashTextbox.Text.ToDecimal(),
                Month         = PaymentDatePicker.Value.ToString("MMMM")
            };

            return(obj);
        }