<commit_before># frozen_string_literal: true

require 'parseline'

module Brcobranca
  module Retorno
    module Cnab400
      # Formato de Retorno CNAB 400
      # Baseado em: http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc2628CBR643Pos7.pdf
      class BancoBrasil < Brcobranca::Retorno::Cnab400::Base
        extend ParseLine::FixedWidth # Extendendo parseline

        # Load lines
        def self.load_lines(file, options = {})
          default_options = { except: [1] } # por padrao ignora a primeira linha que é header
          options = default_options.merge!(options)
          super file, options
        end

        fixed_width_layout do |parse|
          # Todos os campos descritos no documento em ordem
          # :tipo_de_registro, 0..0 # identificacao do registro transacao
          # :zeros, 1..2 # zeros
          # :zeros, 3..16 #zeros

          # :agencia, 17..21 #agencia mantenedora da conta com digito
          parse.field :agencia_com_dv, 17..21

          # :conta, 22..30 #numero da conta corrente da empresa com digito
          parse.field :cedente_com_dv, 22..30

          # :convenio, 31..37 #convenio da empresa
          # :uso_da_empresa, 38..62 #identificacao do titulo na empresa

          # :nosso_numero,63..79 # identificacao do titulo no banco
          parse.field :nosso_numero, 63..79

          # :tipo_cobranca, 80..80 #tipo de cobranca
          # :tipo_cobranca_anterior, 81..81 #tipo de cobranca

          # :dias, 82..85 #dias para calculo<commit_msg>adiciona mapeamento para o campo codigo_registro no retorno banco do brasil (#245)<commit_after># frozen_string_literal: true

require 'parseline'

module Brcobranca
  module Retorno
    module Cnab400
      # Formato de Retorno CNAB 400
      # Baseado em: http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc2628CBR643Pos7.pdf
      class BancoBrasil < Brcobranca::Retorno::Cnab400::Base
        extend ParseLine::FixedWidth # Extendendo parseline

        # Load lines
        def self.load_lines(file, options = {})
          default_options = { except: [1] } # por padrao ignora a primeira linha que é header
          options = default_options.merge!(options)
          super file, options
        end

        fixed_width_layout do |parse|
          # Todos os campos descritos no documento em ordem
          # :tipo_de_registro, 0..0 # identificacao do registro transacao
          # :zeros, 1..2 # zeros
          # :zeros, 3..16 #zeros

          # :codigo_registro, 0..0 #identificação do registro
          parse.field :codigo_registro, 0..0

          # :agencia, 17..21 #agencia mantenedora da conta com digito
          parse.field :agencia_com_dv, 17..21

          # :conta, 22..30 #numero da conta corrente da empresa com digito
          parse.field :cedente_com_dv, 22..30

          # :convenio, 31..37 #convenio da empresa
          # :uso_da_empresa, 38..62 #identificacao do titulo na empresa

          # :nosso_numero,63..79 # identificacao do titulo no banco
          parse.field :nosso_numero, 63..79

          # :tipo_cobranca, 80..80 #tipo de cobranca
          # :tipo_cobranca_anterior, 81..81 #tipo de cobranca

          # :dias, 82..85 #dias para calculo
{'fraction_non_alphanumeric': 0.09076682316118936, 'fraction_numerical': 0.04538341158059468, 'mean_word_length': 2.3257023933402707, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2227104', 'n_tokens_mistral': 1178, 'n_tokens_neox': 1070, 'n_words': 282}