/// <summary>
 /// Create a Payment Report 
 /// </summary>
 /// <param name="obj">
 /// obj[0] = ModelCustomerInfo
 /// obj[1] = paymentAmount
 /// obj[2] = Remain Due
 /// obj[3] = Due Amount
 /// </param>
 private void printPaymentClick(object obj)
 {
     this.PaymentPrint.IsEnabled = false;
     try
     {
         if (obj is ArrayList)
         {
             ArrayList dataList = obj as ArrayList;
             ModelCustomerIno selectedCustomer = dataList[0] as ModelCustomerIno;
             ModelInvoicInformation paymentInfo = new ModelInvoicInformation
                                                                         {
                                                                             Address = selectedCustomer.Address,
                                                                             CreateDate = DateTime.Now,
                                                                             CustomerName = selectedCustomer.CustomerName,
                                                                             DueAmount = dataList[2].ToString(),
                                                                             Payment = dataList[1].ToString(),
                                                                             TotalAmount = dataList[3].ToString()
                                                                         };
             PaymentReport newPaymentReport = new PaymentReport();
             newPaymentReport.PaymentbindingSource.DataSource = paymentInfo;
             PrintHelper.ShowPrintPreview(this, newPaymentReport);
         }
         else
         {
             MessageBox.Show("Unable to create report.", CommandData.SOFTWARE_NAME, MessageBoxButton.OK, MessageBoxImage.Stop);
         }
     }
     catch (NullReferenceException)
     {
         Mouse.OverrideCursor = null;
         MessageBox.Show(CommandData.ERROR_MESSAGE[5], CommandData.SOFTWARE_NAME, MessageBoxButton.OK, MessageBoxImage.Stop);
     }
     catch (Exception errorException)
     {
         MessageBox.Show(errorException.Message, CommandData.SOFTWARE_NAME, MessageBoxButton.OK, MessageBoxImage.Error);
     }
     finally
     {
         this.PaymentPrint.IsEnabled = true;
     }
 }
 /// <summary>
 /// Print Sale History
 /// </summary>
 /// <param name="obj">
 /// obj[0] = ModelCustomerInformation
 /// obj[1] = SaleHistoryGrid.ItemSource
 /// obj[2] = With Customer (Bool)
 /// </param>
 private void printPaymentHistoryClick(object obj) 
 {
     this.PaymentPrint.IsEnabled = false;
     try
     {
         if (obj is ArrayList)
         {
             ArrayList dataList = obj as ArrayList;
             ModelInvoicInformation paymentHistoryInfo = new ModelInvoicInformation();
             if ((bool)dataList[2])
             {
                 ModelCustomerIno selectCustomerInfo = dataList[0] as ModelCustomerIno;
                 paymentHistoryInfo.Address = selectCustomerInfo.Address;
                 paymentHistoryInfo.CustomerName = selectCustomerInfo.CustomerName;
             }
             paymentHistoryInfo.CreateDate = DateTime.Now;
             PaymentHisReport newPaymentHistoryReport = new PaymentHisReport();
             newPaymentHistoryReport.GeneralInfobindingSource.DataSource = paymentHistoryInfo;
             newPaymentHistoryReport.PaymentHisbindingSource.DataSource = (dataList[1] as ObservableCollection<ModelPaymentHistory>);
             PrintHelper.ShowPrintPreview(this, newPaymentHistoryReport);
         }
         else
         {
             Mouse.OverrideCursor = null;
             MessageBox.Show("Unable to create report", CommandData.SOFTWARE_NAME, MessageBoxButton.OK, MessageBoxImage.Stop);
         }
     }
     catch (NullReferenceException)
     {
         Mouse.OverrideCursor = null;
         MessageBox.Show(CommandData.ERROR_MESSAGE[5], CommandData.SOFTWARE_NAME, MessageBoxButton.OK, MessageBoxImage.Stop);
     }
     catch (Exception errorException)
     {
         Mouse.OverrideCursor = null;
         MessageBox.Show(errorException.Message, CommandData.SOFTWARE_NAME, MessageBoxButton.OK, MessageBoxImage.Error);
     }
     finally
     {
         Mouse.OverrideCursor = null;
         this.PaymentHisPrint.IsEnabled = true;
     }
 }