• Categorias
  • Recente
  • Tags
  • Popular
Collapse

Remessa de Pagamento e/ou Arquivo Retorno

Agendado Fixado Trancado Movido Maker
4 Posts 2 Posters 452 Visualizações
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
Responder
  • Responder como tópico
Entre para responder
Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
  • T Offline
    T Offline
    ttsales
    wrote on última edição por
    #1

    Pessoal, tudo bem?

    Alguem ja criou e poderia compartilhar um modelo de remessa de pagamento (CNAB 240)? Se for Bradesco melhor ainda...obrigado!

    andersonlealA 1 Resposta Última resposta
    0
  • andersonlealA Offline
    andersonlealA Offline
    andersonleal
    replied to ttsales on última edição por
    #2

    @ttsales https://drive.google.com/file/d/1nSMN6wp8VB4kBX9wtFPou9AuQd2GtxWk/view?usp=sharing

    T 1 Resposta Última resposta
    2
  • T Offline
    T Offline
    ttsales
    replied to andersonleal on última edição por
    #3

    @andersonleal Obrigado pelo arquivo! Na verdade o interesse seria num fluxo que trouxesse e resultasse nesse arquivo.

    Obrigado!

    1 Resposta Última resposta
    0
  • andersonlealA Offline
    andersonlealA Offline
    andersonleal
    wrote on última edição por
    #4

    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
    1 Resposta Última resposta
    1

  • Login

  • Não tem uma conta? Cadastrar

  • Login or register to search.
  • Primeiro post
    Último post
0
  • Categorias
  • Recente
  • Tags
  • Popular
  • Login

  • Não tem uma conta? Cadastrar

  • Login or register to search.