ALTER TABLE TBINTEGRACAO_API
    ADD ID_BACKUP INTEGER;

SET TERM ^ ;

CREATE OR ALTER procedure SPI_INTEGRACAO_API (
    TABELA varchar(50),
    TABELA_ID integer,
    STATUS varchar(10),
    ID_BACKUP integer = 2)
as
begin
  UPDATE OR INSERT INTO tbintegracao_api (STATUS_REGISTRO, TABELA, TABELA_ID, ID_BACKUP)
    VALUES (:STATUS, :TABELA, :TABELA_ID, :ID_BACKUP)
  MATCHING (TABELA, TABELA_ID);
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbmodelo_cor_b997iud for tbmodelo_cor
active before insert or update or delete position 98
AS
declare variable codigo integer;
begin
    if(inserting)then execute procedure spi_integracao_mobile('TBMODELO_COR',new.id,'I');
    if(updating )then execute procedure spi_integracao_mobile('TBMODELO_COR',new.id,'A');
    if(deleting )then execute procedure spi_integracao_mobile('TBMODELO_COR',old.id,'D');

    if(inserting or updating)then
    begin
        if(new.status is distinct from old.status and new.status = '0')then
        begin
            codigo = coalesce((select first 1 p.codigo from tbproduto p where p.modelo_codigo = new.modelo_id and p.cor_codigo = new.cor_id),0);
    
            if(codigo > 0)then
            begin
                if(inserting)then execute procedure spi_integracao_api('TBPRODUTO_INATIVO',:codigo,'I', new.modelo_id);
                if(updating )then execute procedure spi_integracao_api('TBPRODUTO_INATIVO',:codigo,'A', new.modelo_id);
            end
        end
    end

    if(deleting)then
    begin
        codigo = coalesce((select first 1 p.codigo from tbproduto p where p.modelo_codigo = old.modelo_id and p.cor_codigo = old.cor_id),0);

        if(codigo > 0)then
        begin
            if(deleting )then execute procedure spi_integracao_api('TBPRODUTO_INATIVO',:codigo,'D', old.modelo_id);
        end
    end
end
^

SET TERM ; ^

SET TERM ^ ;

CREATE OR ALTER trigger ttbproduto_aiud_api for tbproduto
active after insert or update or delete position 99
AS
begin
    if(inserting or updating)then
    begin
        if(new.status is distinct from old.status and new.status = '0')then
        begin
            if(inserting)then execute procedure spi_integracao_api('TBPRODUTO_INATIVO',new.codigo,'I', new.modelo_codigo);
            if(updating )then execute procedure spi_integracao_api('TBPRODUTO_INATIVO',new.codigo,'A', new.modelo_codigo);
        end
    end

    if(deleting )then execute procedure spi_integracao_api('TBPRODUTO_INATIVO',old.codigo,'D', old.modelo_codigo);
end
^

SET TERM ; ^

