Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1786 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Sugestão de atualização da função ACBrBancoBrasil.pas/GerarRegistroHeader240

Leiaute CNAB 240 Posições

Header de Arquivo Posições 164 a 166 Nº da Versão do Layout do Arquivo

Hoje está fixa em 030, preciso manipular esse valor conforme meu cliente, que é 087.

Nas posições 223 a 225 está fixo 'CSP' 

-(Informar 'brancos', porém se o arquivo foi formatado com a versão do layout 030, pode ser informado 'CSP' nas posições 223 a 225, e 'zeros' nas posições 226 a 228)

Header de Lote Posições 14 a 16 Nº da Versão do Layout do Lote

Hoje está fixa em 020, preciso manipular esse valor conforme meu cliente, que é 045.

>------------------------------------------------------------------------------------------<

A seguir minhas alterações.

{ GERAR REGISTRO-HEADER DO ARQUIVO }

      Result:= IntToStrZero(ACBrBanco.Numero, 3)               + // 1 a 3 - Código do banco
               '0000'                                          + // 4 a 7 - Lote de serviço
               '0'                                             + // 8 - Tipo de registro - Registro header de arquivo
               StringOfChar(' ', 9)                            + // 9 a 17 Uso exclusivo FEBRABAN/CNAB
               ATipoInscricao                                  + // 18 - Tipo de inscrição do cedente
               PadLeft(OnlyNumber(CNPJCPF), 14, '0')           + // 19 a 32 -Número de inscrição do cedente
               PadLeft(Convenio, 9, '0') + '0014'              + // 33 a 45 - Código do convênio no banco [ Alterado conforme instruções da CSO Brasília ] 27-07-09
               ACBrBanco.ACBrBoleto.ListadeBoletos[0].Carteira + // 46 a 47 - Carteira
               aModalidade + '  '                              + // 48 a 52 - Variacao Carteira
               aAgencia                                        + // 53 a 57 - Código da agência do cedente
               PadRight(AgenciaDigito, 1 , '0')                + // 58 - Dígito da agência do cedente
               aConta                                          + // 59 a 70 - Número da conta do cedente
               PadRight(ContaDigito, 1, '0')                   + // 71 - Dígito da conta do cedente
               ' '                                             + // 72 - Dígito verificador da agência / conta
               TiraAcentos(UpperCase(PadRight(Nome, 30, ' '))) + // 73 a 102 - Nome do cedente
               PadRight('BANCO DO BRASIL', 30, ' ')            + // 103 a 132 - Nome do banco
               StringOfChar(' ', 10)                           + // 133 a 142 - Uso exclusivo FEBRABAN/CNAB
               '1'                                             + // 143 - Código de Remessa (1) / Retorno (2)
               FormatDateTime('ddmmyyyy', Now)                 + // 144 a 151 - Data do de geração do arquivo
               FormatDateTime('hhmmss', Now)                   + // 152 a 157 - Hora de geração do arquivo
               PadLeft(IntToStr(NumeroRemessa), 6, '0')        + // 158 a 163 - Número seqüencial do arquivo
               PadLeft(IntToStr(LayoutVersaoArquivo), 3, '0')  + // 164 a 166 - Número da versão do layout do arquivo
               StringOfChar('0', 5)                            + // 167 a 171 - Densidade de gravação do arquivo (BPI)
               StringOfChar(' ', 20)                           + // 172 a 191 - Uso reservado do banco
               StringOfChar('0', 20)                           + // 192 a 211 - Uso reservado da empresa
               StringOfChar(' ', 11)                           + // 212 a 222 - 11 brancos
               StringOfChar(' ', 3)                            + // 223 a 225 - 'CSP'
               StringOfChar('0', 3)                            + // 226 a 228 - Uso exclusivo de Vans
               StringOfChar(' ', 2)                            + // 229 a 230 - Tipo de servico
               StringOfChar(' ', 10);                            // 231 a 240 - titulo em carteira de cobranca

          { GERAR REGISTRO-HEADER DO LOTE }

      Result:= Result + #13#10 +
               IntToStrZero(ACBrBanco.Numero, 3)               + // 1 a 3 - Código do banco
               '0001'                                          + // 4 a 7 - Lote de serviço
               '1'                                             + // 8 - Tipo de registro - Registro header de arquivo
               'R'                                             + // 9 - Tipo de operação: R (Remessa) ou T (Retorno)
               '01'                                            + // 10 a 11 - Tipo de serviço: 01 (Cobrança)
               '00'                                            + // 12 a 13 - Forma de lançamento: preencher com ZEROS no caso de cobrança
               PadLeft(IntToStr(LayoutVersaoLote), 3, '0')     + // 14 a 16 - Número da versão do layout do lote
               ' '                                             + // 17 - Uso exclusivo FEBRABAN/CNAB
               ATipoInscricao                                  + // 18 - Tipo de inscrição do cedente
               PadLeft(OnlyNumber(CNPJCPF), 15, '0')           + // 19 a 32 -Número de inscrição do cedente
               PadLeft(Convenio, 9, '0') + '0014'              + // 33 a 45 - Código do convênio no banco [ Alterado conforme instruções da CSO Brasília ] 27-07-09
               ACBrBanco.ACBrBoleto.ListadeBoletos[0].Carteira + // 46 a 47 - Carteira
               aModalidade + '  '                              + // 48 a 52 - Variacao Carteira
               aAgencia                                        + // 53 a 57 - Código da agência do cedente
               PadRight(AgenciaDigito, 1 , '0')                + // 58 - Dígito da agência do cedente
               aConta                                          + // 59 a 70 - Número da conta do cedente
               PadRight(ContaDigito, 1, '0')                   + // 71 - Dígito da conta do cedente
               ' '                                             + // 72 - Dígito verificador da agência / conta
               PadRight(Nome, 30, ' ')                         + // 73 a 102 - Nome do cedente
               StringOfChar(' ', 40)                           + // 104 a 143 - Mensagem 1 para todos os boletos do lote
               StringOfChar(' ', 40)                           + // 144 a 183 - Mensagem 2 para todos os boletos do lote
               PadLeft(IntToStr(NumeroRemessa), 8, '0')        + // 184 a 191 - Número do arquivo
               FormatDateTime('ddmmyyyy', Now)                 + // 192 a 199 - Data de geração do arquivo
               StringOfChar('0', 8 )                            + // 200 a 207 - Data do crédito - Só para arquivo retorno
               StringOfChar(' ', 33);                            // 208 a 240 - Uso exclusivo FEBRABAN/CNAB

