SET TERM ^ ;

CREATE OR ALTER trigger ttbremessa_b10u for tbremessa
active before update position 10
AS
declare variable ITEM_ID integer;
declare variable VAGR_REM_ID integer;
begin
  if(new.agrupamento_id is distinct from old.agrupamento_id and coalesce(new.agrupamento_id,0) > 0 and new.origem = 22600)then
  begin

    update TBPEDIDO_ITEM_PROCESSADO t set t.agrupamento_id = new.agrupamento_id where t.remessa = new.remessa;
    EXECUTE PROCEDURE SPI_REMESSA_ITEM_ALOCACAO(new.numero, new.agrupamento_id);

  end

  if(new.agrupamento_id is distinct from old.agrupamento_id and coalesce(new.agrupamento_id,0) = 0 and new.origem = 22600)then
  begin

    update TBPEDIDO_ITEM_PROCESSADO t set t.agrupamento_id = 0 where t.remessa = new.remessa;

    --VERIFICAR SE REMESSA JA TEM VINCULOS
    select first 1
        s.id
    from TBREMESSA_ITEM_ALOCACAO s
    where s.remessa = new.numero
    and s.tabela_id > 0
    into :ITEM_ID;
    
    ITEM_ID = coalesce(ITEM_ID,0);
    
    if(ITEM_ID > 0)then
    begin
        exception "..." 'ITENS DA ALOCACAO DA REMESSA COM PEDIDOS VINCULADOS';
    end

    --REMOVER AS BAIXA DE SALDO
    FOR
        select
            s.id
        from TBREMESSA_ITEM_ALOCACAO s
        where s.remessa = new.numero
    into
        :VAGR_REM_ID
    DO begin
        DELETE FROM TBAGRUPAMENTO_CARGA_SKU_UP WHERE TIPO = 2 AND AGRUP_PED_ID = :VAGR_REM_ID;
    END

    --REMOVER A ALOCACAO DA REMESSA
    DELETE FROM TBREMESSA_ITEM_ALOCACAO S WHERE s.remessa = new.numero;

  end
end
^

SET TERM ; ^