giulianocosta:
O conceito de Conta e Movimento é captei tranquilo. O problema que encontrei foi no quesito "de onde vem o Valor do Movimento inicial"(transação separada da criação da conta)? Sendo que é a primeira Conta que eu estou cadastrando no sistema? Pelo que eu entendi, se eu quiser fazer "balanço", pelo conceito em si, eu tenho que saber de onde saiu e para onde foi. Por isso a dúvida de ter um campo imutável chamado "saldoInicial", que não ofenderia o conceito de ter um valor que veio do "nada" ou fazer esse Movimento inicial sem uma conta origem. O que obviamente ofenderia o balancete, já que o valor viria do "nada".
Quando vc cadastra uma nova conta não ha movimentos para ela então o saldo é zero. Sempre é zero.
matemáticamente o saldo da conta é :
Saldo = 0 + Somatorio(Movimentos).
Se não ha movimentos o saldo é 0+0 que é zero.
Programáticamente seria:
public Money getSaldo(){
Money saldo = Money.ZERO;
for (Movimento m : this.getMovimentos()){
saldo = saldo.plus(m.getValue());
}
return saldo;
}
Não ha nenhum campo inicial estático ou não estático.
Aqui vou exemplificar:
Tenho uma conta em uma corretora no qual eu lanço ordens de compra e venda de ações. No meu entendimento eu teria uma Conta investimento cadastrada no sistema no qual eu lanço a compra e venda destas ações. Esse lançamento seria do tipo Empréstimo e que teria, necessariamente, um papel atrelado. Essa conta tem um saldo, no caso eu lançaria, tanto o débito quanto o crédito nela mesmo conforme tu citastes?
:) "Conta" de corretora é "conta de usuario" não "conta financeira". O que vc tem lá é um usuário e um contrato, ou seja, vc é um cliente. Se vc lança ordens de compra e venda de acções (ativos) então esse é o seu modelo. Não ha contas nessa historia.
Quando a ordem é efetivada ha uma cobrança de uma conta financeira. Só ai que entra a conta.
Vc tem uma lista de ativos (acções, fundos, etc...) e quantidades para cada um. Vc pode comprar mais quantidade ou vender o que tem. O dinheiro em si, vem de uma conta que não é um ativo.
No caso de Bens
Se eu compro um terreno, esse terreno seria uma entidade "Bem" atrelada a um lançamento de compra em uma conta. O problema aqui é que eu quero logar os gastos referentes a este Bem(Manutenção, IPTU, etc...). Então logo pensei em criar uma conta para esse Bem afim de logar as movimentações referentes a ele. Mas e no momento que eu vender este Bem? Digamos que o bem valorizou. Eu simplesmente lançaria esse Lançamento de Venda como crédito em uma outra conta?
Passo 1: vc cadastra o Bem. nome, caracteristicas etc... depois vc vende ou compra. O bem estará atralado à compra/venda como um porduto está no pedido e na nota. O Bem não é gerado pela compra/venda, ele existe antes.
Aliás os ativos tb. Acções existem independentemente se vc as compra, vende ou sequer se tem alguma.