lib/brcobranca/retorno/cnab240/sicredi.rb in brcobranca-9.2.4 vs lib/brcobranca/retorno/cnab240/sicredi.rb in brcobranca-10.0.0
- old
+ new
@@ -1,14 +1,15 @@
-# -*- encoding: utf-8 -*-
+# frozen_string_literal: true
+
require 'parseline'
module Brcobranca
module Retorno
module Cnab240
class Sicredi < Brcobranca::Retorno::Cnab240::Base
# Regex para remoção de headers e trailers além de registros diferentes de T ou U
- REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U = /^((?!^.{7}3.{5}[T|U].*$).)*$/
+ REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U = /^((?!^.{7}3.{5}[T|U].*$).)*$/.freeze
def self.load_lines(file, options = {})
default_options = { except: REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U }
options = default_options.merge!(options)
@@ -20,15 +21,15 @@
def self.generate_retorno_based_on_cnab_lines(cnab_lines)
retorno = new
cnab_lines.each do |line|
if line.tipo_registro == 'T'
Line::REGISTRO_T_FIELDS.each do |attr|
- retorno.send(attr + '=', line.send(attr))
+ retorno.send("#{attr}=", line.send(attr))
end
else
Line::REGISTRO_U_FIELDS.each do |attr|
- retorno.send(attr + '=', line.send(attr))
+ retorno.send("#{attr}=", line.send(attr))
end
end
end
retorno
end
@@ -38,12 +39,14 @@
# O primeiro é do tipo T que retorna dados gerais sobre a transação
# O segundo é do tipo U que retorna os valores da transação
class Line < Base
extend ParseLine::FixedWidth # Extendendo parseline
- REGISTRO_T_FIELDS = %w(codigo_registro codigo_ocorrencia agencia_com_dv cedente_com_dv nosso_numero carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa motivo_ocorrencia)
- REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_ocorrencia data_credito)
+ REGISTRO_T_FIELDS = %w[codigo_registro codigo_ocorrencia agencia_com_dv cedente_com_dv nosso_numero carteira
+ data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa motivo_ocorrencia].freeze
+ REGISTRO_U_FIELDS = %w[desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido
+ outras_despesas outros_recebimento data_ocorrencia data_credito].freeze
attr_accessor :tipo_registro
fixed_width_layout do |parse|
parse.field :codigo_registro, 7..7
@@ -66,12 +69,12 @@
parse.field :desconto_concedito, 32..46
parse.field :valor_recebido, 77..91
parse.field :juros_mora, 17..31
parse.field :outros_recebimento, 122..136
parse.field :valor_tarifa, 198..212
- parse.field :motivo_ocorrencia, 213..222, ->(motivos) do
- motivos.scan(/.{2}/).reject(&:blank?).reject{|motivo| motivo == '00'}
- end
+ parse.field :motivo_ocorrencia, 213..222, lambda { |motivos|
+ motivos.scan(/.{2}/).reject(&:blank?).reject { |motivo| motivo == '00' }
+ }
end
end
end
end
end