Editado por Mailson.Dragon
  • Administradores
Postado

Bom dia.

Obrigada pela contribuição, adicionada para validação.

Att.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 4 semanas depois ...
  • Consultores
  • Solution
Postado

Bom dia Maílson,

Primeiramente desculpe pela demora em analisar a colaboração.

Muito obrigado pela colaboração, já foi enviada para o repositório.

Favor atualizar os fontes e faça novos testes.

  • Curtir 2
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Está faltando a versão do lote 087 e versão do arquivo 045

...

 VersaoArquivo := LayoutVersaoArquivo;

      if not (VersaoArquivo in [030, 040, 080, 082, 083, 084, 087]) then
        VersaoArquivo := 030;

...

VersaoLote := LayoutVersaoLote;

      case VersaoArquivo of
        030: if VersaoLote <> 020 then VersaoLote := 020;
        040: if VersaoLote <> 030 then VersaoLote := 030;
        080: if VersaoLote <> 040 then VersaoLote := 040;
        082: if VersaoLote <> 041 then VersaoLote := 041;
        083: if VersaoLote <> 042 then VersaoLote := 042;
        084: if VersaoLote <> 043 then VersaoLote := 043;
        087: if VersaoLote <> 045 then VersaoLote := 045;
      else
        VersaoLote := 000;
      end;

...

  • Este tópico foi criado há 1786 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.