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

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

    HISTORICO = '';

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

    IF ((SELECT char_length(A.DESCRICAO) FROM TBMODELO_LINHA A WHERE A.DESCRICAO = NEW.DESCRICAO AND A.GRADE_CODIGO = NEW.GRADE_CODIGO AND A.FAMILIA_CODIGO = NEW.FAMILIA_CODIGO AND A.TIPOPRODUTO_CODIGO = NEW.TIPOPRODUTO_CODIGO) > 0) then
    BEGIN
        EXCEPTION "..." 'Registro ja existente com os dados informados!, Descricao: '||NEW.DESCRICAO;
    END

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

CREATE OR ALTER TRIGGER TTBMODELO_LINHA_B9U FOR TBMODELO_LINHA
ACTIVE BEFORE UPDATE POSITION 9
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
begin

   HISTORICO = '';

   if (OLD.DESCRICAO <> NEW.DESCRICAO) then
       BEGIN
       HISTORICO = HISTORICO||' Desc.'||OLD.DESCRICAO||'->'||NEW.DESCRICAO;
       END
   if (OLD.MAGENTO_ID <> NEW.MAGENTO_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Id e-comerce '||OLD.MAGENTO_ID||'->'||NEW.MAGENTO_ID;
       END
   if (OLD.FAMILIA_CODIGO <> NEW.FAMILIA_CODIGO) then
       BEGIN
       HISTORICO = HISTORICO||' Fam.'||OLD.FAMILIA_CODIGO||'->'||NEW.FAMILIA_CODIGO;
       END
   if (OLD.TIPOPRODUTO_CODIGO <> NEW.TIPOPRODUTO_CODIGO) then
       BEGIN
       HISTORICO = HISTORICO||' Tip.'||OLD.TIPOPRODUTO_CODIGO||'->'||NEW.TIPOPRODUTO_CODIGO;
       END
   if (OLD.GRADE_CODIGO <> NEW.GRADE_CODIGO) then
       BEGIN
       HISTORICO = HISTORICO||' Grd.'||OLD.GRADE_CODIGO||'->'||NEW.GRADE_CODIGO;
       END
   if (OLD.PRAZO_PRODUCAO <> NEW.PRAZO_PRODUCAO) then
       BEGIN
       HISTORICO = HISTORICO||' Pzo.'||OLD.PRAZO_PRODUCAO||'->'||NEW.PRAZO_PRODUCAO;
       END
   if (OLD.PECAS_CONJUNTO <> NEW.PECAS_CONJUNTO) then
       BEGIN
       HISTORICO = HISTORICO||' Cnj.'||OLD.PECAS_CONJUNTO||'->'||NEW.PECAS_CONJUNTO;
       END
   if (OLD.REFERENCIA_ID <> NEW.REFERENCIA_ID) then
       BEGIN
       HISTORICO = HISTORICO||' Ref.'||OLD.REFERENCIA_ID||'->'||NEW.REFERENCIA_ID;
       END
   if (OLD.OBSERVACAO <> NEW.OBSERVACAO) then
       BEGIN
       HISTORICO = HISTORICO||' Obs.'||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
       END
   if (OLD.MD_DATA <> NEW.MD_DATA) then
       BEGIN
       HISTORICO = HISTORICO||' Data Lanc. '||OLD.MD_DATA||'->'||NEW.MD_DATA;
       END
   if (OLD.MD <> NEW.MD) then
       BEGIN
       HISTORICO = HISTORICO||' MD. '||OLD.MD||'->'||NEW.MD;
       END
   if (OLD.STATUS <> NEW.STATUS) then
       BEGIN
       if (NEW.STATUS = '0') then
           HISTORICO = HISTORICO||' Status Inativado';
       if (NEW.STATUS = '1') then
           HISTORICO = HISTORICO||' Status Ativado';
       END

   if (HISTORICO <> '') Then
       Begin
       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBLINHA', 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);
       EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO_LINHA', NEW.CODIGO, HISTORICO);
       End
End;

CREATE TRIGGER TTBMODELO_LINHA_B02D FOR TBMODELO_LINHA
ACTIVE BEFORE DELETE POSITION 1
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
BEGIN

    HISTORICO = '';

    IF (OLD.CODIGO > 0) THEN
    BEGIN
        HISTORICO = HISTORICO||'Registro Excluido: '||old.CODIGO;
    END

    IF (HISTORICO <> '') THEN
    BEGIN
        EXECUTE PROCEDURE SPI_HISTORICO('TBMODELO_LINHA',old.CODIGO, HISTORICO);
    END
end;

