CREATE OR ALTER trigger ttbusuario_perfil_b02i for tbusuario_perfil
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( NEW.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Registro Incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',NEW.id, HISTORICO);
    END
end;

CREATE OR ALTER trigger ttbusuario_perfil_b01u for tbusuario_perfil
active before update position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( NEW.descricao <> old.descricao) THEN
    BEGIN
        HISTORICO = HISTORICO||'Descrição:'||old.descricao||' -> '||NEW.descricao;
    END

    IF ( NEW.status <> old.status) THEN
    BEGIN
        HISTORICO = HISTORICO||', Status:'||old.status||' -> '||NEW.status;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',NEW.id, HISTORICO);
    END
end;

CREATE OR ALTER trigger ttbusuario_perfil_b01d for tbusuario_perfil
active before delete position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( old.id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Registro Excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',old.id, HISTORICO);
    END
end;

CREATE OR ALTER trigger ttbusuario_perfil_detalhe_b01i for tbusuario_perfil_detalhe
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( new.perfil_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Usuário vinculado: '||coalesce((select u.usuario from tbusuario u where u.codigo = new.usuario_id),'');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',new.perfil_id, HISTORICO);
    END

end;

CREATE OR ALTER trigger tbusuario_perfil_detalhe_bd0 for tbusuario_perfil_detalhe
active before delete position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( old.perfil_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Usuário removido: '||coalesce((select u.usuario from tbusuario u where u.codigo = old.usuario_id),'');
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',old.perfil_id, HISTORICO);
    END

end;

CREATE OR ALTER trigger ttbusuario_perfil_grupo_b01i for tbusuario_perfil_grupo
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( new.perfil_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Menu Grupo adicionado: '||new.menu_grupo||' Neg.:'||new.negar||' Inc.:'||new.incluir||' Alt.:'||new.alterar||' Ex.:'||new.excluir||' Imp.:'||new.imprimir;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',new.perfil_id, HISTORICO);
    END

end;

CREATE OR ALTER trigger ttbusuario_perfil_grupo_b01u for tbusuario_perfil_grupo
active before update position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( new.negar <> old.negar) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu Grupo: '||new.menu_grupo||' Neg.:'||old.negar||' -> '||new.negar;
    END

    IF ( new.incluir <> old.incluir) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu Grupo: '||new.menu_grupo||' Inc.:'||old.incluir||' -> '||new.incluir;
    END

    IF ( new.alterar <> old.alterar) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu Grupo: '||new.menu_grupo||' Alt.:'||old.alterar||' -> '||new.alterar;
    END

    IF ( new.excluir <> old.excluir) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu Grupo: '||new.menu_grupo||' Exc.:'||old.excluir||' -> '||new.excluir;
    END

    IF ( new.imprimir <> old.imprimir) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu Grupo: '||new.menu_grupo||' Imp.:'||old.imprimir||' -> '||new.imprimir;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',new.perfil_id, HISTORICO);
    END

end;

CREATE OR ALTER trigger tbusuario_perfil_grupo_bd0 for tbusuario_perfil_grupo
active before delete position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( old.perfil_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Menu Grupo '||old.menu_grupo||' excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',old.perfil_id, HISTORICO);
    END
end;

CREATE OR ALTER trigger ttbusuario_perfil_menu_b01i for tbusuario_perfil_menu
active before insert position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( new.perfil_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||' Menu adicionado: '||new.MENU_CONTROLE||' Neg.:'||new.negar||' Inc.:'||new.incluir||' Alt.:'||new.alterar||' Ex.:'||new.excluir||' Imp.:'||new.imprimir;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',new.perfil_id, HISTORICO);
    END

end;

CREATE OR ALTER trigger ttbusuario_perfil_menu_b01u for tbusuario_perfil_menu
active before update position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( new.negar <> old.negar) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu: '||new.MENU_CONTROLE||' Neg.:'||old.negar||' -> '||new.negar;
    END

    IF ( new.incluir <> old.incluir) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu: '||new.MENU_CONTROLE||' Inc.:'||old.incluir||' -> '||new.incluir;
    END

    IF ( new.alterar <> old.alterar) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu: '||new.MENU_CONTROLE||' Alt.:'||old.alterar||' -> '||new.alterar;
    END

    IF ( new.excluir <> old.excluir) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu: '||new.MENU_CONTROLE||' Exc.:'||old.excluir||' -> '||new.excluir;
    END

    IF ( new.imprimir <> old.imprimir) THEN
    BEGIN
        HISTORICO = HISTORICO||', Menu: '||new.MENU_CONTROLE||' Imp.:'||old.imprimir||' -> '||new.imprimir;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',new.perfil_id, HISTORICO);
    END

end;

CREATE OR ALTER trigger tbusuario_perfil_menu_bd0 for tbusuario_perfil_menu
active before delete position 2
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

    IF ( old.perfil_id > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Menu '||old.MENU_CONTROLE||' excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBUSUARIO_PERFIL',old.perfil_id, HISTORICO);
    END
end;
