CREATE TABLE TBCORRETOR (
    ID INTEGER NOT NULL,
    NOME VARCHAR(30),
    COMISSAO NUMERIC(15,2));

ALTER TABLE TBCORRETOR
ADD CONSTRAINT PK_TBCORRETOR
PRIMARY KEY (ID);

CREATE SEQUENCE GTBCORRETOR;

SET TERM ^ ;

create trigger ttbcorretor_bi for tbcorretor
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gtbcorretor,1);
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbcorretor_b01i for tbcorretor
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

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

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

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbcorretor_b01d for tbcorretor
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN
    HISTORICO = '';

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

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBCORRETOR',OLD.ID, HISTORICO);
    END
END
^

SET TERM ; ^

SET TERM ^ ;

CREATE trigger ttbcorretor_b01u for tbcorretor
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.COMISSAO <> NEW.COMISSAO) THEN
    BEGIN
        HISTORICO = HISTORICO||' COMISSÃO:'||OLD.COMISSAO||'->'||NEW.COMISSAO;
    END
	
	IF (OLD.CODIGO <> NEW.CODIGO) THEN
    BEGIN
        HISTORICO = HISTORICO||' CODIGO:'||OLD.CODIGO||'->'||NEW.CODIGO;
    END

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

END
^

SET TERM ; ^

UPDATE OR INSERT INTO TBMENU (CONTROLE, GRUPO, SUBGRUPO, TIPO, URL, DESCRICAO, DATAHORA)
                      VALUES (12480, 'VEN', 'VEN', '1   ', '', 'CADASTRO DE CORRETORES', '2022-05-11 14:02:55')
                    MATCHING (CONTROLE);

COMMIT WORK;

ALTER TABLE TBCORRETOR
    ADD CODIGO VARCHAR(20);



ALTER TABLE TBEMPRESA
    ADD CORRETOR_ID INTEGER;
	
ALTER TABLE TBCLIENTE
    ADD CORRETOR_ID INTEGER;
SET TERM ^ ;

