// 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; } }
// 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; } }
// 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); }
// 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; }
} // 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; } }
// 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; } }
public void AdicionarTransacao(Transacao transacao) { Transacoes.Add(transacao); }