Bug #214
Bug ao editar e excluir lote
40%
Description
Por algum motivo o sistema salvou a nova data de dispensação (ao contrario do que diz a usuária), porém, não redirecionou para outra pagina nem exibiu mensagem de sucesso, dando a impressão de que não salvou... Aqui já temos um bug...
Ao tentar excluir uma dispensação que foi editada o sistema não deleta as movimentações, causando a inconsistência citada pela usuário... Algum palpite?
History
#1
Updated by Maurício Dos Santos over 12 years ago
- Target version changed from Próxima versão to Versão atual
#2
Updated by Ricardo Memoria over 12 years ago
- Status changed from Feedback to In Progress
- Assignee changed from Ricardo Memoria to Maurício Dos Santos
Vamos por enquanto acertar o problema da exclusão da dispensação. Acontece o seguinte:
Ao excluir a dispensação, deve ser verificado se ainda vai existir quantidade no movimento associado (pois um mesmo movimento pode ser oriundo de várias dispensações que foram feitas no mesmo dia), então pode ocorrer 2 situações: Excluir o movimento (caso não tenha nenhuma outra dispensação no dia) ou atualizar a quantidade do movimento (caso tenham outras dispensações).
#3
Updated by Maurício Dos Santos over 12 years ago
- % Done changed from 0 to 40
Depois de muitos testes para tentar localizar o problema percebi uma coisa....
- Quando a falha acontece nenhuma excessão é liberada.
- DispensingHome - Se entrar no if da linha 141 é que ocorre o erro, dai o sistema deixa de excluir a mesma quantidade de registros da tabela moviment que entra naquele if...
obs: O paciente JAILTON BASTOS BOULHOSA tem uma dispensação dia 05/10 (octavio mangabeira) que ao tentar ser excluida libera uma exceção "Movements must be prepared to be removed before preparing new movements
"
#4
Updated by Maurício Dos Santos over 12 years ago
- Status changed from In Progress to Feedback
- Assignee changed from Maurício Dos Santos to Ricardo Memoria
Um outro bug foi detectado...
Me parece que algumas dispensações estão ficando desconectada aos seus movimentos, ou que estejam ficando sem registro de movimentos ou ambas coisas estejam acontecendo...
Essa query prova:
select * from medicinedispensing
where id not in (select dispensing_id from movements_dispensing);
Acho que a melhor opção seja desmembrar aquela regra de que há uma movimentação para um medicamento - data - unidade.... Me parece uma opção mais simples e segura (por conta das supostas falhas do entitymanager) além de ja ter sido solicitada pela cris, para que ela possa visualizar a movimentação por cada dispensação de cada paciente... #230
De qualquer maneira a outra opção que tive para solucionar o primeiro bug citado nesta tarefa foi colocar esse código depois do ultimo comando do metodo dispensinghome.deletecasedispensing ... Não coloquei no MovementHome.savePreparedMovements() pois a query é especifica para movimentações provindas de dispensações...
entityManager.createNativeQuery("delete from movement " + "where type = :dispensing and id not in (select movement_id from movements_dispensing)") .setParameter("dispensing", MovementType.DISPENSING.ordinal()) .executeUpdate();
#5
Updated by Maurício Dos Santos over 12 years ago
Testar novamente, aparentemente nao estao sendo mais criados registros erroneos...
#6
Updated by Maurício Dos Santos over 12 years ago
- Status changed from Feedback to New
- Assignee changed from Ricardo Memoria to Maurício Dos Santos
#7
Updated by Maurício Dos Santos over 12 years ago
Testei e o problema ainda ocorre.
Passos do teste:
- Exclui uma dispensação de um paciente X. (ok)
- Editei uma dispensação de um paciente Y. (ok)
- Exclui uma dispensação de um paciente Y. (Not ok)
Neste ultimo passo o navegador apresentou um erro, ao rodar a query verificadora (abaixo) verifiquei que mais um registro se encontrava nestas condições.
select * from movement
where type = 3 and id not in (select movement_id from movements_dispensing);
#8
Updated by Maurício Dos Santos about 12 years ago
- Priority changed from High to Low