CREATE OR ALTER trigger ttbcliente_b03u for tbcliente
active before update position 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(3000);
DECLARE VARIABLE HISTORICO_OBS VARCHAR(3000);
begin

   HISTORICO = '';

   if (OLD.transportadora_codigo <> NEW.transportadora_codigo) then
       BEGIN
       HISTORICO = :HISTORICO||' TRANSP:'||OLD.transportadora_codigo||'->'||NEW.transportadora_codigo;
       END
   if (OLD.frete <> NEW.frete) then
       BEGIN
       HISTORICO = :HISTORICO||' FRETE:'||OLD.frete||'->'||NEW.frete;
       END
   if (OLD.tag <> NEW.tag) then
       BEGIN
       HISTORICO = :HISTORICO||' TAG:'||OLD.tag||'->'||NEW.tag;
       END
   if (OLD.habilita_preco_esp_catalogo <> NEW.habilita_preco_esp_catalogo) then
       BEGIN
       HISTORICO = :HISTORICO||' HAB.PRECO ESP:'||OLD.habilita_preco_esp_catalogo||'->'||NEW.habilita_preco_esp_catalogo;
       END

   if (OLD.representante_codigo <> NEW.representante_codigo) then
       BEGIN
       HISTORICO = :HISTORICO||' REPRES:'||OLD.representante_codigo||'->'||NEW.representante_codigo;
       END
   if (OLD.representante_comissao <> NEW.representante_comissao) then
       BEGIN
       HISTORICO = :HISTORICO||' %COM.REP:'||OLD.representante_comissao||'->'||NEW.representante_comissao;
       END
   if (OLD.vendedor_codigo <> NEW.vendedor_codigo) then
       BEGIN
       HISTORICO = :HISTORICO||' VEND:'||OLD.vendedor_codigo||'->'||NEW.vendedor_codigo;
       END

    if (OLD.CORRETOR_ID IS DISTINCT FROM NEW.CORRETOR_ID) then
       BEGIN
       HISTORICO = :HISTORICO||' CORRETOR:'||COALESCE(OLD.CORRETOR_ID, '')||'->'||COALESCE(NEW.CORRETOR_ID, '');
       END

   if (OLD.vendedor_comissao <> NEW.vendedor_comissao) then
       BEGIN
       HISTORICO = :HISTORICO||' %COM.VEND:'||OLD.vendedor_comissao||'->'||NEW.vendedor_comissao;
       END

   if (OLD.pagamento_forma <> NEW.pagamento_forma) then
       BEGIN
       HISTORICO = :HISTORICO||' FORM.PG:'||OLD.pagamento_forma||'->'||NEW.pagamento_forma;
       END
   if (OLD.pagamento_condicao <> NEW.pagamento_condicao) then
       BEGIN
       HISTORICO = :HISTORICO||' COND.PG:'||OLD.pagamento_condicao||'->'||NEW.pagamento_condicao;
       END
   if (OLD.boqueia_pagamento_condicao <> NEW.boqueia_pagamento_condicao) then
       BEGIN
       HISTORICO = :HISTORICO||' BLQ.COND.PG:'||OLD.boqueia_pagamento_condicao||'->'||NEW.boqueia_pagamento_condicao;
       END
   if (OLD.limite_credito <> NEW.limite_credito) then
       BEGIN
       HISTORICO = :HISTORICO||' LIM.CRÉD:'||OLD.limite_credito||'->'||NEW.limite_credito;
       END

   if (OLD.tipo_codigo <> NEW.tipo_codigo) then
       BEGIN
       HISTORICO = :HISTORICO||' TIPO:'||OLD.tipo_codigo||'->'||NEW.tipo_codigo;
       END
   if (OLD.substituido_tributario <> NEW.substituido_tributario) then
       BEGIN
       HISTORICO = :HISTORICO||' SUBST.TRIB:'||OLD.substituido_tributario||'->'||NEW.substituido_tributario;
       END
   if (OLD.suframa <> NEW.suframa) then
       BEGIN
       HISTORICO = :HISTORICO||' INSC.SUF:'||OLD.suframa||'->'||NEW.suframa;
       END
   if (OLD.suframa_vencimento <> NEW.suframa_vencimento) then
       BEGIN
       HISTORICO = :HISTORICO||' VENC.SUF:'||OLD.suframa_vencimento||'->'||NEW.suframa_vencimento;
       END
       /*
   if (OLD.confirmacao_automatica <> NEW.confirmacao_automatica) then
       BEGIN
       HISTORICO = :HISTORICO||' CONF.AUT:'||OLD.confirmacao_automatica||'->'||NEW.confirmacao_automatica;
       END
   if (OLD.atende_grade_completa <> NEW.atende_grade_completa) then
       BEGIN
       HISTORICO = :HISTORICO||' AT.GRD.COMPL:'||OLD.atende_grade_completa||'->'||NEW.atende_grade_completa;
       END
   if (OLD.prioridade <> NEW.prioridade) then
       BEGIN
       HISTORICO = :HISTORICO||' PRIOR:'||OLD.prioridade||'->'||NEW.prioridade;
       END
   if (OLD.EMPRESA_VINCULO <> NEW.EMPRESA_VINCULO) then
       BEGIN
       HISTORICO = :HISTORICO||' VINC.EMPRESA:'||OLD.EMPRESA_VINCULO||'->'||NEW.EMPRESA_VINCULO;
       END
       */
   if (OLD.loja <> NEW.loja) then
       BEGIN
       HISTORICO = :HISTORICO||' LJ:'||OLD.loja||'->'||NEW.loja;
       END
   if (OLD.Etiqueta <> NEW.Etiqueta) then
       BEGIN
       HISTORICO = :HISTORICO||' ETIQ:'||OLD.Etiqueta||'->'||NEW.Etiqueta;
       END


   if (OLD.grupo <> NEW.grupo) then
       BEGIN
       HISTORICO = :HISTORICO||' GRP:'||OLD.grupo||'->'||NEW.grupo;
       END

   if (OLD.bloqueia_pedido <> NEW.bloqueia_pedido) then
       BEGIN
       HISTORICO = :HISTORICO||' BLQ.PED:'||OLD.bloqueia_pedido||'->'||NEW.bloqueia_pedido;
       END
   if (OLD.bloqueia_notafiscal <> NEW.bloqueia_notafiscal) then
       BEGIN
       HISTORICO = :HISTORICO||' BLQ.NF:'||OLD.bloqueia_notafiscal||'->'||NEW.bloqueia_notafiscal;
       END
   if (OLD.bloqueio_dias_atraso <> NEW.bloqueio_dias_atraso) then
       BEGIN
       HISTORICO = :HISTORICO||' DIAS BLQ.ATRASO PED:'||OLD.bloqueio_dias_atraso||'->'||NEW.bloqueio_dias_atraso;
       END
   if (OLD.bloqueio_dias_atraso_nf <> NEW.bloqueio_dias_atraso_nf) then
       BEGIN
       HISTORICO = :HISTORICO||' DIAS BLQ.ATRASO NF:'||OLD.bloqueio_dias_atraso_nf||'->'||NEW.bloqueio_dias_atraso_nf;
       END
   if (OLD.bloqueio_dias_semmov <> NEW.bloqueio_dias_semmov) then
       BEGIN
       HISTORICO = :HISTORICO||' DIAS BLQ.S/MOV:'||OLD.bloqueio_dias_semmov||'->'||NEW.bloqueio_dias_semmov;
       END
   if (OLD.data_bloqueio <> NEW.data_bloqueio) then
       BEGIN
       HISTORICO = :HISTORICO||' DT.BLOQ:'||OLD.data_bloqueio||'->'||NEW.data_bloqueio;
       END
   if (OLD.bloqueio_motivo <> NEW.bloqueio_motivo) then
       BEGIN
       HISTORICO = :HISTORICO||' MOT.BLOQ:'||OLD.bloqueio_motivo||'->'||NEW.bloqueio_motivo;
       END
   if (OLD.inativa_dias_semmov <> NEW.inativa_dias_semmov) then
       BEGIN
       HISTORICO = :HISTORICO||' DIAS INAT.S/MOV:'||OLD.inativa_dias_semmov||'->'||NEW.inativa_dias_semmov;
       END

   if (OLD.NOTIFICAR_ATRASO <> NEW.NOTIFICAR_ATRASO) then
       BEGIN
       HISTORICO = :HISTORICO||' NOTIF.ATRASO:'||OLD.NOTIFICAR_ATRASO||'->'||NEW.NOTIFICAR_ATRASO;
       END
   if (OLD.NOTIFICAR_DIAS_ATRASO <> NEW.NOTIFICAR_DIAS_ATRASO) then
       BEGIN
       HISTORICO = :HISTORICO||' DIAS NOTIF.ATRASO:'||OLD.NOTIFICAR_DIAS_ATRASO||'->'||NEW.NOTIFICAR_DIAS_ATRASO;
       END

   if (OLD.CLIENTE_SITUACAO_ID <> NEW.CLIENTE_SITUACAO_ID) then
       BEGIN
       HISTORICO = :HISTORICO||' SIT:'||OLD.CLIENTE_SITUACAO_ID||'->'||NEW.CLIENTE_SITUACAO_ID;
       END

   if (OLD.observacao <> NEW.observacao) then
       BEGIN
       HISTORICO_OBS = :HISTORICO_OBS||' OBS:'||FN_ELIPSES(OLD.observacao,100)||'->'||FN_ELIPSES(NEW.observacao,100);
       END

   if (:HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBEMPRESA', OLD.CODIGO,
      (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),
       :Historico);
       End
   if (:HISTORICO_OBS <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBEMPRESA', OLD.CODIGO,
      (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),
       :HISTORICO_OBS);
       End
end
^

SET TERM ; ^



