Reiniciando Senhas que foram redirecionadas mais de uma vez
Bom dia a todos!
Aqui no HEMOSE (Hemocentro de Sergipe) temos um processo de atendimento em 4 etapas, faz-se o cadastro que direciona para pré-triagem, esta então direciona para triagem e que, por fim, direciona para coleta, onde é encerrado, de fato o atendimento.
Percebe-se então que sempre haverá o redirecionamento das senhas em até 4 vezes. Qual o problema?
Na tabela atendimentos quando há uma referência de uma mesma senha para um segundo atendimento(redirecionado) ele consegue identificar e deletar o segundo antes do primeiro.
Porém, quando há um, no mínimo, um terceiro atendimento desta mesma senha(redirecionada), ele tenta apagar o segundo atendimento, porém este segundo está amarrado ao terceiro. O que dá pau!
Como solucionei:
Novosga\Business\AtendimentoBusiness.php
Espero que isto seja de ajuda para os demais!
Aqui no HEMOSE (Hemocentro de Sergipe) temos um processo de atendimento em 4 etapas, faz-se o cadastro que direciona para pré-triagem, esta então direciona para triagem e que, por fim, direciona para coleta, onde é encerrado, de fato o atendimento.
Percebe-se então que sempre haverá o redirecionamento das senhas em até 4 vezes. Qual o problema?
Ao tentar reiniciar as Senhas dava este erro de constraint, porquê?
Cannot delete or update a parent row: a foreign key constraint fails
(`novosga`.`atendimentos`, CONSTRAINT `atendimentos_ibfk_6`
FOREIGN KEY (`atendimento_id`) REFERENCES `atendimentos` (`id`))
Na tabela atendimentos quando há uma referência de uma mesma senha para um segundo atendimento(redirecionado) ele consegue identificar e deletar o segundo antes do primeiro.
Porém, quando há um, no mínimo, um terceiro atendimento desta mesma senha(redirecionada), ele tenta apagar o segundo atendimento, porém este segundo está amarrado ao terceiro. O que dá pau!
Como solucionei:
Novosga\Business\AtendimentoBusiness.php
E assim consegui solucionar o problema!
// limpa atendimentos da unidade
// por causa do auto relacionamento, primeiro apaga os registros filhos
$sql = 'DELETE FROM atendimentos WHERE dt_cheg <= :data AND atendimento_id IS NOT NULL';
if ($unidade > 0) {
$sql .= " AND unidade_id = :unidade";
}
$sql .= " ORDER BY id DESC"; // Aqui para o DELETE ser realizado de forma decrescente
Espero que isto seja de ajuda para os demais!
Tagged:
This discussion has been closed.
Comments
https://github.com/novosga/novosga/issues/136
Obrigado!