CREATE OR ALTER trigger ttbproduto_biud_api for tbproduto
active before insert or update or delete position 999
AS
begin
  if(updating)then
    begin
        if(
            new.descricao is distinct from old.descricao
        )then
        begin
            execute procedure spi_integracao_api('TBMODELO',new.modelo_codigo,'A');
        end
    end else
    begin
        if(inserting)then execute procedure spi_integracao_api('TBMODELO',new.modelo_codigo,'I');
        if(deleting )then execute procedure spi_integracao_api('TBMODELO',old.modelo_codigo,'D');
    end
end;

CREATE OR ALTER trigger ttbempresa_vinculo_app_biud for tbempresa_vinculo_tipo
active before insert or update or delete position 999
AS
begin
    if(inserting)then execute procedure spi_integracao_mobile('TBEMPRESA_VINCULO_TIPO',new.id,'I');
    if(updating )then execute procedure spi_integracao_mobile('TBEMPRESA_VINCULO_TIPO',new.id,'A');
    if(deleting )then execute procedure spi_integracao_mobile('TBEMPRESA_VINCULO_TIPO',old.id,'D');
end;

update TBEMPRESA_VINCULO_TIPO s set s.status = s.status;

SET TERM ^ ;

CREATE OR ALTER trigger ttbremessa_acumulado_b01u for tbremessa_acumulado
active before update position 0
AS
begin

  if(coalesce(new.remessa,0) is distinct from coalesce(old.remessa,0))then
  begin
    exception "..." 'REMESSA DO TALAO NAO PODE SER ALTERADA';
  end

end
^

SET TERM ; ^
SET TERM ^ ;

CREATE OR ALTER function FN_EMPENHADO_PEDIDO (
    ESTABELECIMENTO_ID integer,
    LOCALIZACAO_ID integer,
    PRODUTO_ID integer,
    TAMANHO integer)
returns numeric(18,8)
AS
declare variable RET numeric(18,8);
begin

  ret = coalesce((
            select
                 sum(iif(i.tamanho = 1, s.t01,
                 iif(i.tamanho = 2, s.t02,
                 iif(i.tamanho = 3, s.t03,
                 iif(i.tamanho = 4, s.t04,
                 iif(i.tamanho = 5, s.t05,
                 iif(i.tamanho = 6, s.t06,
                 iif(i.tamanho = 7, s.t07,
                 iif(i.tamanho = 8, s.t08,
                 iif(i.tamanho = 9, s.t09,
                 iif(i.tamanho =10, s.t10,
                 iif(i.tamanho =11, s.t01,
                 iif(i.tamanho =12, s.t02,
                 iif(i.tamanho =13, s.t03,
                 iif(i.tamanho =14, s.t04,
                 iif(i.tamanho =15, s.t05,
                 iif(i.tamanho =16, s.t06,
                 iif(i.tamanho =17, s.t07,
                 iif(i.tamanho =18, s.t08,
                 iif(i.tamanho =19, s.t09,
                 iif(i.tamanho =20, s.t10, 0))))))))))))))))))))) as SALDO
            from tbpedido_item i, tbpedido_item_saldo s
            where i.estabelecimento_codigo = :ESTABELECIMENTO_ID
            and i.produto_codigo = :PRODUTO_ID
            and i.tamanho = :TAMANHO
            and i.pedido = s.pedido
            and s.pedido_item_controle = i.controle
            and  iif(i.tamanho = 1, s.t01 > 0,
                 iif(i.tamanho = 2, s.t02 > 0,
                 iif(i.tamanho = 3, s.t03 > 0,
                 iif(i.tamanho = 4, s.t04 > 0,
                 iif(i.tamanho = 5, s.t05 > 0,
                 iif(i.tamanho = 6, s.t06 > 0,
                 iif(i.tamanho = 7, s.t07 > 0,
                 iif(i.tamanho = 8, s.t08 > 0,
                 iif(i.tamanho = 9, s.t09 > 0,
                 iif(i.tamanho =10, s.t10 > 0,
                 iif(i.tamanho =11, s.t01 > 0,
                 iif(i.tamanho =12, s.t02 > 0,
                 iif(i.tamanho =13, s.t03 > 0,
                 iif(i.tamanho =14, s.t04 > 0,
                 iif(i.tamanho =15, s.t05 > 0,
                 iif(i.tamanho =16, s.t06 > 0,
                 iif(i.tamanho =17, s.t07 > 0,
                 iif(i.tamanho =18, s.t08 > 0,
                 iif(i.tamanho =19, s.t09 > 0,
                 iif(i.tamanho =20, s.t10 > 0, false))))))))))))))))))))
            --and i.qtd_est = 0
            and i.situacao = 1
            and s.quantidade > 0
          ),0);

  return ret;
end
^

SET TERM ; ^

