Problema encontrado:
Quando a R266 e a R287 estiverem abertas ao mesmo tempo, uma inconsistência pode ocorrer:
- R287: Reabertura de movimento financeiro: O movimento financeiro X seria reaberto normalmente, sem nenhum erro. No entanto, se e só se, a R266 estivesse aberta enquanto o mesmo movimento financeiro X fosse reaberto, a data atual estaria desatualizada, permitindo encerrar X com a data errada.
- R266: Encerramento de movimento financeiro: O movimento financeiro X seria encerrado normalmente, sem nenhum erro. No entanto, se e só se, a R287 estivesse aberta enquanto o mesmo movimento financeiro X fosse encerrado, a data atual estaria desatualizada, permitindo reabrir X com a data errada.
Solução: uma nova regra de negócio para prevenir esta inconsistência
Para solucionar, foi criada uma regra para, sempre que uma das rotinas previamente mencionadas estiverem abertas, notifique o usuário que a tela da rotina apresenta uma data atual incorreta, pois essa data foi atualizada enquanto a rotina estava em uso e é necessário atualizar a página para apresentar a data correta.
Exemplo:
Feito abertura da rotina R287 e R266, informo a conta caixa de código 1, que se encontra com Data de Movimento igual a 19/03/2020.
Com as duas rotinas abertas, confirmo a operação de reabertura do caixa, pela R287, para a data 18/03/2020.
Ao retornar para tela da rotina R266 (que permaneceu aberta durante a operação de reabertura), podemos perceber que o campo Movimento Atual permanece com a data anterior (o processo de reabertura feito na R287 ainda não foi refletido nessa tela).
Nesse momento, se tentarmos realizar a operação de encerramento,
O sistema fará uma verificação do campo Movimento Atual (informado na tela) com a data de movimento atual (de fato) da conta. Nesse caso, tendo em vista que estão divergentes, o sistema emitirá o alerta abaixo.
Somente após atualização da aba da rotina, será possível realizar a operação normalmente. Este recurso também está presente para a rotina R287 (caso o processo tivesse sido o inverso).
Fluxograma do processo: