SET TERM ^ ;

CREATE OR ALTER TRIGGER TTBREGISTRO_VISITA_B1U FOR TBREGISTRO_VISITA
ACTIVE BEFORE UPDATE POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

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

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

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

    IF (OLD.CLIENTE_PROSPECCAO_NOME <> NEW.CLIENTE_PROSPECCAO_NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||' CLI PROSPEC:'||OLD.CLIENTE_PROSPECCAO_NOME||'->'||NEW.CLIENTE_PROSPECCAO_NOME;
    END

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

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

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

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

    IF (OLD.CLIENTE_PROSPECCAO_NOME <> NEW.CLIENTE_PROSPECCAO_NOME) THEN
    BEGIN
        HISTORICO = HISTORICO||' CLI.PROSPEC:'||OLD.CLIENTE_PROSPECCAO_NOME||'->'||NEW.CLIENTE_PROSPECCAO_NOME;
    END

    IF (OLD.LOCALIZACAO_VALIDA <> NEW.LOCALIZACAO_VALIDA) THEN
    BEGIN
        HISTORICO = HISTORICO||' LOC VAL:'||OLD.LOCALIZACAO_VALIDA||'->'||NEW.LOCALIZACAO_VALIDA;
    END

    if (OLD.JUSTIF_CONTINGENCIA <> NEW.JUSTIF_CONTINGENCIA) then
    BEGIN
        HISTORICO = HISTORICO||' JUST.CONT:'||FN_ELIPSES(OLD.JUSTIF_CONTINGENCIA,100)||'->'||FN_ELIPSES(NEW.JUSTIF_CONTINGENCIA,100);
    END

    IF (HISTORICO <> '') THEN
    BEGIN
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
       'TBREGISTRO_VISITA', OLD.ID,
      (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       FN_ELIPSES(:HISTORICO,500));
    END
END

^

UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
                      VALUES (12112, 'VEN', 'VEN', '1   ', '', 'REGISTRO DE VISITAS', '2022-04-19 00:00:00')
                    MATCHING (CONTROLE)

^

SET TERM ; ^