SET TERM ^ ;

CREATE OR ALTER TRIGGER EMPRESAS_BUD_VALIDALOTE FOR EMPRESAS
ACTIVE BEFORE UPDATE OR DELETE POSITION 0
AS
BEGIN
  IF ((DELETING) OR ((NEW.APAGADO = 'T')
      AND (OLD.APAGADO = 'F'))) THEN
  BEGIN
    IF (EXISTS(SELECT FIRST 1 1
                 FROM LOTES L
                 INNER JOIN DISPOSITIVOS D ON L.CODIGO = D.CODIGOLOTE AND D.APAGADO = 'F'
                 WHERE L.CODIGOEMPRESA = OLD.CODIGO
                   AND L.APAGADO = 'F')) THEN
    BEGIN
      EXCEPTION EX_EXISTS_DEP 'Existem lotes com dispositivos cadastrados vinculados a esta empresa';
    END
  END
END^

SET TERM ; ^

COMMENT ON TRIGGER EMPRESAS_BUD_VALIDALOTE IS '
03.03.21: Vitorino: Ticket 105382: Se existir ao menos 1 lote ativo com dispositivos, não permitir que empresas
                    sejam desvinculadas caso tenham dispositivo em lotes cadastrados.';

