/// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ProcessTender_Load(object sender, EventArgs e)
        {
            ProcessTenderController pCntrl = ProcessTenderController.Instance;

            //Perform the process tender process
            this.loanTicketGroup.Visible = true;
            this.success = pCntrl.ExecuteProcessTender(procTendMode);
            this.Update();
            switch (this.procTendMode)
            {
            case ProcessTenderProcedures.ProcessTenderMode.NEWLOAN:
                if (!this.success ||
                    CollectionUtilities.isEmpty(pCntrl.TicketFiles))
                {
                    MessageBox.Show(
                        "New loan process tender failed.  \n" +
                        "Please call Shop System Support.  \n" +
                        "The loan number is: " + ProcessTenderController.Instance.TicketNumber,
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    this.okButton.Enabled = true;
                    //Update the labels
                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName,
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName,
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActivePawnLoan.Amount));

                    //Update the list box
                    for (int cnt = 1;
                         cnt <= ProcessTenderController.Instance.TicketFiles.Count;
                         ++cnt)
                    {
                        string s = ProcessTenderController.Instance.TicketFiles[cnt - 1];
                        if (string.IsNullOrEmpty(s))
                        {
                            continue;
                        }
                        string ticketDesc = "Loan #" +
                                            ProcessTenderController.Instance.TicketNumber + "[" +
                                            cnt + "]";
                        this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    }
                    this.loanDocListView.Update();
                    this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.SERVICELOAN:

                if (!this.success)
                {
                    MessageBox.Show(
                        "Servicing loan process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    if (GlobalDataAccessor.Instance.DesktopSession.TotalServiceAmount > 0)
                    {
                        this.initialProcessTenderLabel.Text = "Received From Customer:";
                    }
                    else
                    {
                        this.initialProcessTenderLabel.Text = "Cash to Customer:";
                    }
                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName,
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName,
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.TotalServiceAmount));
                    for (int cnt = 0;
                         cnt < ProcessTenderController.Instance.ProcessedTickets.Count;
                         cnt++)
                    {
                        var    ticketData = ProcessTenderController.Instance.ProcessedTickets[cnt];
                        string s          = ticketData.Right.ToString();
                        if (string.IsNullOrEmpty(s))
                        {
                            continue;
                        }
                        string ticketDesc = "Loan #" +
                                            ticketData.Left.ToString() + "[" +
                                            cnt + 1 + "]";
                        this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    }
                    this.loanDocListView.Update();
                    this.Update();
                    //this.loanTicketGroup.Visible = false;
                    //this.loanDocListView.Visible = false;
                    //this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.VOIDLOAN:
                //Shouldn't be here for void loan
                break;

            case ProcessTenderProcedures.ProcessTenderMode.PURCHASE:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Purchase process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName,
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName,
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.Amount));
                    string ticketDesc = "Purchase #" +
                                        GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber;
                    this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.VENDORPURCHASE:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Purchase process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveVendor.Name,
                        "",
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.Amount));
                    string ticketDesc = "Vendor Purchase #" +
                                        GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber;
                    this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.RETURNBUY:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Purchase process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    initialProcessTenderLabel.Text = "Received From Customer:";

                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName,
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName,
                        String.Format("{0:C}", (from item in GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.Items
                                                select item.ItemAmount).Sum()));
                    string ticketDesc = "Return #" +
                                        GlobalDataAccessor.Instance.DesktopSession.ActivePurchase.TicketNumber;
                    this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.RETURNSALE:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Refund process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        string.IsNullOrEmpty(GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.CustomerNumber) ?
                        GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.EntityName :
                        GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.CustomerNumber == "0" ?
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.CustomerName :
                        GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.EntityName,
                        "",
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.TotalSaleAmount));
                    string ticketDesc = "Refund Ticket #" +
                                        GlobalDataAccessor.Instance.DesktopSession.ActiveRetail.TicketNumber;
                    this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.LAYAWAY:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Layaway process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    initialProcessTenderLabel.Text = "Received From Customer:";

                    this.okButton.Enabled = true;

                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName,
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName,
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.ActiveLayaway.TotalSaleAmount));
                    string ticketDesc = "Layaway Ticket #" +
                                        GlobalDataAccessor.Instance.DesktopSession.ActiveLayaway.TicketNumber;
                    this.loanDocListView.Items.Add(new ListViewItem(ticketDesc, 0));
                    this.Update();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.LAYPAYMENT:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Layaway payment process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    initialProcessTenderLabel.Text = "Received From Customer:";

                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.FirstName,
                        GlobalDataAccessor.Instance.DesktopSession.ActiveCustomer.LastName,
                        String.Format("{0:C}", GlobalDataAccessor.Instance.DesktopSession.TotalServiceAmount));
                    this.loanTicketGroup.Visible = false;
                    this.Update();
                    ReceiptConfirmation rcptConf = new ReceiptConfirmation();
                    rcptConf.ShowDialog();
                    this.Close();
                }
                break;

            case ProcessTenderProcedures.ProcessTenderMode.LAYPAYMENTREF:
                if (!this.success)
                {
                    MessageBox.Show(
                        "Layaway payment refund process failed.  \n" +
                        "Please call Shop System Support.  \n",
                        "Application Error",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Stop);
                    GlobalDataAccessor.Instance.DesktopSession.ClearPawnLoan();
                    NewDesktop nDesk =
                        (NewDesktop)GlobalDataAccessor.Instance.DesktopSession.HistorySession.Desktop();
                    nDesk.handleEndFlow(null);
                }
                else
                {
                    decimal totalAmt = GlobalDataAccessor.Instance.DesktopSession.TenderAmounts.Sum(s => Utilities.GetDecimalValue(s, 0));

                    this.okButton.Enabled = true;
                    this.setProcessTenderDetails(
                        CashlinxDesktopSession.Instance.ActiveCustomer.FirstName,
                        CashlinxDesktopSession.Instance.ActiveCustomer.LastName,
                        String.Format("{0:C}", totalAmt));
                    this.loanTicketGroup.Visible = false;
                    this.Update();

                    DisbursementConfirmation rcptConf = new DisbursementConfirmation();
                    rcptConf.ShowDialog();
                    this.Close();
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(this.procTendMode.ToString());
            }
        }