private void btnEstornar_Click(object sender, EventArgs e)
        {
            if (dgvParcelas.CurrentRow.Index > -1)
            {
                Controller.VendaController vc       = new Controller.VendaController();
                Entidades.Pessoa           _pessoa  = new Entidades.Pessoa();
                Entidades.Parcela          parc     = new Entidades.Parcela();
                Entidades.Caixa            cx       = new Entidades.Caixa();
                Entidades.Usuario          _usuario = new Entidades.Usuario();

                double pago = 0;
                pago = Convert.ToDouble(dgvParcelas.CurrentRow.Cells[3].Value.ToString());
                if (pago > 0)
                {
                    DialogResult resulta = MessageBox.Show("Deseja realmente fazer o estorno", "caption", MessageBoxButtons.YesNo);
                    if (resulta == DialogResult.Yes)
                    {
                        int intcodc = 0, intcodp = 0;
                        int.TryParse(dgvParcelas.CurrentRow.Cells[0].FormattedValue.ToString(), out intcodc);
                        int.TryParse(dgvParcelas.CurrentRow.Cells[1].FormattedValue.ToString(), out intcodp);
                        if (intcodc > 0 && intcodp > 0)
                        {
                            DataTable dt = crc.retornaParcelaContaReceber(intcodc, intcodp);
                            if (dt != null && dt.Rows.Count > 0)
                            {
                                DataRow drParcela = dt.Rows[0];
                                parc.Codigo         = intcodp;
                                parc.DataPagamento  = Convert.ToDateTime(drParcela["parc_datapagamento"].ToString());
                                parc.DataVencimento = Convert.ToDateTime(drParcela["parc_datavencimento"].ToString());
                                parc.ValorPago      = Convert.ToDouble(drParcela["parc_valorpago"].ToString());
                                parc.ValorReceber   = Convert.ToDouble(drParcela["parc_valor"].ToString());

                                DataTable dtCaixa = new Controller.CaixaController().retornacaixaAbetoDia();
                                if (dtCaixa != null && dtCaixa.Rows.Count > 0)
                                {
                                    DataRow drCaixa = dtCaixa.Rows[0];
                                    cx.CodCaixa       = Convert.ToInt32(drCaixa["codcaixa"].ToString());
                                    cx.DataAbertura   = Convert.ToDateTime(drCaixa["caixa_datahoraabertura"].ToString());
                                    cx.DataFechamento = Convert.ToDateTime(drCaixa["caixa_datahorafecha"].ToString());
                                    cx.SaldoInicial   = Convert.ToDouble(drCaixa["caixa_saldoinicial"].ToString());
                                    cx.Troco          = Convert.ToDouble(drCaixa["caixa_troco"].ToString());
                                    cx.TotalEntrada   = Convert.ToDouble(drCaixa["caixa_totalentra"].ToString());
                                    cx.TotalSaida     = Convert.ToDouble(drCaixa["caixa_totalsaida"].ToString());
                                    DataTable dtP = new Controller.PessoaController().retornaPessoaCod(drCaixa["codpessoa"].ToString());
                                    if (dtP != null && dtP.Rows.Count > 0)
                                    {
                                        DataRow drPessoa = dtP.Rows[0];
                                        _pessoa.Codigo       = Convert.ToInt32(drPessoa["codpessoa"].ToString());
                                        _pessoa.Nome         = drPessoa["pes_nome"].ToString();
                                        _pessoa.DataCadastro = Convert.ToDateTime(drPessoa["pes_datacadastro"].ToString());
                                        _pessoa.TipoPessoa   = drPessoa["pes_tipopessoa"].ToString();
                                        _pessoa.StatusPessoa = Convert.ToBoolean(drPessoa["pes_statuspessoa"].ToString());
                                        _pessoa.Observacao   = drPessoa["pes_obs"].ToString();
                                        _pessoa.Fiado        = Convert.ToBoolean(drPessoa["pes_fiado"].ToString());
                                        _pessoa.Email        = drPessoa["pes_email"].ToString();
                                        _pessoa.Telefone     = drPessoa["pes_fone"].ToString();
                                        _pessoa.Celular      = drPessoa["pes_cel"].ToString();
                                    }
                                    cx.Pessoa = _pessoa;
                                    DataTable dtUsuario = new Controller.UsuarioController().retornaObjUsuario(Convert.ToInt32(drCaixa["codusuario"].ToString()));
                                    if (dtUsuario != null && dtUsuario.Rows.Count > 0)
                                    {
                                        DataRow drUsuario = dtUsuario.Rows[0];
                                        _usuario.UsuarioCodigo = Convert.ToInt32(drUsuario["codusuario"].ToString());
                                        _usuario.Login         = drUsuario["usu_usuario"].ToString();
                                        _usuario.Senha         = drUsuario["usu_senha"].ToString();
                                        _usuario.Nivel         = Convert.ToInt32(drUsuario["usu_nivel"].ToString());
                                    }
                                    cx.Usuario = _usuario;
                                }
                                parc.Caixa = cx;
                            }

                            parc.ValorPago     = 0;
                            parc.DataPagamento = DateTime.MinValue;
                            parc.Forma         = new Entidades.FormaPagamento();

                            int res = crc.realizarRecebimento(parc, intcodc);
                            if (res > 0)
                            {
                                int tes = crc.atualizaStatus(intcodc, "aberta");
                                if (tes > 0)
                                {
                                    int cod = crc.retornaVenda(intcodc);
                                    int p   = vc.atualizaStatus(cod, "aberta");
                                    if (p > 0)
                                    {
                                        MessageBox.Show("Valor estornado com sucesso!");
                                        limpaCampos();
                                    }
                                }
                                else
                                {
                                    MessageBox.Show("Erro ao realizar estorno!");
                                }
                            }
                            else
                            {
                                MessageBox.Show("Erro ao realizar estorno!");
                            }
                        }
                    }
                }
            }
        }
        private void carregaTela(int codD, int codP)
        {
            Controller.ContasReceberController crc  = new Controller.ContasReceberController();
            Controller.PessoaController        pc   = new Controller.PessoaController();
            Controller.VendaController         vc   = new Controller.VendaController();
            Controller.ComissaoController      cmc  = new Controller.ComissaoController();
            Controller.PacoteController        pacc = new Controller.PacoteController();
            Controller.AgendaController        agc  = new Controller.AgendaController();

            Entidades.ContasReceber  cr       = new Entidades.ContasReceber();
            Entidades.Pessoa         _pessoa  = new Entidades.Pessoa();
            Entidades.Caixa          cx       = new Entidades.Caixa();
            Entidades.Parcela        parc     = new Entidades.Parcela();
            Entidades.FormaPagamento forma    = new Entidades.FormaPagamento();
            Entidades.Venda          venda    = new Entidades.Venda();
            Entidades.Comissao       cm       = new Entidades.Comissao();
            Entidades.Contrato       ct       = new Entidades.Contrato();
            Entidades.Usuario        _usuario = new Entidades.Usuario();

            DataTable dtContaRec = crc.retornaContasCod(codD);

            if (dtContaRec != null && dtContaRec.Rows.Count > 0)
            {
                DataRow drContasRec = dtContaRec.Rows[0];
                cr.Codigo           = Convert.ToInt32(drContasRec["codcontareceber"].ToString());
                cr.DtVencimento     = Convert.ToDateTime(drContasRec["contrec_datavencimento"].ToString());
                cr.ValorTotal       = Convert.ToDouble(drContasRec["contrec_valortotal"].ToString());
                cr.Obs              = drContasRec["contrec_obs"].ToString();
                cr.CodigoFechamento = Convert.ToInt32(drContasRec["codfiado"].ToString());

                DataTable dtPessoa = pc.retornaPessoaCod(drContasRec["codpessoa"].ToString());
                if (dtPessoa != null && dtPessoa.Rows.Count > 0)
                {
                    DataRow drPessoa = dtPessoa.Rows[0];
                    _pessoa.Codigo       = Convert.ToInt32(drPessoa["codpessoa"].ToString());
                    _pessoa.Nome         = drPessoa["pes_nome"].ToString();
                    _pessoa.DataCadastro = Convert.ToDateTime(drPessoa["pes_datacadastro"].ToString());
                    _pessoa.TipoPessoa   = drPessoa["pes_tipopessoa"].ToString();
                    _pessoa.StatusPessoa = Convert.ToBoolean(drPessoa["pes_statuspessoa"].ToString());
                    _pessoa.Observacao   = drPessoa["pes_obs"].ToString();
                    _pessoa.Fiado        = Convert.ToBoolean(drPessoa["pes_fiado"].ToString());
                    _pessoa.Email        = drPessoa["pes_email"].ToString();
                    _pessoa.Telefone     = drPessoa["pes_fone"].ToString();
                    _pessoa.Celular      = drPessoa["pes_cel"].ToString();
                }
                cr.Pessoaf      = _pessoa;
                ttbCliente.Text = _pessoa.Nome;

                DataTable dtVenda = vc.retornaVendaCod(Convert.ToInt32(drContasRec["codvenda"].ToString()));
                if (dtVenda != null && dtVenda.Rows.Count > 0)
                {
                    DataRow drVenda = dtVenda.Rows[0];
                    venda.Codigo           = Convert.ToInt32(drVenda["codvenda"].ToString());
                    venda.Data             = Convert.ToDateTime(drVenda["vend_datavenda"].ToString());
                    venda.Situacao         = drVenda["vend_situacao"].ToString();
                    venda.ValorTotal       = Convert.ToDouble(drVenda["vend_valortotal"].ToString());
                    venda.Observacao       = drVenda["vend_obs"].ToString();
                    venda.CodigoFechamento = Convert.ToInt32(drVenda["codfechamento"].ToString());
                    venda.Pessoa           = _pessoa;
                    this.codVenda          = venda.Codigo;
                    this.codFechamento     = venda.CodigoFechamento;
                }
                cr.Venda = venda;
                DataTable dtProdutosVenda = vc.retornaProdutos(venda.Codigo);
                // carregaGridProduto(dtProdutosVenda);

                DataTable dtComissao = cmc.retornaComissao(Convert.ToInt32(drContasRec["codcomissao"].ToString()));
                if (dtComissao != null && dtComissao.Rows.Count > 0)
                {
                    DataRow drComissao = dtComissao.Rows[0];
                    cm.CodigoComissao  = Convert.ToInt32(drComissao["codcomissao"].ToString());
                    cm.DataPagamento   = Convert.ToDateTime(drComissao["comis_datapagamento"].ToString());
                    cm.ValorTotal      = Convert.ToDouble(drComissao["comis_valortotal"].ToString());
                    cm.ValorPago       = Convert.ToDouble(drComissao["comis_valorpago"].ToString());
                    cm.ValorDevolver   = Convert.ToDouble(drComissao["comis_valordevedor"].ToString());
                    cm.StatusComissao  = drComissao["comis_statuscomissao"].ToString();
                    cm.StatusPagamento = drComissao["comis_statuspagamento"].ToString();
                }
                cr.Comissao = cm;
                cr.Contrato = ct;
                List <Entidades.Parcela> lista = new List <Entidades.Parcela>();
                DataTable dtParcela            = crc.retornaParcelaContaReceber(codD, codP);
                if (dtParcela != null && dtParcela.Rows.Count > 0)
                {
                    DataRow drParcela = dtParcela.Rows[0];
                    parc.Codigo         = codP;
                    parc.DataPagamento  = Convert.ToDateTime(drParcela["parc_datapagamento"].ToString());
                    parc.DataVencimento = Convert.ToDateTime(drParcela["parc_datavencimento"].ToString());
                    parc.ValorPago      = Convert.ToDouble(drParcela["parc_valorpago"].ToString());
                    parc.ValorReceber   = Convert.ToDouble(drParcela["parc_valor"].ToString());

                    DataTable dtCaixa = new Controller.CaixaController().retornacaixaAbetoDia();
                    if (dtCaixa != null && dtCaixa.Rows.Count > 0)
                    {
                        DataRow drCaixa = dtCaixa.Rows[0];
                        cx.CodCaixa       = Convert.ToInt32(drCaixa["codcaixa"].ToString());
                        cx.DataAbertura   = Convert.ToDateTime(drCaixa["caixa_datahoraabertura"].ToString());
                        cx.DataFechamento = Convert.ToDateTime(drCaixa["caixa_datahorafecha"].ToString());
                        cx.SaldoInicial   = Convert.ToDouble(drCaixa["caixa_saldoinicial"].ToString());
                        cx.Troco          = Convert.ToDouble(drCaixa["caixa_troco"].ToString());
                        cx.TotalEntrada   = Convert.ToDouble(drCaixa["caixa_totalentra"].ToString());
                        cx.TotalSaida     = Convert.ToDouble(drCaixa["caixa_totalsaida"].ToString());
                        DataTable dtP = new Controller.PessoaController().retornaPessoaCod(drCaixa["codpessoa"].ToString());
                        if (dtP != null && dtP.Rows.Count > 0)
                        {
                            _pessoa = new Entidades.Pessoa();
                            DataRow drPessoa = dtPessoa.Rows[0];
                            _pessoa.Codigo       = Convert.ToInt32(drPessoa["codpessoa"].ToString());
                            _pessoa.Nome         = drPessoa["pes_nome"].ToString();
                            _pessoa.DataCadastro = Convert.ToDateTime(drPessoa["pes_datacadastro"].ToString());
                            _pessoa.TipoPessoa   = drPessoa["pes_tipopessoa"].ToString();
                            _pessoa.StatusPessoa = Convert.ToBoolean(drPessoa["pes_statuspessoa"].ToString());
                            _pessoa.Observacao   = drPessoa["pes_obs"].ToString();
                            _pessoa.Fiado        = Convert.ToBoolean(drPessoa["pes_fiado"].ToString());
                            _pessoa.Email        = drPessoa["pes_email"].ToString();
                            _pessoa.Telefone     = drPessoa["pes_fone"].ToString();
                            _pessoa.Celular      = drPessoa["pes_cel"].ToString();
                        }
                        cx.Pessoa = _pessoa;
                        DataTable dtUsuario = new Controller.UsuarioController().retornaObjUsuario(Convert.ToInt32(drCaixa["codusuario"].ToString()));
                        if (dtUsuario != null && dtUsuario.Rows.Count > 0)
                        {
                            DataRow drUsuario = dtUsuario.Rows[0];
                            _usuario.UsuarioCodigo = Convert.ToInt32(drUsuario["codusuario"].ToString());
                            _usuario.Login         = drUsuario["usu_usuario"].ToString();
                            _usuario.Senha         = drUsuario["usu_senha"].ToString();
                            _usuario.Nivel         = Convert.ToInt32(drUsuario["usu_nivel"].ToString());
                        }
                        cx.Usuario = _usuario;
                    }
                    parc.Caixa = cx;

                    DataTable dtForma = new Controller.PagamentoController().retornaObjFormaPagamento(Convert.ToInt32(drParcela["codformapag"].ToString()));
                    if (dtForma != null && dtForma.Rows.Count > 0)
                    {
                        if (dtForma != null && dtForma.Rows.Count > 0)
                        {
                            DataRow drForma = dtForma.Rows[0];
                            forma.Codigo = Convert.ToInt32(drForma["codformapag"].ToString());
                            forma.Forma  = drForma["formpag_descricao"].ToString();
                        }
                    }
                    parc.Forma = forma;
                    lista.Add(parc);
                    this.listaparcela = lista;
                    this.parct        = parc;
                    this.codConta     = cr.Codigo;
                }
                cr.Lista = lista;
                DataTable dtServicos = agc.retornaServicosCliente(cr.Pessoaf.Codigo);
                if (dtServicos != null && dtServicos.Rows.Count > 0)
                {
                    convertLista(dtServicos);
                    //carregaGridServico(dtServicos);
                }
                mskSubtotal.Text = somaSubtotal(dtServicos) + this.parct.ValorReceber + "";
                mskSubtotal.Text = Convert.ToDouble(mskSubtotal.Text).ToString("###,###,##0.00");

                mskTotal.Text = somaSubtotal(dtServicos) + this.parct.ValorReceber + "";
                mskTotal.Text = Convert.ToDouble(mskTotal.Text).ToString("###,###,##0.00");

                mskRecebido.Text = "0.00";
                mskRestante.Text = "0.00";
                mskTroco.Text    = "0.00";
            }
        }