do $$ 
declare
    _id_mnt_estq integer;
    _id_nf integer;
    _id_emp integer;
    _dt_mnt_estq date;
    _id_dep integer;
    _id_grd_estq varchar;
begin
    _id_nf       := 30501;
    _id_mnt_estq := nextval('sq_mnt_estq');
    _dt_mnt_estq := current_date;
    
    select distinct
        tb_nf_item.id_dep,
        tb_nf_item.id_grd_estq,
        tb_nf_item.id_emp
    into
        _id_dep,
        _id_grd_estq,
        _id_emp
    from tb_nf
    join tb_nf_item on
        (tb_nf.id_emp = tb_nf_item.id_emp and
         tb_nf.id_nf = tb_nf_item.id_nf)
    where
        tb_nf.id_nf = _id_nf
    limit 1;
    
    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, 'EXTORNO DE ESTOQUE DA NOTA FISCAL ' || cast(_id_nf 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_nf_item.id_emp,
        _id_mnt_estq,
        tb_nf_item.id_nf_item,
        'E', 
        _id_dep,
        tb_nf_item.id_item, _id_grd_estq,
        tb_nf_item.id_und_med_com, tb_nf_item.vl_qtd_com,
        tb_nf_item.id_und_med_mov, tb_nf_item.vl_qtd_mov
    from tb_nf
    join tb_nf_item on
        (tb_nf.id_emp = tb_nf_item.id_emp and
         tb_nf.id_nf = tb_nf_item.id_nf)
    where
        tb_nf.id_nf = _id_nf;
end $$;