예제 #1
0
        // Usuario escolhe o investimento com valor pré-estabelecido na lista
        public void AplicarInvestimento(Investimento investimento)
        {
            // Inserir na lista da contaContabil, e na lista de transações, e fazer as relações bilaterais
            // Se saldo for suficiente, instanciar uma Transação de aplicação(p/ extrato) e incluir na lista de transações o investimento em si
            if (SaldoSuficiente(investimento.ValorInicial))
            {
                investimento.Status = "Aplicado";
                investimento.Conta  = this;
                Transacoes.Add(investimento);
                investimento.ContaContabil = BancoProp.ContaInvestimento;
                investimento.ContaContabil.Investimentos.Add(investimento);
                investimento.Valor = investimento.ValorInicial;

                Transacao t = new Transacao()
                {
                    Tipo      = "Aplicação",
                    Conta     = this,
                    Valor     = -investimento.ValorInicial,
                    Data      = DateTime.Today,
                    Descricao = "Aplicação feita no investimento '" + investimento.Descricao + "'"
                };
                Transacoes.Add(t);
                Saldo -= investimento.ValorInicial;
            }
        }
        public void Salvar()
        {
            if (_transacoes == null)
            {
                return;
            }

            var gerenciarTransacao = !EmTransacao;

            if (gerenciarTransacao)
            {
                IniciarTransacao();
            }

            try
            {
                Transacoes.Salvar();
                if (gerenciarTransacao)
                {
                    ConfirmarTransacao();
                }
            }
            catch
            {
                if (gerenciarTransacao)
                {
                    CancelarTransacao();
                }
                throw;
            }
        }
예제 #3
0
        // Transferência para outra conta, também sujeito a checagem de saldo
        public void Transferir(double valor, ContaCorrente favorecido)
        {
            if (SaldoSuficiente(valor))
            {
                DateTime      data          = DateTime.Now;
                Transferencia transferencia = new Transferencia()
                {
                    Valor      = -valor,
                    Conta      = this,
                    Data       = data,
                    Tipo       = "Transferência",
                    Descricao  = "Transferência realizada para a conta: " + favorecido.Numero + " Proprietário: " + favorecido.ClienteProp.Nome,
                    Favorecido = favorecido
                };
                Transacoes.Add(transferencia);
                Transferencia transferido = new Transferencia()
                {
                    Valor     = valor,
                    Conta     = favorecido,
                    Data      = data,
                    Tipo      = "Transferência",
                    Descricao = "Transferência recebida da conta:" + this.Numero + " Proprietário: " + this.ClienteProp.Nome
                };
                favorecido.Transacoes.Add(transferido);

                // Atualizar saldos
                Saldo            -= valor;
                favorecido.Saldo += valor;
            }
        }
