Discussão:Complemento de saldo de conta corrente
Solução pouco genérica
A solução está voltada apenas para a necessidade da Camil.
Precisa possibilitar parametrizar a periodicidade para está funcionalidade, permitir também múltiplas parametrização.
A parte da rotina também precisa ser melhor descrita.
Cenário confuso
Os cenários usam itemização, mas não de maneira eficiente.
Tipo, não consigo distinguir facilmente as informações.
Creio que você queria fazer algo mais assim no cenário 1:
Cenário 1
Dados
- João possui saldo complementar de R$ 2000.00
- o saldo atual de João no dia 31/10/2016 é R$ 1500.00
- o complemento de João está cadastrado para rodar no primeiro dia do mês
- João não realiza mais nenhuma movimentação esse mês
Assertivas
No dia 01/11/2016...
- o saldo de João é R$ 2000.00
- existe um movimento para João de R$ 500.00 do tipo de movimento CM do dia 01/11/2016
Sugestão de generalização da necessidade
O usuário de conta corrente precisa, em data fixa no mês, ficar com um saldo prefixado.
Exemplo
Inalds, todo dia 1º, fica com o saldo de R$ 2000.00
Solução declarativa
Na solução declarativa, declaramos não como será feito, mas uma visão geral do quê será feito.
2 centavos de solução declarativa
No dia determinado para que o usuário tenha o saldo especificado, será gerado um movimento de complementação, de modo que seu Saldo final seja o especificado. Assim, o movimento de complemento será:
MC = Sd - Sa
Onde:
- MC é o valor do movimento de complemento
- Sd é o saldo desejado
- Sa é o saldo anterior
Demonstração matemática
O saldo é dado pela somatória dos movimentos. Assim, eu realizar um movimento M1 em um saldo S0, o saldo novo S1 é S0 + M1.
Assim, vamos calcular o saldo depois de realizado o movimento, Sn:
Sn = Sa + MC = Sa + (Sd - Sa) = Sd
Portanto, essa solução garante que o movimento e complemento sempre retorne o saldo do usuário para o saldo desejado.
CQD