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

    HISTORICO = '';

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

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

CREATE OR ALTER TRIGGER TTBVEICULO_B01U FOR TBVEICULO
ACTIVE BEFORE UPDATE POSITION 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE TP_RODADO_NEW VARCHAR(500);
DECLARE VARIABLE TP_RODADO_OLD VARCHAR(500);
DECLARE VARIABLE TP_CARROR_NEW VARCHAR(500);
DECLARE VARIABLE TP_CARROR_OLD VARCHAR(500);
DECLARE VARIABLE TP_PROP_NEW VARCHAR(500);
DECLARE VARIABLE TP_PROP_OLD VARCHAR(500);
BEGIN

    HISTORICO = '';
    
    IF (OLD.RNTRC <> NEW.RNTRC) THEN
    BEGIN
        HISTORICO = HISTORICO||' RNTRC: '||OLD.RNTRC||' -> '||NEW.RNTRC;
    END
    IF (OLD.CIOT <> NEW.CIOT) THEN
    BEGIN
        HISTORICO = HISTORICO||', CIOT: '||OLD.CIOT||' -> '||NEW.CIOT;
    END
    IF (OLD.PLACA <> NEW.PLACA) THEN
    BEGIN
         HISTORICO = HISTORICO||', Placa: '||OLD.PLACA||' -> '||NEW.PLACA;
    END
    IF (OLD.RENAVAM <> NEW.RENAVAM) THEN
    BEGIN
        HISTORICO = HISTORICO||', Renavam: '||OLD.RENAVAM||' -> '||NEW.RENAVAM;
    END
    IF (OLD.TARA <> NEW.TARA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tara: '||OLD.TARA||' -> '||NEW.TARA;
    END
    IF (OLD.CAPACIDADE <> NEW.CAPACIDADE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Capacidade: '||OLD.CAPACIDADE||' -> '||NEW.CAPACIDADE;
    END
    IF (OLD.TIPO_RODADO <> NEW.TIPO_RODADO) THEN
    BEGIN
        TP_RODADO_OLD = CASE
        WHEN OLD.TIPO_RODADO = '00' THEN 'Truck'
        WHEN OLD.TIPO_RODADO = '01' THEN 'Toco'
        WHEN OLD.TIPO_RODADO = '02' THEN 'Cavalo Mecanico'
        WHEN OLD.TIPO_RODADO = '03' THEN 'VAN'
        WHEN OLD.TIPO_RODADO = '04' THEN 'Utilitario'
        WHEN OLD.TIPO_RODADO = '05' THEN 'Outros'
        ELSE ''
        END;
        TP_RODADO_NEW = CASE
        WHEN NEW.TIPO_RODADO = '00' THEN 'Truck'
        WHEN NEW.TIPO_RODADO = '01' THEN 'Toco'
        WHEN NEW.TIPO_RODADO = '02' THEN 'Cavalo Mecanico'
        WHEN NEW.TIPO_RODADO = '03' THEN 'VAN'
        WHEN NEW.TIPO_RODADO = '04' THEN 'Utilitario'
        WHEN NEW.TIPO_RODADO = '05' THEN 'Outros'
        ELSE ''
        END;
       HISTORICO = HISTORICO||', Tp. Rodado: '||TP_RODADO_OLD||' -> '||TP_RODADO_NEW;
    END
    IF (OLD.TIPO_CARROCERIA <> NEW.TIPO_CARROCERIA) THEN
    BEGIN
        TP_CARROR_OLD = CASE
        WHEN OLD.TIPO_CARROCERIA = '00' THEN 'Nao Aplicavel'
        WHEN OLD.TIPO_CARROCERIA = '01' THEN 'Aberta'
        WHEN OLD.TIPO_CARROCERIA = '02' THEN 'Fechada'
        WHEN OLD.TIPO_CARROCERIA = '03' THEN 'Graneleira'
        WHEN OLD.TIPO_CARROCERIA = '04' THEN 'Porta Container'
        WHEN OLD.TIPO_CARROCERIA = '05' THEN 'Sider'
        ELSE ''
        END;
        TP_CARROR_NEW = CASE
        WHEN NEW.TIPO_CARROCERIA = '00' THEN 'Nao Aplicavel'
        WHEN NEW.TIPO_CARROCERIA = '01' THEN 'Aberta'
        WHEN NEW.TIPO_CARROCERIA = '02' THEN 'Fechada'
        WHEN NEW.TIPO_CARROCERIA = '03' THEN 'Graneleira'
        WHEN NEW.TIPO_CARROCERIA = '04' THEN 'Porta Container'
        WHEN NEW.TIPO_CARROCERIA = '05' THEN 'Sider'
        ELSE ''
        END;
       HISTORICO = HISTORICO||', Tp. Carroceria: '||TP_CARROR_OLD||' -> '||TP_CARROR_NEW;
    END
    IF (OLD.UF_VEICULO_TRACAO <> NEW.UF_VEICULO_TRACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', UF Veiculo: '||OLD.UF_VEICULO_TRACAO||' -> '||NEW.UF_VEICULO_TRACAO;
    END
    IF (OLD.RNTRC_PROPRIETARIO <> NEW.RNTRC_PROPRIETARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', RNTC(Prop.): '||OLD.RNTRC_PROPRIETARIO||' -> '||NEW.RNTRC_PROPRIETARIO;
    END
    IF (OLD.TIPO_PROPRIEDADE <> NEW.TIPO_PROPRIEDADE) THEN
    BEGIN
        TP_PROP_OLD = CASE
        WHEN OLD.TIPO_PROPRIEDADE = '0' THEN 'Agregado'
        WHEN OLD.TIPO_PROPRIEDADE = '1' THEN 'Independente'
        WHEN OLD.TIPO_PROPRIEDADE = '2' THEN 'Outros'
        ELSE ''
        END;
        TP_PROP_NEW = CASE
        WHEN NEW.TIPO_PROPRIEDADE = '0' THEN 'Agregado'
        WHEN NEW.TIPO_PROPRIEDADE = '1' THEN 'Independente'
        WHEN NEW.TIPO_PROPRIEDADE = '2' THEN 'Outros'
        ELSE ''
        END;
        HISTORICO = HISTORICO||', Tp. Proprietario: '||TP_PROP_OLD||' -> '||TP_PROP_NEW;
    END
    IF (OLD.NOME_PROPRIETARIO <> NEW.NOME_PROPRIETARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Nome alterada.';
    END
    IF (OLD.CPF_PROPRIETARIO <> NEW.CPF_PROPRIETARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', CPF: '||OLD.CPF_PROPRIETARIO||' -> '||NEW.CPF_PROPRIETARIO;
    END
    IF (OLD.IE_PROPRIETARIO <> NEW.IE_PROPRIETARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tara: '||OLD.IE_PROPRIETARIO||' -> '||NEW.IE_PROPRIETARIO;
    END
    IF (OLD.UF_PROPRIETARIO <> NEW.UF_PROPRIETARIO) THEN
    BEGIN
        HISTORICO = HISTORICO||', UF: '||OLD.UF_PROPRIETARIO||' -> '||NEW.UF_PROPRIETARIO;
    END
    IF (OLD.CCUSTO <> NEW.CCUSTO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Ccusto: '||OLD.CCUSTO||' -> '||NEW.CCUSTO;
    END
    IF (OLD.TIPO_COMBUSTIVEL <> NEW.TIPO_COMBUSTIVEL) THEN
    BEGIN
        HISTORICO = HISTORICO||', Tp. Combustivel: '||OLD.TIPO_COMBUSTIVEL||' -> '||NEW.TIPO_COMBUSTIVEL;
    END
    IF (OLD.MARCA <> NEW.MARCA) THEN
    BEGIN
        HISTORICO = HISTORICO||', Marca: '||OLD.MARCA||' -> '||NEW.MARCA;
    END
    IF (OLD.MODELO <> NEW.MODELO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Modelo: '||OLD.MODELO||' -> '||NEW.MODELO;
    END
    IF (OLD.ANO <> NEW.ANO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Ano: '||OLD.ANO||' -> '||NEW.ANO;
    END
    IF (OLD.CAPACIDADE_TANQUE <> NEW.CAPACIDADE_TANQUE) THEN
    BEGIN
        HISTORICO = HISTORICO||', Capac. Tanque: '||OLD.CAPACIDADE_TANQUE||' -> '||NEW.CAPACIDADE_TANQUE;
    END
    IF (OLD.REVISAO <> NEW.REVISAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Revisao: '||OLD.REVISAO||' -> '||NEW.REVISAO;
    END
    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
    BEGIN
        HISTORICO = HISTORICO||', Observacao alterada.';
    END

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

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

    HISTORICO = '';

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

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