private void btnOpen_Click(object sender, EventArgs e)
        {
            PedidoLocacao _pedido = null;

            if (txtReceiptNumber.Text == "")
            {
                MessageBox.Show("Informe o número do recibo");
                return;
            }

            NumeroRecibo = int.Parse(txtReceiptNumber.Text);

            if (listaPedidosLocacao.TryGetValue(NumeroRecibo, out _pedido))
            {
                txtNumeroEmpregado.Text = _pedido.NumeroEmpregado;
                txtEmployeeNumber_Leave(sender, e);
                cbxOrderStatus.Text = _pedido.StatusPedido;
                txtTagNumber.Text   = _pedido.NumeroCarro;
                txtTagNumber_Leave(sender, e);
                txtNumeroRegistroCNH.Text = _pedido.NumeroCNHCliente;
                txtNomeCliente.Text       = _pedido.NomeCliente;
                txtEnderecoCliente.Text   = _pedido.EnderecoCliente;
                txtCidadeCliente.Text     = _pedido.CidadeCliente;
                cboClientesEstados.Text   = _pedido.EstadoCliente;
                txtCepCliente.Text        = _pedido.CepCliente;
                cbxCarConditions.Text     = _pedido.EstadoDoVeiculo;
                cbxTankLevels.Text        = _pedido.NivelTanque;
                txtMileageStart.Text      = _pedido.MilhagemInicial.ToString();
                txtMileageEnd.Text        = _pedido.MilhagemFinal.ToString();
                dtpStartDate.Value        = _pedido.DataInicio;
                dtpEndDate.Value          = _pedido.DataFinal;
                txtDays.Text        = _pedido.Dias.ToString();
                txtRateApplied.Text = _pedido.TaxaAplicada.ToString("F");
                txtSubTotal.Text    = _pedido.SubTotal.ToString("F");
                txtTaxRate.Text     = _pedido.TaxaImposto.ToString("F");
                txtTaxAmount.Text   = _pedido.ValorImposto.ToString("F");
                txtOrderTotal.Text  = _pedido.ValorTotal.ToString("F");
            }
            else
            {
                MessageBox.Show("Não existe pedido de locação com este número de recibo.");
                return;
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (txtReceiptNumber.Text == "")
            {
                MessageBox.Show("O número do registro esta ausente.");
                return;
            }

            // Não salva se não sabe que processou o pedido
            if (txtNumeroEmpregado.Text == "")
            {
                MessageBox.Show("Informe o numero do empregado que " +
                                "processou este pedido.");
                return;
            }

            // Não salva o pedido se não sabe quem é o locador
            if (txtNumeroRegistroCNH.Text == "")
            {
                MessageBox.Show("Informe o numero de registro da carteira de habilitação " +
                                "do cliente que esta alugando o carro");
                return;
            }

            // não salva o pedido de locação se não sabemos qual carro vai ser locado
            if (txtTagNumber.Text == "")
            {
                MessageBox.Show("Informe o numero de registro do carro " +
                                " que esta sendo alugado");
                return;
            }

            // Cria o numero do pedido baseado na informação do formulãrio
            PedidoLocacao pedidoLocacaoAtual = new PedidoLocacao();

            pedidoLocacaoAtual.NumeroEmpregado  = txtNumeroEmpregado.Text;
            pedidoLocacaoAtual.StatusPedido     = cbxOrderStatus.Text;
            pedidoLocacaoAtual.NumeroCarro      = txtTagNumber.Text;
            pedidoLocacaoAtual.NumeroCNHCliente = txtNumeroRegistroCNH.Text;
            pedidoLocacaoAtual.NomeCliente      = txtNomeCliente.Text;
            pedidoLocacaoAtual.EnderecoCliente  = txtEnderecoCliente.Text;
            pedidoLocacaoAtual.CidadeCliente    = txtCidadeCliente.Text;
            pedidoLocacaoAtual.EstadoCliente    = cboClientesEstados.Text;
            pedidoLocacaoAtual.CepCliente       = txtCepCliente.Text;
            pedidoLocacaoAtual.EstadoDoVeiculo  = cbxCarConditions.Text;
            pedidoLocacaoAtual.NivelTanque      = cbxTankLevels.Text;

            try
            {
                pedidoLocacaoAtual.MilhagemInicial = int.Parse(txtMileageStart.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Valor da milhagem inicial inválida");
            }

            try
            {
                pedidoLocacaoAtual.MilhagemFinal = int.Parse(txtMileageEnd.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Valor da milhagem final inválida");
            }

            try
            {
                pedidoLocacaoAtual.DataInicio = dtpStartDate.Value;
            }
            catch (FormatException)
            {
                MessageBox.Show("Data de início inválida");
            }

            try
            {
                pedidoLocacaoAtual.DataFinal = dtpEndDate.Value;
            }
            catch (FormatException)
            {
                MessageBox.Show("Data final inválida");
            }

            try
            {
                pedidoLocacaoAtual.Dias = int.Parse(txtDays.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Número de dias inválidos");
            }

            try
            {
                pedidoLocacaoAtual.TaxaAplicada = double.Parse(txtRateApplied.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Valor da taxa inválida");
            }

            pedidoLocacaoAtual.SubTotal = double.Parse(txtSubTotal.Text);

            try
            {
                pedidoLocacaoAtual.TaxaImposto = double.Parse(txtTaxRate.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Valor do imposto invlálido");
            }

            pedidoLocacaoAtual.ValorImposto = double.Parse(txtTaxAmount.Text);
            pedidoLocacaoAtual.ValorTotal   = double.Parse(txtOrderTotal.Text);
            // a ordem de locacao esta pronta

            // Pega o numero de recibo
            try
            {
                NumeroRecibo = int.Parse(txtReceiptNumber.Text);
            }
            catch (FormatException)
            {
                MessageBox.Show("Informe o número do recibo");
            }

            // Pega alisa de pedidos de locação e
            // verifica se ja existe uma locacao com o numero de recibo
            if (listaPedidosLocacao.ContainsKey(NumeroRecibo) == true)
            {
                // atualiza o valor
                listaPedidosLocacao[NumeroRecibo] = pedidoLocacaoAtual;
            }
            else
            {
                // Se não tem pedido com esse numero
                // cria um novo pedido de locação
                listaPedidosLocacao.Add(NumeroRecibo, pedidoLocacaoAtual);
            }

            // A lista de pedidos de locacao
            string     strNomeArquivo = @"C:\JcmSoft_Carros\PedidosLocacao.cro";
            FileStream bcrStream      = new FileStream(strNomeArquivo,
                                                       FileMode.Create,
                                                       FileAccess.Write,
                                                       FileShare.Write);
            BinaryFormatter bcrBinary = new BinaryFormatter();

            try
            {
                bcrBinary.Serialize(bcrStream, listaPedidosLocacao);
            }
            finally
            {
                bcrStream.Close();
            }
        }