SET TERM ^ ;

CREATE OR ALTER trigger ttbrequisicao_placa_aloc_biu_01 for tbrequisicao_placa_alocacao
active before insert or update position 0
AS
declare variable DEN numeric(15,4);
declare variable ESP numeric(15,4);
declare variable densidade numeric(15,4);
declare variable espessura numeric(15,4);
begin

    if(inserting or (updating and (new.produto_id is distinct from old.produto_id or new.densidade is distinct from old.densidade or new.espessura is distinct from old.espessura)))then
    begin
        select first 1
            coalesce(cast(fn_array(DENESP,1,'|') as numeric(15,4)),0) as DEN,
            coalesce(cast(fn_array(DENESP,2,'|') as numeric(15,4)),0) as ESP
        from(
            select
                fn_densidade_espessura_v3(p.modelo_origem,p.cor_codigo) as DENESP
            from tbproduto p
            where p.codigo = new.produto_id
        ) a into DEN, ESP;
    
        DEN = coalesce(DEN,0);
        ESP = coalesce(ESP,0);
    
        if((DEN is distinct from new.densidade) or (ESP is distinct from new.espessura) )then
        begin
            exception "..." 'Erro ao alocar placas, Densidade:'||coalesce(densidade,0)||' -> '||DEN||' e Espessura:'||coalesce(espessura,0)||' -> '||ESP||'.';
        end
    end

end
^

SET TERM ; ^

ALTER TABLE TBPEDIDO_ITEM_PROCESSADO
    ADD RECALCULAR_CONSUMO INTEGER DEFAULT 0;

SET TERM ^ ;

CREATE OR ALTER trigger ttbpedido_item_processado_a3u for tbpedido_item_processado
active after update position 3
AS
declare variable RETORNO_SP varchar(500);
begin
    IF ( coalesce(NEW.ESTOQUE_ID_ESTORNO,0) = 0 and NEW.FAMILIA_CODIGO = 0 AND ( OLD.QUANTIDADE_PEDIDO <> NEW.QUANTIDADE_PEDIDO OR NEW.REMESSA_ACUMULADO_CONTROLE <> OLD.REMESSA_ACUMULADO_CONTROLE ) ) THEN
    BEGIN
        IF ( NEW.REMESSA_ACUMULADO_CONTROLE <> OLD.REMESSA_ACUMULADO_CONTROLE ) THEN
        BEGIN
    
            RETORNO_SP = (SELECT LIST(O_CONS_QUANTIDADE)
                            FROM SPI_REM_CONSUMO_INSUMO6(
                                 NEW.REMESSA,
                                 NEW.REMESSA_ACUMULADO_CONTROLE,
                                 NEW.CONTROLE,
                                 'PJT'));
        END

        RETORNO_SP = (SELECT LIST(O_CONS_QUANTIDADE)
                        FROM SPI_REM_CONSUMO_INSUMO6(
                             OLD.REMESSA,
                             OLD.REMESSA_ACUMULADO_CONTROLE,
                             OLD.CONTROLE,
                             'PJT'));
    END
end
^

SET TERM ; ^

