Remessa de Pagamento e/ou Arquivo Retorno
-
-
@andersonleal Obrigado pelo arquivo! Na verdade o interesse seria num fluxo que trouxesse e resultasse nesse arquivo.
Obrigado!
-
Ah, blz. Entendi errado.. eu faço tudo via sql, depois só um loop na consulta e escrevo o arquivo. Tem muito a ver com o meu banco isso aí, mas se vc seguir a estrutura, campo a campo, deve sair tb```
code_text/*CABEÇALHO DO ARQUIVO*/ SELECT 1 AS ORDEM, 1 as SEQUENCIA,1 as detalhe, '237' ---01.0 ||'0000' ---02.0 ||'0' ---03.0 ||rpad(cast('' as varchar),9,' ') ---04.0 ||'2'---05.0 ||ENT_CNPJ---06.0 ||rpad(cast(FIN_CONTA_CORRENTE.CCO_CODIGO_CONVENIO as varchar),20,' ') ---07.0 || lpad(cast(CCO_AGENCIA as varchar),5,'0') ---08.0 ||SUBSTR(CCO_DIGITO_AGENCIA,1,1)---09.0 ||lpad(cast(CCO_NUMERO as varchar),12,'0') ---10.0 ||CCO_DIGITO_CONTA ---11.0 ||' '---12.0 ||SUBSTR(ENT_NOME,1,30)---13.0 ||rpad(cast('BANCO BRADESCO S.A' as char(30)),30,' ') ---14.0 ||rpad(cast('' as varchar),10,' ') ---15.0 ||'1' ---16.0 ||to_char(current_date,'ddMMyyyy')---17.0 ||to_char(now(),'HH24MISS')---18.0 ||Lpad(cast(':NSA_ARQUIVO' as varchar),6,'0') ---19.0 ||'089'---20.0 ||'01600'---21.0 ||rpad(cast('' as varchar),20,' ') ---22.0 ||rpad(cast('' as varchar),20,' ') ---23.0 ||rpad(cast('' as varchar),29,' ') ---24.0 AS EXPORTACAO FROM GER_ENTIDADE INNER JOIN FIN_CONTA_CORRENTE ON FIN_CONTA_CORRENTE.CCO_ID = GER_ENTIDADE.CCO_ID UNION ALL /*CABEÇALHO LOTE*/ SELECT 2, 1 as SEQUENCIA,1 as detalhe, '237' ---1.01 ||'0001' --1.02 ||'1'--1.03 ||'C'--1.04 ||'20'--1.05 ||'01'--1.06 ||'045'--1.07 ||' '--1.08 ||'2'--1.09 ||ENT_CNPJ--1.10 ||rpad(cast(FIN_CONTA_CORRENTE.CCO_CODIGO_CONVENIO as varchar),20,' ') --1.11 ||lpad(cast(CCO_AGENCIA as varchar),5,'0') --1.12 ||SUBSTR(CCO_DIGITO_AGENCIA,1,1)--1.13 ||lpad(cast(CCO_NUMERO as varchar),12,'0') ---1.14 ||CCO_DIGITO_CONTA ---1.15 ||' ' ---1.16 ||SUBSTR(ENT_NOME,1,30)---1.17 ||rpad(cast('' as varchar),40,' ') ---1.18 ||lpad(cast(ENT_END as varchar),30,' ') ---1.19 ||lpad(cast(ENT_numero as varchar),5,'0') ---1.20 ||lpad(cast(ent_compl as varchar),15,' ') ---1.21 ||rpad(cast(ENT_MUNICIPIO as varchar),20,' ') ---1.22 ||SUBSTR(ENT_CEP,1,5)---1.23 ||SUBSTR(ENT_CEP,6,3)---1.24 ||ENT_UF---1.25 ||'01'---1.36 ||rpad(cast('' as varchar),6,' ')--1.27 ||rpad(cast('' as varchar),10,' ')--1.28 FROM GER_ENTIDADE INNER JOIN FIN_CONTA_CORRENTE ON FIN_CONTA_CORRENTE.CCO_ID = GER_ENTIDADE.CCO_ID UNION ALL /*REGISTRO DETALHE SEGMENTO A*/ SELECT 2, ROW_NUMBER () OVER (ORDER BY vw_fin_relacao_pagamentos.codigo,tipo) as ordem,1 as detalhe, COALESCE(b1.ban_numero,'') ---A.01 ||'0001' ---A.02 --incrementar 1 a cada vez que gerar o arquivo. ||'3' ---A.03 || ':CONTADOR'---A.04 ||'A' ---A.05 ||'0' --A.06 ||'00' --A.07 ||'000' --A.08 ||'237' --A.09 (Verificar se rá mudar as contas dos favorecidos) ||lpad(cast(coalesce(fec_pensionista.cpn_age_numero, fec_cartorio.car_ag_bradesco) as varchar),5,'0') ---A.10 ||rpad(cast(car_digito_ag_bradesco as varchar),1,' ')--A.11 ||lpad(cast(coalesce(cast(fec_pensionista.cpn_num_conta as varchar), fec_cartorio.car_cc_bradesco) as varchar),12,'0') ---A.12 ||rpad(cast(coalesce(fec_pensionista.cpn_digito, CAR_DIGITO_bradesco) as varchar),1,' ')--A.13 ||rpad(cast('' as varchar),1,' ')--A.14 ||rpad(cast(coalesce(frh_funcionario.fun_nome, FEC_CARTORIO.CAR_DELEGATARIO) as varchar),30,' ') ---A.15 ||lpad(cast(coalesce(gratuito.mov_id,isento.mov_id,renda_minima.mov_id,avulso.mov_id) as varchar),20,'0') ---A.16 -- incrementar 1 para cada linha do arquivo. é o código do item do lote de faturamento. ||to_char(COALESCE(gratuito.ltm_data_credito,isento.ltm_data_credito,renda_minima.ltm_data_credito,avulso.ltm_data_credito),'ddMMyyyy')---A.17 ||'BRL'--A.18 ||'0000000000'--A.19 ||lpad(coalesce(replace(cast(fin_movimentacao.mov_valor_liquido as varchar),'.',''),''),20,'0')--A.20 layout diz 13 posicoes. Mas so bate com 20. ||rpad(cast('' as varchar),20,' ')--A.21 ||'00000000' --A.22 ||'000000000000000' --A.23 layout diz 13 posicoes. Mas so bate com 15. ||rpad(cast('' as varchar),40,' ')--A.24 ||'01' --A.25 (Código Finalidade Doc) ||rpad(cast('' as varchar),5,' ')--A.26 (Código Finalidade TED) ||'CC'--A.27 ||rpad(cast('' as varchar),3,' ')--A.28 ||'0' --A.29 ||rpad(cast('' as varchar),10,' ')--A.30 FROM vw_fin_relacao_pagamentos Inner Join vw_status_solicitacao On vw_status_solicitacao.codigo = vw_fin_relacao_pagamentos.status Inner Join fec_cartorio On fec_cartorio.car_id = vw_fin_relacao_pagamentos.car_id Inner Join fec_comarca_e_distritos On fec_comarca_e_distritos.com_id = fec_cartorio.com_id Inner Join fec_distrito On fec_distrito.dis_id = fec_cartorio.dis_id Left Join fin_lote_movimentacao gratuito on gratuito.atg_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'G' Left Join fin_lote_movimentacao isento on isento.ati_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'I' Left Join fin_lote_movimentacao renda_minima on renda_minima.srm_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'R' Left Join fin_lote_movimentacao avulso On (avulso.fla_id = vw_fin_relacao_pagamentos.codigo) And (vw_fin_relacao_pagamentos.tipo = 'A') Inner Join fin_lote on fin_lote.lot_id = gratuito.lot_id or fin_lote.lot_id = isento.lot_id or fin_lote.lot_id = renda_minima.lot_id Or(fin_lote.lot_id = avulso.lot_id) Inner Join fin_movimentacao On fin_movimentacao.mov_id = coalesce(gratuito.mov_id,isento.mov_id,renda_minima.mov_id,avulso.mov_id) inner Join frh_funcionario CARTORIO on cartorio.car_id = FEC_CARTORIO.CAR_ID Left Join frh_funcionario on fin_movimentacao.fun_id = frh_funcionario.fun_id and frh_funcionario.car_id is null Left Join fec_pensionista on fec_pensionista.fun_id_pensionista = fin_movimentacao.fun_id and fec_pensionista.fun_id_funcionario = cartorio.fun_id Left Join fin_banco b on b.ban_id = fec_pensionista.ban_id Left Join ger_municipio m on m.mun_id = fec_pensionista.mun_id, (SELECT DISTINCT b.ban_numero FROM fin_banco b WHERE b.ban_numero = '237' and b.ban_ativo = 'A')b1 WHERE fec_pensionista.fun_id_pensionista is null and (b.ban_numero = '237' or b.ban_numero is null) and fin_lote.lot_id = :LOTE UNION ALL /*REGISTRO DETALHE SEGEMENTO B*/ SELECT 2, ROW_NUMBER () OVER (ORDER BY vw_fin_relacao_pagamentos.codigo,tipo) as ordem,2 as detalhe, b1.ban_numero ---B.01 ||'0001' ---B.02 --incrementar 1 a cada vez que gerar o arquivo. ||'3' ---B.03 || ':CONTADOR'--lpad(cast( ROW_NUMBER () OVER (ORDER BY vw_fin_relacao_pagamentos.codigo,tipo) as varchar),5,'0') ||'B' ---B.05 ||rpad(cast('' as varchar),3,' ')--B.06 ||'2' ---B.07 ||case when fec_pensionista.cpn_cpf_representante is null then FEC_CARTORIO.CAR_CNPJ else '000' || fec_pensionista.cpn_cpf_representante end ---B.08 ||rpad(cast(COALESCE(coalesce(fec_pensionista.cpn_endereco,FEC_CARTORIO.CAR_ENDERECO),'') as varchar),30,' ') ---B.09 ||lpad(COALESCE(cast(coalesce(fec_pensionista.cpn_numero,FEC_CARTORIO.CAR_NUMERO) as varchar),''),5,'0') ---B.10 ||Rpad(cast(COALESCE(coalesce(fec_pensionista.cpn_complemento,FEC_CARTORIO.CAR_COMPLEMENTO),'') as varchar),15,' ') ---B.11 ||Rpad(cast(COALESCE(coalesce(fec_pensionista.cpn_bairro,FEC_CARTORIO.CAR_BAIRRO),'') as varchar),15,' ') ---B.12 ||Rpad(cast(COALESCE(coalesce(m.mun_nome,FEC_CARTORIO.CAR_MUNICIPIO),'') as varchar),20,' ') ---B.13 ||SUBSTR(coalesce(cpn_CEP,ENT_CEP),1,5)---B.14 ||SUBSTR(coalesce(cpn_CEP,ENT_CEP),6,3)---B.15 ||RPAD(COALESCE(coalesce(fec_pensionista.cpn_UF,FEC_CARTORIO.CAR_UF),''),2,' ')---B.16 ||to_char(COALESCE(gratuito.ltm_data_credito,isento.ltm_data_credito,renda_minima.ltm_data_credito,avulso.ltm_data_credito),'ddMMyyyy')---B.17 ||lpad(coalesce(replace(cast(CASE vw_fin_relacao_pagamentos.tipo WHEN 'G' THEN gratuito.ltm_valor WHEN 'I' THEN isento.ltm_valor WHEN 'R' THEN renda_minima.ltm_valor WHEN 'A' THEN avulso.ltm_valor END as varchar),'.',''),''),15,'0')---B.18 ||'000000000000000'---B.19 ||'000000000000000'---B.20 ||'000000000000000'---B.21 ||'000000000000000'---B.22 ||rpad(cast('' as varchar),15,' ')--B.23 ||'0' --B.24 ||rpad(cast('' as varchar),6,' ')--B.25 ||rpad(cast('' as varchar),8,' ')--B.26 FROM GER_ENTIDADE, vw_fin_relacao_pagamentos Inner Join vw_status_solicitacao On vw_status_solicitacao.codigo = vw_fin_relacao_pagamentos.status Inner Join fec_cartorio On fec_cartorio.car_id = vw_fin_relacao_pagamentos.car_id Inner Join fec_comarca_e_distritos On fec_comarca_e_distritos.com_id = fec_cartorio.com_id Inner Join fec_distrito On fec_distrito.dis_id = fec_cartorio.dis_id Left join fin_lote_movimentacao gratuito on gratuito.atg_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'G' Left join fin_lote_movimentacao isento on isento.ati_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'I' Left join fin_lote_movimentacao renda_minima on renda_minima.srm_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'R' Left Join fin_lote_movimentacao avulso On (avulso.fla_id = vw_fin_relacao_pagamentos.codigo) And (vw_fin_relacao_pagamentos.tipo = 'A') Inner join fin_lote on fin_lote.lot_id = gratuito.lot_id or fin_lote.lot_id = isento.lot_id or fin_lote.lot_id = renda_minima.lot_id Or(fin_lote.lot_id = avulso.lot_id) Inner Join fin_movimentacao On fin_movimentacao.mov_id = coalesce(gratuito.mov_id,isento.mov_id,renda_minima.mov_id,avulso.mov_id) Inner join frh_funcionario CARTORIO on cartorio.car_id = FEC_CARTORIO.CAR_ID Left join frh_funcionario on fin_movimentacao.fun_id = frh_funcionario.fun_id and frh_funcionario.car_id is null Left join fec_pensionista on fec_pensionista.fun_id_pensionista = fin_movimentacao.fun_id and fec_pensionista.fun_id_funcionario = cartorio.fun_id Left join fin_banco b on b.ban_id = fec_pensionista.ban_id Left join ger_municipio m on m.mun_id = fec_pensionista.mun_id, (SELECT DISTINCT b.ban_numero FROM fin_banco b WHERE b.ban_numero = '237' and b.ban_ativo = 'A')b1 WHERE fec_pensionista.fun_id_pensionista is null and (b.ban_numero = '237' or b.ban_numero is null) and fin_lote.lot_id = :LOTE UNION ALL /*TRAILER DO LOTE*/ SELECT 3, 1 as SEQUENCIA,1 as detalhe, b1.ban_numero ---5.01 ||'0001' ---5.02 --incrementar 1 a cada vez que gerar o arquivo. ||'5' ---5.03 ||rpad(cast('' as varchar),9,' ')--5.04 || ':REGISTROS_LOTE' --pad(cast(count(1) as varchar),6,'0')--5.04 ---5.05 --incrementar 1 a cada item do lote. ||lpad(coalesce(replace(cast(SUM(fin_movimentacao.mov_valor_liquido) as varchar),'.',''),''),18,'0')--5.06 ||rpad(cast('' as varchar),18,'0')--5.07 ||rpad(cast('' as varchar),6,'0')--5.08 ||rpad(cast('' as varchar),165,' ')--5.09 ||rpad(cast('' as varchar),10,' ')--5.10 FROM vw_fin_relacao_pagamentos Inner Join vw_status_solicitacao On vw_status_solicitacao.codigo = vw_fin_relacao_pagamentos.status Inner Join fec_cartorio On fec_cartorio.car_id = vw_fin_relacao_pagamentos.car_id Inner Join fec_comarca_e_distritos On fec_comarca_e_distritos.com_id = fec_cartorio.com_id Inner Join fec_distrito On fec_distrito.dis_id = fec_cartorio.dis_id Left join fin_lote_movimentacao gratuito on gratuito.atg_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'G' Left join fin_lote_movimentacao isento on isento.ati_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'I' Left join fin_lote_movimentacao renda_minima on renda_minima.srm_id = vw_fin_relacao_pagamentos.codigo and vw_fin_relacao_pagamentos.tipo = 'R' Left Join fin_lote_movimentacao avulso On (avulso.fla_id = vw_fin_relacao_pagamentos.codigo) And (vw_fin_relacao_pagamentos.tipo = 'A') Inner Join fin_movimentacao On fin_movimentacao.mov_id = coalesce(gratuito.mov_id,isento.mov_id,renda_minima.mov_id,avulso.mov_id) Inner join fin_lote on fin_lote.lot_id = gratuito.lot_id or fin_lote.lot_id = isento.lot_id or fin_lote.lot_id = renda_minima.lot_id Or(fin_lote.lot_id = avulso.lot_id) Inner join frh_funcionario on fin_movimentacao.fun_id = frh_funcionario.fun_id and frh_funcionario.car_id = fec_cartorio.car_id, (SELECT DISTINCT b.ban_numero FROM fin_banco b WHERE b.ban_numero = '237' and b.ban_ativo = 'A')b1 WHERE fin_lote.lot_id = :LOTE GROUP BY b1.ban_numero UNION ALL /*TRAILER DO ARQUIVO*/ SELECT DISTINCT 4, 1 as SEQUENCIA,1 as detalhe, ban_numero ---9.01 ||'9999' ---9.02 ||'9' ---9.03 ||rpad(cast('' as varchar),9,' ')--9.04 ||'000001' --9.05 ||':TOTAL' --9.06 ||'000000' --9.07 ||rpad(cast('' as varchar),205,' ')--9.04 FROM fin_banco WHERE ban_numero = '237' order by 1,2,3