Estou com um pequeno problema em uma procedure que deve preencher um arquivo.txt para geração do sintegra.
O problema é que, no lançamento de um dos registros, o UTL_File.Put_line não está quebrando a linha e está gravando tudo como uma unica linha.
Alguém saberia me dizer o que está acontecendo?
-- Registro 54
n_cod_emp_nf := -1;
n_cod_publico := -1;
n_num_nota := -1;
n_cod_ser_nota := -1;
v_cont := 1;
v_nota := 0;
v_reg := 0;
For reg_54 In (Select Max('54'||rpad(replace(replace(replace(nvl(p.num_cnpj,'0'),'.',''),'/',''),'-',''),14,'0')||
lpad(nvl(s.mod_nota,0),2,0)||
rpad(nvl(sn.des_ser_nota,' '),3,' ')||
lpad(nvl(n.num_nota,0),6,'0')||
lpad(replace(nvl(cf.num_cfop,''),'.',''),4,'0')||
lpad(nvl(cs.cod_sit_trib,0),3,'0')||
lpad(nvl(v_cont,0),3,0)||
rpad(nvl(i.cod_produto,''),14,' ')) l_r54a,
sfn_formata_numerico(nvl(sum(i.qtd_tot_prd),0),11,3) l_r54b,
sfn_formata_numerico(nvl(sum(i.val_unitario*i.qtd_tot_prd),0),12,2) l_r54c,
sfn_formata_numerico(nvl(sum(i.val_desconto),0),12,2) l_r54d,
sfn_formata_numerico(nvl(sum(i.val_bas_icms),0),12,2) l_r54e,
sfn_formata_numerico(nvl(sum(i.val_bas_sub),0),12,2) l_r54f,
sfn_formata_numerico(nvl(sum(i.val_ipi_prod),0),12,2) l_r54g,
sfn_formata_numerico(nvl(sum(i.per_icms_prd),0),4,2) l_r54h,
--chr(13) l_r54,
i.cod_empresa, i.cod_publico,i.num_nota, i.cod_ser_nota, cf.cod_cfop, i.per_icms_prd,n.dat_emissao,p.num_cnpj
From nota_fiscal n, publico p, serie_nota s, item_prd_nf i, tipo_operac t,
logradouro l, cidade c, unid_federac u, serie_nota sn, tab_cst cs,cfop cf
Where n.cod_publico = p.cod_publico (+) And
s.cod_ser_nota = n.cod_ser_nota (+) And
n.cod_empresa = i.cod_empresa And
n.cod_publico = i.cod_publico And
n.num_nota = i.num_nota And
n.cod_ser_nota = i.cod_ser_nota And
i.cod_tip_oper = t.cod_tip_oper And
p.cod_pais_end = l.cod_pais And
p.num_cep_end = l.num_cep And
l.cod_cidade = c.cod_cidade And
c.cod_uf = u.cod_uf And
n.cod_ser_nota = sn.cod_ser_nota And
t.cod_tab_cst = cs.cod_tab_cst And
t.cod_cfop = cf.cod_cfop and
n.dat_emissao Between d_inicio And d_fim and
t.sit_sintegra = 'S'
Group By i.cod_empresa, i.cod_publico,i.num_nota, i.cod_ser_nota, cf.cod_cfop, i.per_icms_prd,n.dat_emissao,p.num_cnpj
Order By cf.cod_cfop,to_char(n.dat_emissao,'yyyymmdd'), p.num_cnpj, i.num_nota)
Loop
v_reg := v_reg +1;
if v_reg <> 1 then
if v_nota = reg_54.num_nota then
v_cont := v_cont +1;
else
v_cont := 1;
v_nota := reg_54.num_nota;
end if;
else
v_nota := reg_54.num_nota;
end if;
v_cont_54 := v_cont_54 +1;
If reg_54.cod_empresa != n_cod_emp_nf And
reg_54.cod_publico != n_cod_publico And
reg_54.num_nota != n_num_nota And
reg_54.cod_ser_nota != n_cod_ser_nota
Then
n_ord_item_nf := 1;
n_cod_emp_nf := reg_54.cod_empresa;
n_cod_publico := reg_54.cod_publico;
n_num_nota := reg_54.num_nota;
n_cod_ser_nota := reg_54.cod_ser_nota;
Else n_ord_item_nf := n_ord_item_nf + 1;
End If;
vc2_tp_reg_54 := substr(reg_54.l_r54a,1,34)||lpad(v_cont,3,0)||substr(reg_54.l_r54a,38);
vc2_tp_reg_54 := vc2_tp_reg_54 || reg_54.l_r54b||reg_54.l_r54c||reg_54.l_r54d||reg_54.l_r54e||reg_54.l_r54f||reg_54.l_r54g||reg_54.l_r54h||reg_54.l_r54;
--UTL_File.new_line(file => vo_arq_saida, lines => 1);
UTL_File.Put_line(vo_arq_saida,vc2_tp_reg_54);
End Loop;