do $$ 
declare
    _id_mnt_estq integer;
    _id_ped integer;
    _id_emp integer;
    _dt_mnt_estq date;
    _id_dep_dst integer;
begin
    _id_ped      := 22501;
    _id_mnt_estq := nextval('sq_mnt_estq');
    _dt_mnt_estq := current_date;
    
    select
        tb_carreg.id_dep_org,
        tb_carreg.id_emp
    into
        _id_dep_dst,
        _id_emp
    from tb_ped
    join tb_carreg_ped on
        (tb_ped.id_emp = tb_carreg_ped.id_emp and
         tb_ped.id_ped = tb_carreg_ped.id_ped)
    join tb_carreg on
        (tb_carreg_ped.id_emp = tb_carreg.id_emp and
         tb_carreg_ped.id_carreg = tb_carreg.id_carreg)
    where
        tb_ped.id_ped = _id_ped;
    
    insert into tb_mnt_estq
        (id_emp, id_mnt_estq, dt_mnt_estq, op, 
         id_dep_dst, descr)
    values
        (_id_emp, _id_mnt_estq, _dt_mnt_estq, 'E',
         _id_dep_dst, 'EXTORNO DE ESTOQUE DE PEDIDO DE FATURAMENTO ' || cast(_id_ped as varchar));
        
    insert into tb_mnt_estq_item
        (id_emp, id_mnt_estq, id_mnt_estq_item,
         op, id_dep_dst,
         id_item, id_grd_estq, 
         id_und_med, vl_qtd,
         id_und_med_mov, vl_qtd_mov)
    select 
        tb_ped_item.id_emp,
        _id_mnt_estq,
        tb_ped_item.id_ped_item,
        'E', 
        tb_carreg.id_dep_org,
        tb_ped_item.id_item, 'GERAL',
        tb_ped_item.id_und_med, tb_ped_item.vl_qtd,
        tb_ped_item.id_und_med_mov, tb_ped_item.vl_qtd_mov
    from tb_ped_item
    join tb_carreg_ped on
        (tb_ped_item.id_emp = tb_carreg_ped.id_emp and
         tb_ped_item.id_ped = tb_carreg_ped.id_ped)
    join tb_carreg on
        (tb_carreg_ped.id_emp = tb_carreg.id_emp and
         tb_carreg_ped.id_carreg = tb_carreg.id_carreg)
    left outer join tb_item_estq on
        (tb_ped_item.id_item = tb_item_estq.id_item and
         tb_ped_item.id_emp = tb_item_estq.id_emp and
         tb_carreg.id_dep_org = tb_item_estq.id_dep and
         tb_item_estq.id_grd_estq = 'GERAL')
    where
        tb_ped_item.id_ped = _id_ped;
end $$;