Dúvida sobre Account Pattern

Olá galera,

gostaria de ver com alguém que tenha mais experiência que eu nesse Pattern alguns conceitos da área de contabilidade. Estou fazendo um projetinho pessoal para controle de financeiro e fiquei na dúvida como modelo algumas coisas no meu sistema.

Já dei uma lida no Pattern Account, Lançamentos, Estorno, Evento, etc.

Fiquei na dúvida de como será modelado uma conta se ela já pode nascer com um valor. Obviamente esta representação nascerá com um valor positivo ou não. Fico na dúvida se seria propriedade da Conta um campo “balancoInicial” ou se na criação da mesma eu gero um lançamento de crédito/débito nela. Neste segunda hipotése, de qual conta viria o lançamento?

Outra dúvida é na representação de Ativos e Bens, como eles seriam modelados no sistema. O certo seria eu criar uma conta pra cada Bem? E no caso de Ativos(Ações, poupança, etc…) como fica modelado isso no sistema?

Como seria representadas movimentações financeiras do tipo empréstimo? Por exemplo, empresto X pra receber Y no final de um período.

Dei uma olhada no link (http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/ap/fin/intro.html) e foi bastante esclarecedor, no entanto, sigo com essas dúvidas supracitadas a respeito desse Pattern.

Se alguém que trabalha mais com parte financeira poder dar um help eu agradeço.

Abraço a todos.

[quote=giulianocosta]O
Fiquei na dúvida de como será modelado uma conta se ela já pode nascer com um valor. Obviamente esta representação nascerá com um valor positivo ou não. Fico na dúvida se seria propriedade da Conta um campo “balancoInicial” ou se na criação da mesma eu gero um lançamento de crédito/débito nela. Neste segunda hipotése, de qual conta viria o lançamento?
[/quote]

Bom, nao sei o que andou lendo, mas o padrão account baseia-se na separação de Conta e Movimento (Lançamento).
Todas as contas têm saldo zero no inicio, e depois é feito um movimento que dá ou tira dinheiro da conta. Por conveniencia este movimento pode acontecer simultaneamente com a abertura da conta, mas são duas operações diferentes.
O saldo da conta é a soma aritmética de todos os movimentos. Esta é a essência do padrão.

Ativos não são contas. Simples como isso. Ativo é outra entidade.
Uma “conta poupança” é na realidade uma conta de contabilização atrelada a um Ativo (Empréstimo). ou seja, é só uma forma leiga de olha um empréstimo do cliente ao banco , na real existe um empréstimo que gera juros que são colocados na conta. (Na realidade exstem vários empréstimos - um para cada principal depositado- é por isso que ha datas especiais em que o juro vence)

Empréstimo é um Ativo. Pode ser do banco ao cliente (empréstimo bancário) ou do cliente ao banco.
O processo é mais ou menos assim. O Cliente tem 1000 na conta à ordem. Ele adquire um Empréstimo me que o banco recebe esses 1000 e se disponibiliza a pagar juros sobre esse valor. Da conta do cliente saem 1000 e ele recebe um empréstimo (um “papel” ativo). O banco recebe 1000 e dá o empréstimo. fim da transação.
Quando chegar a data de vencimento o juro é calculado. Dependendo do tipo de empréstimo esse juro pode ser adicionado ao principal ou não.

Quando o cliente liquidar o empréstimo, ele recebe o dinheiro de volta na conta e o ativo é liquidado.

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”.

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?

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?

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:

[code]public Money getSaldo(){
Money saldo = Money.ZERO;
for (Movimento m : this.getMovimentos()){
saldo = saldo.plus(m.getValue());
}

return saldo;

}[/code]

Não ha nenhum campo inicial estático ou não estático.

:slight_smile: “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.

[quote]
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?[/quote]

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.

Ok Sérgio, isso eu capitei… Minha dúvida é de onde virá o lançamento inicial sendo que não existe nenhuma conta no Sistema? É a primeira conta que estou cadastrando… :smiley:

Quando eu for fazer o balancete eu terei um Lançamento que veio do “nada” e parou na minha conta???

Bom, aqui eu teria que saber o conceito exato de Conta Financeira. O que é uma Conta Financeira? No caso da minha corretora eu não dou ordens de compra e venda debitando e creditando direto da minha conta bancária. Eu dou ordens que caem como débito e crédito diretamente da Corretora. Uma Conta pra mim, olhando estritamente o Pattern, é um repositório de lançamentos, ponto final. Sendo assim, minha conta na corretora é um repositório de lançamentos. Afinal, eu faço lançamentos diretamente nela.

Bom, pelo que estou vendo seria mais fácil eu tratar tudo(Ativos e Bens) como um Empréstimo. Ficará mais fácil de “visualizar” a modelagem dessa forma.