CREATE OR ALTER TRIGGER TTBCOLABORADOR_DEPENDENTE_B01I FOR TBCOLABORADOR_DEPENDENTE
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Dependente ID: '||LPAD(NEW.CONTROLE,6,'0')||' incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_DEPENDENTE_B01U FOR TBCOLABORADOR_DEPENDENTE
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.NOME <> NEW.NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Nome: '||OLD.NOME||' -> '||NEW.NOME;
    END

    IF (OLD.DATA_NASCIMENTO <> NEW.DATA_NASCIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Dt. Nascimento: '||FN_DATE_TO_STRING(OLD.DATA_NASCIMENTO)||' -> '||FN_DATE_TO_STRING(NEW.DATA_NASCIMENTO);
    END
    
    IF (OLD.SEXO <> NEW.SEXO) THEN
    BEGIN
        IF(NEW.SEXO = '1' AND OLD.SEXO = '2') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Sexo: Feminino -> Masculino';
        END
        IF(NEW.SEXO = '2' AND OLD.SEXO = '1') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Sexo: Masculino -> Feminino';
        END
    END

    IF (OLD.PARENTESCO <> NEW.PARENTESCO) THEN
    BEGIN
        IF(NEW.PARENTESCO = '1') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Parentesco: Conjuge';
        END
        IF(NEW.PARENTESCO = '2') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Parentesco: Filho/Filha';
        END
        IF(NEW.PARENTESCO = '3') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Parentesco: Pai/Mae';
        END
        IF(NEW.PARENTESCO = '4') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Parentesco: Avo/Avo';
        END
        IF(NEW.PARENTESCO = '5') then
        BEGIN
            HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', Parentesco: Outros';
        END
    END

    IF (OLD.CPF <> NEW.CPF) THEN
    BEGIN
        HISTORICO = HISTORICO||'Dependente ID '||LPAD(OLD.CONTROLE,6,'0')||', CPF: '||(Case When Char_length(OLD.CPF)=11 Then Substring(OLD.CPF from 1 for 3)||'.'||Substring(OLD.CPF from 4 for 3)||'.'||Substring(OLD.CPF from 7 for 3)||'-'||Substring(OLD.CPF from 10 for 2) else
                    (Case When Char_length(OLD.CPF)=14 Then Substring(OLD.CPF from 1 for 2)||'.'||Substring(OLD.CPF from 3 for 3)||'.'||Substring(OLD.CPF from 6 for 3)||'/'||Substring(OLD.CPF from 9 for 4)||'-'||Substring(OLD.CPF from 13 for 2) else OLD.CPF end) end)||' ->'||(Case When Char_length(NEW.CPF)=11 Then Substring(NEW.CPF from 1 for 3)||'.'||Substring(NEW.CPF from 4 for 3)||'.'||Substring(NEW.CPF from 7 for 3)||'-'||Substring(NEW.CPF from 10 for 2) else
                    (Case When Char_length(NEW.CPF)=14 Then Substring(NEW.CPF from 1 for 2)||'.'||Substring(NEW.CPF from 3 for 3)||'.'||Substring(NEW.CPF from 6 for 3)||'/'||Substring(NEW.CPF from 9 for 4)||'-'||Substring(NEW.CPF from 13 for 2) else NEW.CPF end) end);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR', NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_DEPENDENTE_B01D FOR TBCOLABORADOR_DEPENDENTE
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CONTROLE > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Dependente ID: '||LPAD(OLD.CONTROLE,6,'0')||' excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',OLD.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_CARGO_B03I FOR TBCOLABORADOR_CARGO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.CARGO_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cargo Cod.: '||LPAD(NEW.CARGO_CODIGO,5,'0')||' incluido, Dt. Inicial: '||FN_DATE_TO_STRING(NEW.DATA_INICIAL);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_CARGO_B02U FOR TBCOLABORADOR_CARGO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.DATA_INICIAL <> NEW.DATA_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cargo Cod.: '||LPAD(OLD.CARGO_CODIGO,6,'0')||', Dt. Inicial: '||FN_DATE_TO_STRING(OLD.DATA_INICIAL)||' -> '||FN_DATE_TO_STRING(NEW.DATA_INICIAL);
    END

    IF (OLD.DATA_FINAL <> NEW.DATA_FINAL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cargo Cod.: '||LPAD(OLD.CARGO_CODIGO,6,'0')||', Dt. Final: '||FN_DATE_TO_STRING(OLD.DATA_FINAL)||' -> '||FN_DATE_TO_STRING(NEW.DATA_FINAL);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR', NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_CARGO_B01D FOR TBCOLABORADOR_CARGO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CARGO_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Cargo Cod.: '||LPAD(OLD.CARGO_CODIGO,5,'0')||' excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',OLD.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_ESCALA_B03I FOR TBCOLABORADOR_ESCALA
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.ESCALA_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(NEW.ESCALA_CODIGO,4,'0')||' incluida';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_ESCALA_B04I FOR TBCOLABORADOR_ESCALA
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE vEscala integer;
BEGIN
    vEscala = Coalesce((SELECT FIRST 1 A.ESCALA_CODIGO From TBCOLABORADOR_ESCALA A WHERE A.COLABORADOR_CODIGO = NEW.COLABORADOR_CODIGO AND A.ESCALA_CODIGO = NEW.ESCALA_CODIGO AND A.DATA_BASE = NEW.DATA_BASE),0);

    IF (vEscala > 0) THEN
    Begin
        Exception "..." 'Escala ja existente no dia: '||FN_DATE_TO_STRING(NEW.DATA_BASE)||', Escala Cod.: '||LPAD(VESCALA,4,'0')||'!';
    End
END;

CREATE TRIGGER TTBCOLABORADOR_ESCALA_B03U FOR TBCOLABORADOR_ESCALA
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.DATA_INICIAL <> NEW.DATA_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(OLD.ESCALA_CODIGO,4,'0')||', Dt. Inicial: '||FN_DATE_TO_STRING(OLD.DATA_INICIAL)||' -> '||FN_DATE_TO_STRING(NEW.DATA_INICIAL);
    END

    IF (OLD.DATA_BASE <> NEW.DATA_BASE) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(OLD.ESCALA_CODIGO,4,'0')||', Dt. Final: '||FN_DATE_TO_STRING(OLD.DATA_BASE)||' -> '||FN_DATE_TO_STRING(NEW.DATA_BASE);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR', NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_ESCALA_B03U FOR TBCOLABORADOR_ESCALA
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ESCALA_CODIGO <> NEW.ESCALA_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(OLD.ESCALA_CODIGO,4,'0')||', Escala Alterada, Anterior :'||LPAD(OLD.ESCALA_CODIGO,4,'0')||', Atual: '||LPAD(NEW.ESCALA_CODIGO,4,'0');
    END

    IF (OLD.DATA_INICIAL <> NEW.DATA_INICIAL) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(OLD.ESCALA_CODIGO,4,'0')||', Dt. Inicial: '||FN_DATE_TO_STRING(OLD.DATA_INICIAL)||' -> '||FN_DATE_TO_STRING(NEW.DATA_INICIAL);
    END

    IF (OLD.DATA_BASE <> NEW.DATA_BASE) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(OLD.ESCALA_CODIGO,4,'0')||', Dt. Final: '||FN_DATE_TO_STRING(OLD.DATA_BASE)||' -> '||FN_DATE_TO_STRING(NEW.DATA_BASE);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR', NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_ESCALA_B02D FOR TBCOLABORADOR_ESCALA
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.ESCALA_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Escala Cod.: '||LPAD(OLD.ESCALA_CODIGO,4,'0')||' excluida';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',OLD.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_CARGO_B04I FOR TBCOLABORADOR_CARGO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE vCargo integer;
BEGIN
    vCargo = Coalesce((SELECT FIRST 1 A.CARGO_CODIGO From TBCOLABORADOR_CARGO A WHERE A.DATA_INICIAL = NEW.DATA_INICIAL AND A.COLABORADOR_CODIGO = NEW.COLABORADOR_CODIGO),0);

    IF (vCargo > 0) THEN
    Begin
        Exception "..." 'Cargo ja existente no dia: '||FN_DATE_TO_STRING(NEW.DATA_INICIAL)||', Cargo Cod.: '||LPAD(vCargo,5,'0')||'!';
    End
END;

CREATE TRIGGER TTBCOLABORADOR_SALARIO_B01I FOR TBCOLABORADOR_SALARIO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.COLABORADOR_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Salario Data: '||FN_DATE_TO_STRING(NEW.DATA)||' incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE OR ALTER TRIGGER TTBCOLABORADOR_SALARIO_B01U FOR TBCOLABORADOR_SALARIO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.SALARIO <> NEW.SALARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||'Salario Data: '||FN_DATE_TO_STRING(OLD.DATA)||', Valor Salario: '||OLD.SALARIO||' -> '||NEW.SALARIO;
    END

    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Salario Data: '||FN_DATE_TO_STRING(OLD.DATA)||', Observacao Alterada.';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR', NEW.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_SALARIO_B01D FOR TBCOLABORADOR_SALARIO
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.COLABORADOR_CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Salario Data: '||FN_DATE_TO_STRING(OLD.DATA)||' excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',OLD.COLABORADOR_CODIGO, HISTORICO);
    END
END;

CREATE SEQUENCE GTBCOLABORADOR START WITH 6003;

CREATE TRIGGER TTBCOLABORADOR_B02I FOR TBCOLABORADOR
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (NEW.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Colaborador incluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',NEW.CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_B03I FOR TBCOLABORADOR
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.CODIGO IS NULL) THEN
    NEW.CODIGO = GEN_ID(GTBCOLABORADOR,1);
END;

CREATE TRIGGER TTBCOLABORADOR_B04U FOR TBCOLABORADOR
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.PESSOAL_NOME <> NEW.PESSOAL_NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||'Nome Alterado.';
    END

    IF (OLD.PESSOAL_SEXO <> NEW.PESSOAL_SEXO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Sexo Alterado.';
    END

    IF (OLD.PESSOAL_ESTADO_CIVIL <> NEW.PESSOAL_ESTADO_CIVIL) THEN
    BEGIN
        IF(NEW.PESSOAL_ESTADO_CIVIL = '1') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Casado';
        END
        IF(NEW.PESSOAL_ESTADO_CIVIL = '2') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Solteiro';
        END
        IF(NEW.PESSOAL_ESTADO_CIVIL = '3') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Viuvo(a)';
        END
        IF(NEW.PESSOAL_ESTADO_CIVIL = '4') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Separado Judicialmente';
        END
        IF(NEW.PESSOAL_ESTADO_CIVIL = '5') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Divorciado';
        END
        IF(NEW.PESSOAL_ESTADO_CIVIL = '6') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Desquitado';
        END
        IF(NEW.PESSOAL_ESTADO_CIVIL = '7') THEN
        BEGIN
           HISTORICO = HISTORICO||', Estado Civil: Amasiado';
        END
    END

    IF (OLD.PESSOAL_FONE1 <> NEW.PESSOAL_FONE1) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tel. Fixo: '||OLD.PESSOAL_FONE1||' -> '||NEW.PESSOAL_FONE1;
    END

    IF (OLD.PESSOAL_FONE2 <> NEW.PESSOAL_FONE2) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tel. Celular: '||OLD.PESSOAL_FONE2||' -> '||NEW.PESSOAL_FONE2;
    END

    IF (OLD.PESSOAL_NATURALIDADE <> NEW.PESSOAL_NATURALIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Nat. Cidade: '||OLD.PESSOAL_NATURALIDADE||' -> '||NEW.PESSOAL_NATURALIDADE;
    END

    IF (OLD.PESSOAL_NATURALIDADE_UF <> NEW.PESSOAL_NATURALIDADE_UF) THEN
    BEGIN
        HISTORICO = HISTORICO||', Nat. UF: '||OLD.PESSOAL_NATURALIDADE_UF||' -> '||NEW.PESSOAL_NATURALIDADE_UF;
    END

    IF (OLD.PESSOAL_ESCOLARIDADE <> NEW.PESSOAL_ESCOLARIDADE) THEN
    BEGIN
        IF(NEW.PESSOAL_ESCOLARIDADE = '1') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Analfabeto';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '2') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Fundamental Incompleto';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '3') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: 4ª Série Completa';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '4') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: 5ª a 8ª Série';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '5') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Fundamental Completo';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '6') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Ensino Médio Incompleto';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '7') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Ensino Médio Completo';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '8') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Educação Superior Incompleto';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '9') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Educação Superior Completo';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '10') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Pós-Graduação';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '11') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Mestrado';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '12') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Doutorado';
        END
        IF(NEW.PESSOAL_ESCOLARIDADE = '13') THEN
        BEGIN
           HISTORICO = HISTORICO||', Escolaridade: Pós-Doutorado';
        END
    END

    IF (OLD.CURSOS_TECNICOS <> NEW.CURSOS_TECNICOS) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cursos Tecnico(s) Alterado(s).';
    END

    IF (OLD.CURSOS_EXTRACURRICULARES <> NEW.CURSOS_EXTRACURRICULARES) THEN
    BEGIN
        HISTORICO = HISTORICO||', Curso(s) Extracurricular(es) Alterado(s).';
    END

    IF (OLD.BANCO_CONTA <> NEW.BANCO_CONTA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Conta do Banco Alterada.';
    END

    IF (OLD.BANCO_AGENCIA <> NEW.BANCO_AGENCIA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Agencia do Banco Alterada.';
    END
    
    IF (OLD.BANCO_OPERACAO <> NEW.BANCO_OPERACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Operacao do Banco Alterada.';
    END

    IF (OLD.ENDERECO_LOGRADOURO <> NEW.ENDERECO_LOGRADOURO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Endereco(Logradouro) Alterado.';
    END

    IF (OLD.ENDERECO_BAIRRO <> NEW.ENDERECO_BAIRRO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Bairro: '||OLD.ENDERECO_BAIRRO||' -> '||NEW.ENDERECO_BAIRRO;
    END

    IF (OLD.ENDERECO_CIDADE <> NEW.ENDERECO_CIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cidade: '||OLD.ENDERECO_CIDADE||' -> '||NEW.ENDERECO_CIDADE;
    END 

    IF (OLD.ENDERECO_CEP <> NEW.ENDERECO_CEP) THEN
    BEGIN
        HISTORICO = HISTORICO||', CEP: '||SUBSTRING(OLD.ENDERECO_CEP from 1 for 5)||'-'||SUBSTRING(OLD.ENDERECO_CEP from 6 for 8)||' -> '||SUBSTRING(NEW.ENDERECO_CEP from 1 for 5)||'-'||SUBSTRING(NEW.ENDERECO_CEP from 6 for 8);
    END 

    IF (OLD.ENDERECO_UF <> NEW.ENDERECO_UF) THEN
    BEGIN
        HISTORICO = HISTORICO||', UF: '||OLD.ENDERECO_UF||' -> '||NEW.ENDERECO_UF;
    END

    IF (OLD.DOCUMENTO_PIS <> NEW.DOCUMENTO_PIS) THEN
    BEGIN
         HISTORICO = HISTORICO||', PIS Alterado.';
    END

    IF (OLD.DOCUMENTO_RG <> NEW.DOCUMENTO_RG) THEN
    BEGIN
         HISTORICO = HISTORICO||', RG Alterado.';
    END

    IF (OLD.DOCUMENTO_RG_EMISSAO <> NEW.DOCUMENTO_RG_EMISSAO) THEN
    BEGIN
         HISTORICO = HISTORICO||', Dt. Emissao(RG): '||FN_DATE_TO_STRING(OLD.DOCUMENTO_RG_EMISSAO)||' -> '||FN_DATE_TO_STRING(NEW.DOCUMENTO_RG_EMISSAO);
    END

    IF (OLD.DOCUMENTO_RG_EMISSOR <> NEW.DOCUMENTO_RG_EMISSOR) THEN
    BEGIN
         HISTORICO = HISTORICO||', Orgao Emissor(RG):'||OLD.DOCUMENTO_RG_EMISSOR||' -> '||NEW.DOCUMENTO_RG_EMISSOR;
    END

    IF (OLD.DOCUMENTO_CPF <> NEW.DOCUMENTO_CPF) THEN
    BEGIN
         HISTORICO = HISTORICO||', CPF Alterado.';
    END

    IF (OLD.DOCUMENTO_CPF_EMISSAO <> NEW.DOCUMENTO_CPF_EMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Dt. Emissao(CPF): '||FN_DATE_TO_STRING(OLD.DOCUMENTO_CPF_EMISSAO)||' -> '||FN_DATE_TO_STRING(NEW.DOCUMENTO_CPF_EMISSAO);
    END 

    IF (OLD.DOCUMENTO_CTPS <> NEW.DOCUMENTO_CTPS) THEN
    BEGIN
        HISTORICO = HISTORICO||', CTPS Alterada.';
    END

    IF (OLD.DOCUMENTO_CTPS_EMISSAO <> NEW.DOCUMENTO_CTPS_EMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Dt. Emissao(CTPS): '||FN_DATE_TO_STRING(OLD.DOCUMENTO_CTPS_EMISSAO)||' -> '||FN_DATE_TO_STRING(NEW.DOCUMENTO_CTPS_EMISSAO);
    END

    IF (OLD.DOCUMENTO_CTPS_EMISSOR <> NEW.DOCUMENTO_CTPS_EMISSOR) THEN
    BEGIN
        HISTORICO = HISTORICO||', Orgao Emissor(CTPS):'||OLD.DOCUMENTO_CTPS_EMISSOR||' -> '||NEW.DOCUMENTO_CTPS_EMISSOR;
    END

    IF (OLD.DOCUMENTO_TITULO_ELEITOR <> NEW.DOCUMENTO_TITULO_ELEITOR) THEN
    BEGIN
        HISTORICO = HISTORICO||', Titulo de Eleitor Alterado.';
    END

    IF (OLD.TURNO <> NEW.TURNO) THEN
    BEGIN
        IF(NEW.TURNO = '1') THEN
        BEGIN
           HISTORICO = HISTORICO||', Turno: Diurno -> Noturno';
        END
        IF(NEW.TURNO = '2') THEN
        BEGIN
           HISTORICO = HISTORICO||', Turno: Noturno -> Diurno';
        END
    END

    IF (OLD.CRACHA <> NEW.CRACHA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Cracha: '||OLD.CRACHA||' -> '||NEW.CRACHA;
    END

    IF (OLD.CENTRO_DE_CUSTO_CODIGO <> NEW.CENTRO_DE_CUSTO_CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Centro de Custo:'||OLD.CENTRO_DE_CUSTO_CODIGO||' -> '||NEW.CENTRO_DE_CUSTO_CODIGO;
    END  

    IF (OLD.ESTABELECIMENTO_ID <> NEW.ESTABELECIMENTO_ID) THEN
    BEGIN
        HISTORICO = HISTORICO||', Est. Codigo: '||OLD.ESTABELECIMENTO_ID||' -> '||NEW.ESTABELECIMENTO_ID;
    END  

    IF (OLD.REFEICAO <> NEW.REFEICAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Refeicao: '||OLD.REFEICAO||' -> '||NEW.REFEICAO;
    END  

    IF (OLD.MOTIVO_DEMISSAO <> NEW.MOTIVO_DEMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Mot. Demissao: '||OLD.MOTIVO_DEMISSAO||' -> '||NEW.MOTIVO_DEMISSAO;
    END  

    IF (OLD.TRANSPORTE <> NEW.TRANSPORTE) THEN
    BEGIN
        IF(NEW.TRANSPORTE = '1') THEN
        BEGIN
           HISTORICO = HISTORICO||', Transporte : Não usa transporte da empresa';
        END
        IF(NEW.TRANSPORTE = '2') THEN
        BEGIN
           HISTORICO = HISTORICO||', Transporte : Usa transporte da empresa e paga';
        END
        IF(NEW.TRANSPORTE = '3') THEN
        BEGIN
           HISTORICO = HISTORICO||', Transporte : Usa transporte e não paga';
        END
    END

    IF (OLD.TIPO_PCD_ID <> NEW.TIPO_PCD_ID) THEN
    BEGIN
        IF(NEW.TIPO_PCD_ID = 0) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Nenhuma';
        END
        IF(NEW.TIPO_PCD_ID = 1) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Fisico';
        END
        IF(NEW.TIPO_PCD_ID = 2) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Auditivo';
        END
        IF(NEW.TIPO_PCD_ID = 3) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Visual';
        END
        IF(NEW.TIPO_PCD_ID = 4) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Intelectual';
        END
        IF(NEW.TIPO_PCD_ID = 5) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Mental';
        END
        IF(NEW.TIPO_PCD_ID = 6) THEN
        BEGIN
           HISTORICO = HISTORICO||', Tipo Defic. : Reabilitado';
        END
    END  

    IF (OLD.DATA_ADMISSAO <> NEW.DATA_ADMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Dt. Admissao: '||FN_DATE_TO_STRING(OLD.MOTIVO_DEMISSAO)||' -> '||FN_DATE_TO_STRING(NEW.MOTIVO_DEMISSAO);
    END

    IF (OLD.DATA_NASCIMENTO <> NEW.DATA_NASCIMENTO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Dt. Nascimento: '||FN_DATE_TO_STRING(OLD.DATA_NASCIMENTO)||' -> '||FN_DATE_TO_STRING(NEW.DATA_NASCIMENTO);
    END

    IF (OLD.DATA_DEMISSAO <> NEW.DATA_DEMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Dt. Demissao: '||FN_DATE_TO_STRING(OLD.DATA_DEMISSAO)||' -> '||FN_DATE_TO_STRING(NEW.DATA_DEMISSAO);
    END

    IF (OLD.SITUACAO <> NEW.SITUACAO) THEN
    BEGIN
        IF(NEW.SITUACAO = '0') THEN
        BEGIN
           HISTORICO = HISTORICO||', Situacao : INATIVO';
        END
        IF(NEW.SITUACAO = '1') THEN
        BEGIN
           HISTORICO = HISTORICO||', Situacao : ATIVO';
        END
        IF(NEW.SITUACAO = '2') THEN
        BEGIN
           HISTORICO = HISTORICO||', Situacao : DEMITIDO';
        END
        IF(NEW.SITUACAO = '3') THEN
        BEGIN
           HISTORICO = HISTORICO||', Situacao : DESISTENTE';
        END
        IF(NEW.SITUACAO = '4') THEN
        BEGIN
           HISTORICO = HISTORICO||', Situacao : OUTROS';
        END
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',OLD.CODIGO, HISTORICO);
    END
END;

CREATE TRIGGER TTBCOLABORADOR_B02D FOR TBCOLABORADOR
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Colaborador excluido';
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCOLABORADOR',OLD.CODIGO, HISTORICO);
    END
END;


















