Olá a todos!
Estou desenvolvendo um sistema financeiro, depois de quebrar um pouco a cabeça com a modelagem começamos a desenvolver mas agora temos uma dúvida no momento de cadastro das despesas. No momento de lançar a despesa o usuário tem a opção de escolher se a despesa pode ter repetições(parcelas) ou se ela é fixa (vai se repetir todos os meses).
Para despesas com repetição é simples, o usuário escolhe a quantidade de parcelas e o intervalo (meses, anos), então se eu tenho um lançamento de uma despesa de R$ 3000 e desejo dividir em 3 vezes de R$ 1000, na prática eu registro 3 linhas no banco de dados na tabela de despesas.
Meu problema está com os lançamentos fixos, eles repetem-se mês a mês, porém não tem uma data limite e eu não existe a possibilidade de lançar infinitos lançamentos para os infinitos anos no futuro já que não existe esse limite temporal.
Como proceder com lançamentos fixos neste tipo de sistema ?
Boa tarde!
johannsen, acredito que tenha entendido o que você pretende fazer. Na minha opinião você deve ter um botão no sistema que gera as despesas. Então o usuário faria a geração dos meses que desejar, ele pode colocar para gerar os próximos 12 meses por exemplo.
Uma outra situação que você deve se atentar é para o valor. Mesmo sendo uma despesa fixa, o valor pode mudar um pouco. Pode haver alguma correção inesperada.
como proceder?
vejamos, se vc escolheu um pagamento recorrente sem final definido, que vc chama de “fixo”, vc deveria armazenar isso em outro lugar. digamos “a tabela dos pagamentos recorrentes”.
e la vc inseriu: todo o dia 5 eu gasto 100 dinheiros com o serviço xxx
um processo diario ( ou qq outra frequencia ) vai verificar: tenho que gerar um novo pagamento?
dia 4: nada
dia 5: EPA tenho sim, e vai la e insere uma nova despesa
dia 6: nada
é claro que algo pode ter dado errado no dia 5. é por isso que vc pode implementar uma rotina de checagem simples como verificar se tem que gerar algo nos ultimos 7 dias. para não pagar duas vezes vc pode armazenar o id do pagamento recorrente na tabela de despesas: assim vc nao se confunde ( paguei 100 a vulto ou 100 recorrente )?
como fazer esse processo periodico? um scheduler faz isso pra vc. pode ser algo tao bobo como um crontab que chama uma servlet via CURL para rodar esse processo mas o ideal é que isso seja um batch.