public ActionResult Receber(int id, ContaReceber contaReceber)
        {
            if (contaReceber.ContaReceberID != id || contaReceber == null)
            {
                return(NotFound());
            }

            try
            {
                if (ModelState.IsValid)
                {
                    ContaReceberService service = new ContaReceberService();
                    service.Receber(contaReceber);
                    _contas.Atualizar(contaReceber);

                    var contaRecberAux = _contas.ObterPorId(id);

                    Lancamento lancamento = new Lancamento();
                    service.GerarLancamento(lancamento, contaRecberAux);
                    _lancamento.Inserir(lancamento);

                    return(RedirectToAction(nameof(Index)));
                }
                CarregarContaContabil();
                return(View(contaReceber));
            }
            catch (Exception ex)
            {
                Mensagem = ex.Message.ToString();
                ModelState.AddModelError(String.Empty, Mensagem);
                CarregarContaContabil();
                return(View(contaReceber));
            }
        }
        public ActionResult TransferirValores(DateTime txtData, int txtOrigem, int txtDestino, decimal txtValor, string txtDescricao, string txtObservacao)
        {
            try
            {
                var saldoContaOrigem = VerificarSaldoContaOrigem(txtOrigem);

                if (txtValor > saldoContaOrigem)
                {
                    throw new ArgumentException("Saldo insuficiente. Seu saldo na conta origem é de " + saldoContaOrigem.ToString("C"));
                }

                LancamentoService service = new LancamentoService();
                service.ValidarTransferencia(txtData, txtOrigem, txtDestino, txtValor, txtDescricao, txtObservacao);

                #region DEBITANDO A CONTA ORIGEM
                Lancamento lancamentoDebitar = new Lancamento();
                lancamentoDebitar.DataCadastro        = DateTime.Now;
                lancamentoDebitar.DataLancamento      = txtData;
                lancamentoDebitar.ContaContabilID     = txtOrigem;
                lancamentoDebitar.TipoLancamento      = TipoLancamento.Debito;
                lancamentoDebitar.Valor               = txtValor;
                lancamentoDebitar.Descricao           = txtDescricao;
                lancamentoDebitar.CategoriaID         = null;
                lancamentoDebitar.CentroCustoID       = null;
                lancamentoDebitar.ClienteID           = null;
                lancamentoDebitar.DataExclusao        = null;
                lancamentoDebitar.EmpresaID           = Convert.ToInt32(User.FindFirst(ClaimTypes.GroupSid).Value);
                lancamentoDebitar.FlagAtivo           = true;
                lancamentoDebitar.isContaPagarReceber = false;
                lancamentoDebitar.isTransferencia     = true;
                lancamentoDebitar.FornecedorID        = null;
                lancamentoDebitar.Nome            = "Transferência entre contas";
                lancamentoDebitar.NumeroDocumento = new Random().Next(1000000000);
                lancamentoDebitar.Observacoes     = txtObservacao;

                _lancamento.Inserir(lancamentoDebitar);
                #endregion

                #region CREDITANDO A CONTA DESTINO
                Lancamento lancamentoCreditar = new Lancamento();
                lancamentoCreditar.DataCadastro        = DateTime.Now;
                lancamentoCreditar.DataLancamento      = txtData;
                lancamentoCreditar.ContaContabilID     = txtDestino;
                lancamentoCreditar.TipoLancamento      = TipoLancamento.Credito;
                lancamentoCreditar.Valor               = txtValor;
                lancamentoCreditar.Descricao           = txtDescricao;
                lancamentoCreditar.CategoriaID         = null;
                lancamentoCreditar.CentroCustoID       = null;
                lancamentoCreditar.ClienteID           = null;
                lancamentoCreditar.DataExclusao        = null;
                lancamentoCreditar.EmpresaID           = Convert.ToInt32(User.FindFirst(ClaimTypes.GroupSid).Value);
                lancamentoCreditar.FlagAtivo           = true;
                lancamentoCreditar.isContaPagarReceber = false;
                lancamentoCreditar.isTransferencia     = true;
                lancamentoCreditar.FornecedorID        = null;
                lancamentoCreditar.Nome            = "Transferência entre contas";
                lancamentoCreditar.NumeroDocumento = new Random().Next(1000000000);
                lancamentoCreditar.Observacoes     = txtObservacao;

                _lancamento.Inserir(lancamentoCreditar);
                #endregion

                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception ex)
            {
                Mensagem = ex.Message.ToString();
                ModelState.AddModelError(String.Empty, Mensagem);
                CarregarContaContabil();
                return(View());
            }
        }