🚀 Initial commit: Versão atual do TrackSteel APP
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
-- Verificar relacionamento entre tabelas e criar trigger para reverter empenhos automaticamente
|
||||
|
||||
-- Primeiro, vamos limpar dados inconsistentes como solicitado
|
||||
DELETE FROM empenhos_material;
|
||||
DELETE FROM movimentacoes_estoque;
|
||||
|
||||
-- Criar trigger para reverter automaticamente empenhos quando movimentação de empenho é excluída
|
||||
CREATE OR REPLACE FUNCTION reverter_empenho_na_exclusao()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
-- Se a movimentação excluída for do tipo 'empenho', reverter o empenho correspondente
|
||||
IF OLD.tipo_movimentacao = 'empenho' THEN
|
||||
-- Buscar e cancelar empenho vinculado a esta movimentação
|
||||
UPDATE empenhos_material
|
||||
SET status = 'Cancelado',
|
||||
movimentacao_empenho_id = NULL
|
||||
WHERE movimentacao_empenho_id = OLD.id;
|
||||
|
||||
-- Reverter quantidades no estoque
|
||||
UPDATE estoque_materiais
|
||||
SET quantidade_empenhada = quantidade_empenhada - OLD.quantidade,
|
||||
quantidade_disponivel = quantidade_disponivel + OLD.quantidade
|
||||
WHERE id = OLD.material_id;
|
||||
|
||||
RAISE NOTICE 'Empenho revertido para movimentação %', OLD.id;
|
||||
END IF;
|
||||
|
||||
RETURN OLD;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Criar trigger que será executado ANTES da exclusão
|
||||
DROP TRIGGER IF EXISTS trigger_reverter_empenho_exclusao ON movimentacoes_estoque;
|
||||
CREATE TRIGGER trigger_reverter_empenho_exclusao
|
||||
BEFORE DELETE ON movimentacoes_estoque
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION reverter_empenho_na_exclusao();
|
||||
Reference in New Issue
Block a user