예제 #4
0
        public void Incluir(Transacoes t)
        {
            try
            {
                objCon.conn.Open();
                StringBuilder query = new StringBuilder();
                query.AppendLine("INSERT INTO tbTransacoes (ContaIdOrigem, ContaIdDestino, TipoTransacao, Valor, Data, AporteId) ")
                .AppendLine("VALUES(@ContaIdOrigem, @ContaIdDestino, @TipoTransacao, @Valor, DATE('now'), @AporteId) ");

                using (SQLiteCommand cmd = new SQLiteCommand(query.ToString(), objCon.conn))
                {
                    cmd.Parameters.AddWithValue("@ContaIdOrigem", (t.TipoTransacao == (int)Transacoes.enuTipoTransacao.Aporte ? null : t.ContaIdOrigem));
                    cmd.Parameters.AddWithValue("@ContaIdDestino", t.ContaIdDestino);
                    cmd.Parameters.AddWithValue("@TipoTransacao", t.TipoTransacao);
                    cmd.Parameters.AddWithValue("@Valor", t.Valor);
                    cmd.Parameters.AddWithValue("@AporteId", t.AporteId);
                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (objCon.conn.State == System.Data.ConnectionState.Open)
                {
                    objCon.conn.Close();
                }
            }
        }
        public async Task <IActionResult> Edit(int id, [Bind("ID,AdquirenteId,CodigoCliente,DataTransacao,HoraTransacao,NumeroCartao,CodigoAutorizacao,NSU,BandeiraId,ValorBruto,TaxaAdmin,ValorLiquido")] Transacoes transacoes)
        {
            if (id != transacoes.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(transacoes);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TransacoesExists(transacoes.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["AdquirenteId"] = new SelectList(_context.Set <Adquirente>(), "Id", "Id", transacoes.AdquirenteId);
            ViewData["BandeiraId"]   = new SelectList(_context.Set <Bandeira>(), "Id", "Id", transacoes.BandeiraId);
            return(View(transacoes));
        }
예제 #6
0
        public async Task <IActionResult> PutTransacoes(int id, Transacoes transacoes)
        {
            if (id != transacoes.ID)
            {
                return(BadRequest());
            }

            _context.Entry(transacoes).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TransacoesExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public HttpResponseMessage Post(Transacoes t)
        {
            try
            {
                if (ModelState.IsValid && t != null)
                {
                    HttpStatusCode httpStatus = HttpStatusCode.OK;
                    string         msg        = tBusiness.MovimentacaoContas(t);
                    if (msg.Length <= 0)
                    {
                        msg = "Registro cadastrado com sucesso!";
                    }
                    else
                    {
                        httpStatus = HttpStatusCode.BadRequest;
                    }

                    var response = new HttpResponseMessage(httpStatus)
                    {
                        Content = new StringContent(msg)
                    };
                    return(response);
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Ocorreu um erro. Por favor verifique os dados enviados."));
                }
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
예제 #8
0
        public SaqueViewModel Sacar(SaqueViewModel saqueViewModel)
        {
            var conta = _contaRepository.ObterPorId(saqueViewModel.Id);

            Transacoes transacoes = new Transacoes(saqueViewModel.ValorSaque, TipoTransacao.Saque, conta.Id);

            transacoes.Conta = conta;
            var contaRet = _contaService.Sacar(conta, transacoes);

            saqueViewModel = Mapper.Map <SaqueViewModel>(contaRet);
            if (contaRet.ValidationResult.IsValid)
            {
                _transacaoService.Adicionar(transacoes);
            }
            else
            {
                contaRet.ValidationResult.Message = "Ocorreu um erro ao sacar!";
                return(Mapper.Map <SaqueViewModel>(contaRet));
            }

            if (transacoes.ValidationResult.IsValid)
            {
                Commit();
                contaRet.ValidationResult.Message = "Saque realizado com sucesso!";
            }

            return(Mapper.Map <SaqueViewModel>(contaRet));
        }
예제 #9
0
        public DepositoViewModel Depositar(DepositoViewModel depositoViewModel)
        {
            var conta = _contaRepository.ObterPorId(depositoViewModel.Id);

            Transacoes transacoes = new Transacoes(depositoViewModel.ValorDeposito, TipoTransacao.Deposito, conta.Id);

            var contaRet = _contaService.Depositar(conta, transacoes);

            if (contaRet.ValidationResult.IsValid)
            {
                _transacaoService.Adicionar(transacoes);
            }
            else
            {
                contaRet.ValidationResult.Message = "Ocorreu um erro ao depositar!";
                return(Mapper.Map <DepositoViewModel>(contaRet));
            }


            if (transacoes.ValidationResult.IsValid)
            {
                Commit();
                contaRet.ValidationResult.Message = "Deposito realizado com sucesso!";
            }

            depositoViewModel = Mapper.Map <DepositoViewModel>(contaRet);

            return(depositoViewModel);
        }
예제 #10
0
        public List <Transacoes> buscaVendas(MySqlCommand cmd)
        {
            List <Transacoes> lstVendas = new List <Transacoes>();

            Abrir();
            MySqlDataReader reader = Pesquisar(cmd);

            while (reader.Read())
            {
                Transacoes ts = new Transacoes();
                ts.id             = reader.GetInt32(0);
                ts.transacao      = reader.GetInt32(1);
                ts.id_Cliente     = Convert.ToInt32(reader.GetString(2));
                ts.cliente        = reader.GetString(3);
                ts.formaPagamento = reader.GetString(4);
                ts.totalCompra    = reader.GetString(5);
                ts.operador       = reader.GetString(6);
                ts.dataInicio     = reader.GetString(7);
                ts.dataFim        = reader.GetString(8);

                lstVendas.Add(ts);
            }
            Fechar();
            return(lstVendas);
        }
예제 #11
0
        public async Task <ActionResult <Transacoes> > PostTransacoes(Transacoes transacoes)
        {
            _context.Transacoes.Add(transacoes);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetTransacoes", new { id = transacoes.ID }, transacoes));
        }
예제 #12
0
        public void Saque(int idContaOrgem, decimal valor)
        {
            var conta     = contaServicoAplicacao.Recuperar(idContaOrgem);
            var transacao = new Transacoes(conta, TipoTransacao.Saque, valor);

            transacao.FazerSaque();
            Salvar(transacao);
        }
예제 #13
0
 public void Limpar()
 {
     Transacoes.Limpar();
     foreach (var nome in Repositorios.Keys)
     {
         (Repositorios[nome] as IRepositorioObject).Limpar();
     }
 }
예제 #14
0
 public void Excluir(Transacoes entidade)
 {
     using (var uow = UoWFactory.Create())
     {
         transacoesRepositorio.Excluir(entidade);
         uow.Commit();
     }
 }
예제 #15
0
        public Transacoes ConsultarTransacao(int?transacaoId, string aporteId = "")
        {
            try
            {
                objCon.conn.Open();
                StringBuilder query = new StringBuilder();
                query.AppendLine("SELECT TransacaoId, ContaIdOrigem, ContaIdDestino, TipoTransacao, Valor, Data, AporteId")
                .AppendLine("FROM tbTransacoes ");

                if (transacaoId != null)
                {
                    query.AppendLine("WHERE TransacaoId = @TransacaoId ");
                }
                else if (aporteId.Length > 0)
                {
                    query.AppendLine("WHERE AporteId = @AporteId ");
                }

                Transacoes retorno = new Transacoes();

                using (SQLiteCommand cmd = new SQLiteCommand(query.ToString(), objCon.conn))
                {
                    if (transacaoId != null)
                    {
                        cmd.Parameters.AddWithValue("@TransacaoId", transacaoId);
                    }
                    else if (aporteId.Length > 0)
                    {
                        cmd.Parameters.AddWithValue("@AporteId", aporteId);
                    }

                    using (SQLiteDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            retorno.TransacaoId    = Convert.ToInt32(dr["TransacaoId"]);
                            retorno.ContaIdOrigem  = (dr["ContaIdOrigem"] != DBNull.Value ? Convert.ToInt32(dr["ContaIdOrigem"].ToString()) : default(int?));
                            retorno.ContaIdDestino = Convert.ToInt32(dr["ContaIdDestino"].ToString());
                            retorno.TipoTransacao  = Convert.ToInt32(dr["TipoTransacao"]);
                            retorno.Valor          = Convert.ToDecimal(dr["Valor"]);
                            retorno.Data           = dr["Data"].ToString();
                            retorno.AporteId       = dr["AporteId"].ToString();
                        }
                    }
                }

                return(retorno);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                objCon.conn.Close();
            }
        }
예제 #16
0
        public Conta Depositar(Conta conta, Transacoes transacao)
        {
            conta.Depositar(transacao);
            if (!conta.IsValid() || !transacao.IsValid())
            {
                return(conta);
            }

            return(!conta.ValidationResult.IsValid ? conta : _contaRepository.Atualizar(conta));
        }
예제 #17
0
 // Realiza a solicitação de um empréstimo
 public void SolicitarEmprestimo(Emprestimo emprestimo)
 {
     // Adicionar na lista da conta contábil e de transacoes da conta
     // Atualizar saldo
     // Na tela de execução, instanciar o Emprestimo com valor, forma de pagamento lido das boxes, etc
     emprestimo.Conta = this;
     emprestimo.GerarParcelas();
     Saldo += emprestimo.Valor;
     Transacoes.Add(emprestimo);
     BancoProp.ContaEmprestimo.Emprestimos.Add(emprestimo);
 }
예제 #18
0
        public void Transferencia(int idContaOrgem, int idContaDestino, decimal valor)
        {
            var origem  = contaServicoAplicacao.Recuperar(idContaOrgem);
            var destino = contaServicoAplicacao.Recuperar(idContaDestino);

            var transacao = new Transacoes(origem, TipoTransacao.Saque, valor);

            transacao.AdicionarContaDestino(destino);
            transacao.FazerTransferencia();
            Salvar(transacao);
        }
        public async Task <IActionResult> Create([Bind("ID,AdquirenteId,CodigoCliente,DataTransacao,HoraTransacao,NumeroCartao,CodigoAutorizacao,NSU,BandeiraId,ValorBruto,TaxaAdmin,ValorLiquido")] Transacoes transacoes)
        {
            if (ModelState.IsValid)
            {
                _context.Add(transacoes);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["AdquirenteId"] = new SelectList(_context.Set <Adquirente>(), "Id", "Id", transacoes.AdquirenteId);
            ViewData["BandeiraId"]   = new SelectList(_context.Set <Bandeira>(), "Id", "Id", transacoes.BandeiraId);
            return(View(transacoes));
        }
예제 #20
0
        public Conta Sacar(Conta conta, Transacoes transacao)
        {
            conta.Sacar(transacao);
            if (!conta.IsValid() || !transacao.IsValid())
            {
                return(conta);
            }

            conta.ValidationResult = new SaqueEstaConsistenteValidation(_contaRepository, _transacoesRepository).Validate(transacao);


            return(!conta.ValidationResult.IsValid ? conta : _contaRepository.Atualizar(conta));
        }
예제 #21
0
        // Depósito na conta
        public void Depositar(double valor)
        {
            Deposito deposito = new Deposito()
            {
                Valor     = valor,
                Conta     = this,
                Data      = DateTime.Now,
                Tipo      = "Depósito",
                Descricao = "Depósito realizado"
            };

            Transacoes.Add(deposito);
            // Guardar a transação para extrato
            Saldo += valor;
        }
예제 #22
0
        public Transacoes concluirCompra(String tipo)
        {
            Transacoes ts = new Transacoes();

            ts.transacao      = Convert.ToInt32(lbTransacao.Text);
            ts.id_Cliente     = Convert.ToInt32(lblIdentificacaoCliente.Text);
            ts.cliente        = richTextCliente.Text;
            ts.formaPagamento = tipo;
            ts.totalCompra    = richTextTotal.Text;
            ts.operador       = "teste"; //deve ser imprementado seguranca user
            ts.dataInicio     = dateTimePicker1.Text;
            ts.dataFim        = DateTime.Now.ToString("yyyy-MM-dd");

            return(ts);
        }
예제 #23
0
        public void saveVendaDinheiroCartao(Transacoes t, DataTable compra, String tr)
        {
            MySqlCommand cmd = new MySqlCommand("BEGIN; insert into transacoes values (default," +
                                                " @transacao, @id_Cliente, @cliente, @formaPagamento, @totalCompra, @operador, @dataInicio, @dataFim); " +
                                                " COMMIT;");

            cmd.Parameters.AddWithValue("@transacao", t.transacao);
            cmd.Parameters.AddWithValue("@id_Cliente", t.id_Cliente);
            cmd.Parameters.AddWithValue("@cliente", t.cliente);
            cmd.Parameters.AddWithValue("@formaPagamento", t.formaPagamento);
            cmd.Parameters.AddWithValue("@totalCompra", t.totalCompra);
            cmd.Parameters.AddWithValue("@operador", t.operador);
            cmd.Parameters.AddWithValue("@dataInicio", t.dataInicio);
            cmd.Parameters.AddWithValue("@dataFim", t.dataFim);

            ConexaoVendas c = new ConexaoVendas();

            c.Abrir();
            c.Executar(cmd);
            c.Fechar();

            for (int i = 0; i < compra.Rows.Count; i++)
            {
                c.Abrir();
                MySqlCommand cmd1 = new MySqlCommand("begin; insert into produtosCompra values (default," +
                                                     " @transacao, @ean, @produto, @quantidade, @desconto, @acrescimo, @preco, @custo, (select id from transacoes where transacao = " + t.transacao + ")); commit;");


                cmd1.Parameters.AddWithValue("@transacao", t.transacao);
                cmd1.Parameters.AddWithValue("@ean", compra.Rows[i]["ID"].ToString());
                cmd1.Parameters.AddWithValue("@produto", compra.Rows[i]["PRODUTO"].ToString());
                cmd1.Parameters.AddWithValue("@quantidade", compra.Rows[i]["QTD"].ToString());
                cmd1.Parameters.AddWithValue("@desconto", compra.Rows[i]["DESCONTO"].ToString());
                cmd1.Parameters.AddWithValue("@acrescimo", compra.Rows[i]["ACRESCIMO"].ToString());
                cmd1.Parameters.AddWithValue("@preco", compra.Rows[i]["PRECO UN"].ToString());
                cmd1.Parameters.AddWithValue("@custo", buscaCusto(Convert.ToInt32(compra.Rows[i]["ID"])));
                c.Executar(cmd1);
                c.Fechar();
            }

            if (t.formaPagamento == "Carteira")
            {
                saveCarteira(t, compra, tr);
            }

            MessageBox.Show("Operação concluida com ÊXITO!");
        }
예제 #24
0
        public void QuandoSacarUmValorDe(int p0)
        {
            var repoConta     = new Mock <IContaRepository>();
            var repoTransacao = new Mock <ITransacoesRepository>();

            transacao       = new Transacoes(p0, Enuns.TipoTransacao.Saque, conta.Id);
            transacao.Conta = conta;

            repoTransacao.Setup(r => r.Buscar(It.IsAny <Expression <Func <Transacoes, bool> > >()))
            .Returns <Expression <Func <Transacoes, bool> > >(pred => transacoes.Where(pred.Compile()));

            var contaService = new ContaService(repoConta.Object, repoTransacao.Object);

            contaService.Sacar(conta, transacao);
            transacao.Valor = transacao.Valor * -1;
            transacoes.Add(transacao);
        }
예제 #25
0
        }                                    // Banco para vincular as contas contábeis nas aplicações, resgates, solicitações de empréstimo e etc

        // Saque de valor se houver saldo suficiente
        public void Sacar(double valor)
        {
            if (SaldoSuficiente(valor))
            {
                Saque saque = new Saque()
                {
                    Valor     = -valor,
                    Conta     = this,
                    Data      = DateTime.Now,
                    Tipo      = "Saque",
                    Descricao = "Saque realizado"
                };
                Transacoes.Add(saque);
                // Guardar o saque na tabela de transacoes/saques no banco
                Saldo -= valor;
            }
        }
예제 #26
0
        public Transacoes Adicionar(Transacoes transacoes)
        {
            if (!transacoes.IsValid())
            {
                return(transacoes);
            }

            if (transacoes.ValidationResult.IsValid)
            {
                if (transacoes.TipoTransacao == Enuns.TipoTransacao.Saque)
                {
                    transacoes.Valor = transacoes.Valor * -1;
                }
                return(_transacoesRepository.Adicionar(transacoes));
            }

            return(transacoes);
        }
예제 #27
0
 public async Task AddTransacoes(Transacoes transacao)
 {
     using (IDbConnection conn = Connection)
     {
         try
         {
             conn.Execute(@"insert Transacoes (Descricao)
                             values (@Descricao)", transacao);
         }
         catch (Exception ex)
         {
             throw ex;
         }
         finally
         {
             //con.Close();
         }
     }
 }
예제 #28
0
        public async Task <ActionResult <Transacoes> > Post([FromBody] string value)
        {
            try
            {
                var transacao = new Transacoes()
                {
                    Descricao = value
                };

                await _transacoesRepository.AddTransacoes(transacao);

                return(Ok());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(BadRequest(ex.Message));
            }
        }
예제 #29
0
 // Resgata o valor integral do investimento
 public void ResgatarInvestimento(Investimento investimento)
 {
     // Não precisa remover da lista da ContaContabil, status resgatado na lista Transacoes
     // Ações de rendimento ficam na classe de Investimento em si
     if (investimento.Status.Equals("Aplicado"))
     {
         investimento.Status = "Resgatado";
         investimento.Valor  = Math.Round(investimento.ValorInicial + investimento.CalcularRendimentoFinal(), 2);
         Transacao t = new Transacao()
         {
             Tipo      = "Resgate",
             Conta     = this,
             Valor     = investimento.Valor,
             Data      = DateTime.Today,
             Descricao = "Resgate do investimento '" + investimento.Descricao + "'"
         };
         Transacoes.Add(t);
         Saldo += investimento.Valor;
     }
 }
예제 #30
0
        public string Estorno(int?transacaoId, string aporteId)
        {
            try
            {
                Transacoes t = new Transacoes();
                if (aporteId.Length > 0)
                {
                    t = tData.ConsultarTransacao(null, aporteId);
                }
                else if (transacaoId != null)
                {
                    t = tData.ConsultarTransacao(transacaoId, "");
                }

                if (t.TransacaoId <= 0)
                {
                    return("Transação não localizada;");
                }

                t.TipoTransacao = (int)Transacoes.enuTipoTransacao.Estorno;

                if (aporteId.Length > 0)
                {
                    t.Valor = (t.Valor * -1);
                }
                else if (transacaoId != null)
                {
                    int contaIdDestino = t.ContaIdOrigem.Value;
                    t.ContaIdOrigem  = t.ContaIdDestino;
                    t.ContaIdDestino = contaIdDestino;
                }

                tData.Incluir(t);
                return("Estorno realizado com sucesso!");
            }
            catch (Exception)
            {
                throw;
            }
        }