UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
   VALUES (12430, 'VEN', 'VEN', '1', '', 'CADASTRO DE VENDEDORES', '2021-06-09 09:05:20')
   MATCHING(CONTROLE);

CREATE OR ALTER TRIGGER TTBREPRESENTANTE_VENDEDOR_B01I FOR TBREPRESENTANTE_VENDEDOR
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO  VARCHAR(500);
DECLARE VARIABLE HISTORICO2 VARCHAR(500);
BEGIN

    HISTORICO  = '';
    HISTORICO2 = '';

    IF(NEW.CODIGO > 0) THEN
    BEGIN
        HISTORICO  = HISTORICO||'VEND. INCLUIDO: '||FN_LPAD(NEW.CODIGO,4,0)||' - '||NEW.NOME;
        HISTORICO2 = HISTORICO2||'REGISTRO INCLUIDO.';
    END

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

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

CREATE OR ALTER TRIGGER TTBREPRESENTANTE_VENDEDOR_B01U FOR TBREPRESENTANTE_VENDEDOR
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

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

    IF(OLD.COMISSAO <> NEW.COMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' %COM:'||OLD.COMISSAO||'->'||NEW.COMISSAO;
    END        

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

    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'VEND: '||NEW.CODIGO||' ALTERADO'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBEMPRESA', NEW.REPRESENTANTE_CODIGO, HISTORICO);
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'REGISTRO ALTERADO '||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBREPRESENTANTE_VENDEDOR', NEW.CODIGO, HISTORICO);
    END

END;

CREATE OR ALTER TRIGGER TTBREPRESENTANTE_VENDEDOR_B01D FOR TBREPRESENTANTE_VENDEDOR
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO  VARCHAR(500);
DECLARE VARIABLE HISTORICO2 VARCHAR(500);
BEGIN

    HISTORICO = '';
    HISTORICO2 = '';

    IF(OLD.CODIGO > 0) THEN
    BEGIN
       HISTORICO  = HISTORICO||'VEND. EXCLUIDO: '||FN_LPAD(OLD.CODIGO,4,0)||' - '||OLD.NOME;
       HISTORICO2 = HISTORICO2||'REGISTRO INCLUIDO.';
    END

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

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

CREATE TABLE TBVENDEDOR_META (
    ID                INTEGER NOT NULL,
    VENDEDOR_ID       INTEGER NOT NULL, 
    DATA_INICIAL      DATE DEFAULT 'NOW',
    DATA_FINAL        DATE DEFAULT 'NOW',
    VALOR             NUMERIC(15,2) default 0
);

ALTER TABLE TBVENDEDOR_META ADD PRIMARY KEY (ID);

CREATE SEQUENCE GTBVENDEDOR_META;

CREATE OR ALTER TRIGGER TTBVENDEDOR_META_B01I FOR TBVENDEDOR_META
ACTIVE BEFORE INSERT POSITION 1
AS
BEGIN
    IF(NEW.ID is null) THEN
    BEGIN
       NEW.ID = GEN_ID(GTBVENDEDOR_META,1);
    END
END;

CREATE OR ALTER TRIGGER TTBVENDEDOR_META_B02I FOR TBVENDEDOR_META
ACTIVE BEFORE INSERT POSITION 9
AS
DECLARE VARIABLE HISTORICO  VARCHAR(500);
BEGIN

    HISTORICO  = '';

    IF(NEW.ID > 0) THEN
    BEGIN
--        HISTORICO  = HISTORICO||'META PERIODO '||FORMATDATE(NEW.DATA_INICIAL)||' A '||FORMATDATE(NEW.DATA_FINAL)||'VALOR R$'||(NEW.VALOR)||' INCLUÍDA';
        HISTORICO  = HISTORICO||'META ID: '||FN_LPAD(NEW.ID,4,0)||',VALOR R$'||(NEW.VALOR)||' INCLUÍDA';
    END

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

CREATE OR ALTER TRIGGER TTBVENDEDOR_META_B01U FOR TBVENDEDOR_META
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(1000);
BEGIN

    HISTORICO = '';

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

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

    IF(OLD.VALOR <> NEW.VALOR) THEN
    BEGIN
        HISTORICO = HISTORICO||' VALOR:R$'||OLD.VALOR||'->R$'||NEW.VALOR;
    END

    IF(HISTORICO <> '') THEN
    BEGIN
        HISTORICO = 'META ID:'||FN_LPAD(NEW.ID,4,0)||'VALOR:R$'||OLD.VALOR||' ALTERADA:'||HISTORICO;
        EXECUTE PROCEDURE SPI_HISTORICO('TBREPRESENTANTE_VENDEDOR', NEW.VENDEDOR_ID, HISTORICO);
    END

END;

CREATE OR ALTER TRIGGER TTBVENDEDOR_META_B01D FOR TBVENDEDOR_META
ACTIVE BEFORE DELETE POSITION 9
AS
DECLARE VARIABLE HISTORICO  VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF(OLD.ID > 0) THEN
    BEGIN
--        HISTORICO  = HISTORICO||'META PERIODO '||FORMATDATE(NEW.DATA_INICIAL)||' A '||FORMATDATE(NEW.DATA_FINAL)||'VALOR R$'||(NEW.VALOR)||' EXCLUÍDA';
        HISTORICO  = HISTORICO||'META ID: '||FN_LPAD(OLD.ID,4,0)||',VALOR R$'||(OLD.VALOR)||' EXCLUÍDA';
    END

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