Mudanças entre as edições de "Discussão:Complemento de saldo de conta corrente"
(→Sugestão de generalização da necessidade: nova seção) |
(→Solução imperativa: nova seção) |
||
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 32: | Linha 32: | ||
=== Exemplo === | === 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 | ||
+ | |||
+ | == Solução imperativa == | ||
+ | |||
+ | Na solução imperativa, diferentemente da solução declarativa, vai ser dito o ''como'' realizar a solução declarativa de modo que a necessidade seja atendida. Na solução declarativa se vê se a necessidade será atendida, aqui se vê se a solução proposta é viável. | ||
+ | |||
+ | ===2 centavos de imperatividade=== | ||
+ | Para conseguir atendes as necessidades, precisa-se de dois passos, descritos nas duas próximas sessões. | ||
+ | |||
+ | ====Cadastro==== | ||
+ | No cadastro da conta corrente do usuário, no Portal, serão vinculados dois novos campos, referentes a: | ||
+ | # valor do saldo prefixado | ||
+ | # dia do mês em que o saldo da conta corrente retorna ao valor prefixado | ||
+ | |||
+ | ====Movimentação==== | ||
+ | A movimentação é realizada em um microsserviço. O microsserviço fará a movimentação de todos os usuário que tenham os dados cadastrados na conta corrente. O movimento realizado será do tipo CM para complementos de crédito e DM para complementos de débito. O valor do movimento será calculado conforme a regra estabelecida na solução declarativa. |
Edição atual tal como às 14h45min de 9 de novembro de 2016
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
Solução imperativa
Na solução imperativa, diferentemente da solução declarativa, vai ser dito o como realizar a solução declarativa de modo que a necessidade seja atendida. Na solução declarativa se vê se a necessidade será atendida, aqui se vê se a solução proposta é viável.
2 centavos de imperatividade
Para conseguir atendes as necessidades, precisa-se de dois passos, descritos nas duas próximas sessões.
Cadastro
No cadastro da conta corrente do usuário, no Portal, serão vinculados dois novos campos, referentes a:
- valor do saldo prefixado
- dia do mês em que o saldo da conta corrente retorna ao valor prefixado
Movimentação
A movimentação é realizada em um microsserviço. O microsserviço fará a movimentação de todos os usuário que tenham os dados cadastrados na conta corrente. O movimento realizado será do tipo CM para complementos de crédito e DM para complementos de débito. O valor do movimento será calculado conforme a regra estabelecida na solução declarativa.