Class: Brcobranca::Retorno::RetornoCnab240

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/retorno/retorno_cnab240.rb

Overview

Formato de Retorno CNAB 240

Direct Known Subclasses

Cnab240::Caixa

Defined Under Namespace

Classes: Line

Constant Summary collapse

REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U =

Regex para remoção de headers e trailers além de registros diferentes de T ou U

/^((?!^.{7}3.{5}[T|U].*$).)*$/.freeze

Instance Attribute Summary

Attributes inherited from Base

#abatimento_nao_aproveitado, #agencia_com_dv, #agencia_recebedora_com_dv, #agencia_sem_dv, #arquivo, #banco_recebedor, #carteira, #carteira_variacao, #cedente_com_dv, #codigo_ocorrencia, #codigo_registro, #comando, #convenio, #data_credito, #data_liquidacao, #data_ocorrencia, #data_vencimento, #desconto, #desconto_concedito, #documento_numero, #especie_documento, #indicador_valor, #indicativo_lancamento, #iof, #iof_desconto, #juros_desconto, #juros_mora, #motivo_ocorrencia, #natureza_recebimento, #nosso_numero, #outras_despesas, #outros_recebimento, #sequencial, #tipo_cobranca, #tipo_cobranca_anterior, #valor_abatimento, #valor_ajuste, #valor_lancamento, #valor_recebido, #valor_tarifa, #valor_titulo

Class Method Summary collapse

Class Method Details

.generate_retorno_based_on_cnab_lines(cnab_lines) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/brcobranca/retorno/retorno_cnab240.rb', line 20

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))
      end
    else
      Line::REGISTRO_U_FIELDS.each do |attr|
        retorno.send(:"#{attr}=", line.send(attr))
      end
    end
  end
  retorno
end

.load_lines(file, options = {}) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/brcobranca/retorno/retorno_cnab240.rb', line 11

def self.load_lines(file, options = {})
  default_options = { except: REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U }
  options = default_options.merge!(options)

  Line.load_lines(file, options).each_slice(2).reduce([]) do |retornos, cnab_lines|
    retornos << generate_retorno_based_on_cnab_lines(cnab_lines)
  end
end