SET TERM ^ ;

CREATE OR ALTER trigger tbsocio_b02i for tbsocio
active before insert position 0
as
begin
  if (new.ID is null) then
    new.ID = gen_id(GTBSOCIO,1);
end
^

SET TERM ; ^







-- ALTERAÇÃO

SET TERM ^ ;

CREATE OR ALTER trigger tbsocio_b01u for tbsocio
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF ( OLD.nome <> NEW.nome) THEN
    BEGIN
        HISTORICO = HISTORICO||' NOME:'|| OLD.nome||'->'||NEW.nome;
    END
    
    IF ( OLD.identidade <> NEW.identidade) THEN
    BEGIN
        HISTORICO = HISTORICO||' RG:'|| OLD.identidade||'->'||NEW.identidade;
    END

    IF ( OLD.cpf <> NEW.cpf) THEN
    BEGIN
        HISTORICO = HISTORICO||' CPF:'|| OLD.cpf||'->'||NEW.cpf;
    END

    IF ( OLD.codquali <> NEW.codquali) THEN
    BEGIN
        HISTORICO = HISTORICO||' QUALIF.'|| OLD.codquali||'->'||NEW.codquali;
    END

    IF ( OLD.cargo <> NEW.cargo) THEN
    BEGIN
        HISTORICO = HISTORICO||' CARGO:'|| OLD.cargo||'->'||NEW.cargo;
    END
    IF ( OLD.profissao <> NEW.profissao) THEN
    BEGIN
        HISTORICO = HISTORICO||' PROFISS.'|| OLD.profissao||'->'||NEW.profissao;
    END

    IF ( OLD.respminfa <> NEW.respminfa) THEN
    BEGIN
        HISTORICO = HISTORICO||' RESPONS.'|| IIF(old.respminfa = 'S', 'SIM', 'N?O')||'->'||IIF(new.respminfa = 'S', 'SIM', 'N?O');
    END

    IF ( OLD.assinaemp <> NEW.assinaemp) THEN
    BEGIN
        HISTORICO = HISTORICO||' ASSINA:'|| IIF(old.assinaemp = 'S', 'SIM', 'N?O')||'->'||IIF(new.assinaemp = 'S', 'SIM', 'N?O');
    END

    IF ( OLD.socioativo <> NEW.socioativo) THEN
    BEGIN
        HISTORICO = HISTORICO||' SOC.ATIVO:'|| IIF(old.socioativo = 'S', 'SIM', 'N?O')||'->'||IIF(new.socioativo = 'S', 'SIM', 'N?O');
    END

    IF ( OLD.nomereplegal <> NEW.nomereplegal) THEN
    BEGIN
        HISTORICO = HISTORICO||' NOME REP.'|| OLD.nomereplegal||'->'||NEW.nomereplegal;
    END

    IF ( OLD.cpfrep <> NEW.cpfrep) THEN
    BEGIN
        HISTORICO = HISTORICO||' CPF REP.'|| OLD.cpfrep||'->'||NEW.cpfrep;
    END

    IF ( OLD.codqualirep <> NEW.codqualirep) THEN
    BEGIN
        HISTORICO = HISTORICO||' QUALIF. REP.'|| OLD.codqualirep||'->'||NEW.codqualirep;
    END

    IF ( OLD.cargorep <> NEW.cargorep) THEN
    BEGIN
        HISTORICO = HISTORICO||' CARGO REP.'|| OLD.cargorep||'->'||NEW.cargorep;
    END

    IF ( OLD.datini <> NEW.datini) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA.INI.'|| OLD.datini||'->'||NEW.datini;
    END

    IF ( OLD.datfim <> NEW.datfim) THEN
    BEGIN
        HISTORICO = HISTORICO||' DATA.FIM:'|| OLD.datfim||'->'||NEW.datfim;
    END

    IF ( OLD.percaptot <> NEW.percaptot) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAP. TOTAL:'||OLD.percaptot||'%'||'->'||NEW.percaptot||'%';
    END

    IF ( OLD.percapvol <> NEW.percapvol) THEN
    BEGIN
        HISTORICO = HISTORICO||' CAP. VOLANTE:'||OLD.percapvol||'%'||'->'||NEW.percapvol||'%';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        HISTORICO = ' REGISTRO ALTERADO '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBSOCIO',NEW.id, HISTORICO);
    END
end
^

SET TERM ; ^



