class Kinabo::Bradesco::Retorno

Public Class Methods

new(path) click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 6
def initialize(path)
  @path = path
end

Public Instance Methods

entries() click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 49
def entries
  entries_lines = lines[1...-1]

  entries_lines.map do |entry_line|
    {
      id_registro: parse_number(pos(entry_line, '1-1')),
      tipo_empresa: parse_number(pos(entry_line, '2-3')),
      numero_empresa: parse_number(pos(entry_line, '4-17')),
      id_empresa: parse_number(pos(entry_line, '21-37')),
      numero_controle: parse_number(pos(entry_line, '38-62')),
      nosso_numero: pos(entry_line, '71-82'),
      indicador_rateio: pos(entry_line, '105-105'),
      carteira: parse_number(pos(entry_line, '108-108')),
      id_ocorrencia: parse_number(pos(entry_line, '109-110')),
      data_ocorrencia: parse_date(pos(entry_line, '111-116')),
      numero_documento: parse_string(pos(entry_line, '117-126')),
      data_vencimento: parse_date(pos(entry_line, '147-152')),
      valor: parse_decimal(pos(entry_line, '153-165')),
      banco_cobrador: parse_number(pos(entry_line, '166-168')),
      agencia_cobradora: parse_number(pos(entry_line, '169-173')),
      especie_titulo: parse_string(pos(entry_line, '174-175')),
      despesas_cobranca: parse_decimal(pos(entry_line, '176-188')),
      outras_despesas: parse_decimal(pos(entry_line, '189-201')),
      juros_operacao: parse_decimal(pos(entry_line, '202-214')),
      iof: parse_decimal(pos(entry_line, '215-227')),
      abatimento: parse_decimal(pos(entry_line, '228-240')),
      desconto: parse_decimal(pos(entry_line, '241-253')),
      valor_pago: parse_decimal(pos(entry_line, '254-266')),
      juros_mora: parse_decimal(pos(entry_line, '267-279')),
      outros_creditos: parse_decimal(pos(entry_line, '280-292')),
      motivo_ocorrencia: parse_string(pos(entry_line, '295-295')),
      data_credito: parse_date(pos(entry_line, '296-301')),
      origem_pagamento: parse_number(pos(entry_line, '302-304')),
      cheque_bradesco: parse_number(pos(entry_line, '315-318')),
      motivo_rejeicao: parse_string(pos(entry_line, '319-328')),
      numero_cartorio: parse_number(pos(entry_line, '369-370')),
      numero_protocolo: parse_string(pos(entry_line, '371-380')),
      numero_sequencial: parse_number(pos(entry_line, '395-400'))
    }
  end
end
header() click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 14
def header
  header_line = lines.first

  {
    id_registro: parse_number(pos(header_line, '1-1')),
    id_arquivo_retorno: parse_number(pos(header_line, '2-2')),
    literal_retorno: parse_string(pos(header_line, '3-9')),
    codigo_servico: parse_number(pos(header_line, '10-11')),
    literal_servico: parse_string(pos(header_line, '12-26')),
    codigo_empresa: parse_number(pos(header_line, '27-46')),
    nome_empresa: parse_string(pos(header_line, '47-76')),
    numero_bradesco_c3: parse_number(pos(header_line, '77-79')),
    nome_banco: parse_string(pos(header_line, '80-94')),
    data_gravacao_arquivo: parse_date(pos(header_line, '95-100')),
    densidade_gravacao: parse_number(pos(header_line, '101-108')),
    numero_aviso_bancario: parse_number(pos(header_line, '109-113')),
    data_credito: parse_date(pos(header_line, '380-385')),
    numero_sequencial: parse_number(pos(header_line, '395-400'))
  }
end
lines() click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 10
def lines
  @lines ||= content.split("\n")
end
trailler() click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 35
def trailler
  trailler_line = @lines.last

  {
    id_registro: pos(trailler_line, '1-1'),
    id_retorno: pos(trailler_line, '2-2'),
    id_tipo_registro: pos(trailler_line, '3-4'),
    codigo_banco: pos(trailler_line, '5-7'),
    quantidade_titulos_cobranca: pos(trailler_line, '18-25'),
    valor_total_cobranca: pos(trailler_line, '26-39'),
    numero_aviso_bancario: pos(trailler_line, '40-47')
  }
end

Private Instance Methods

content() click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 93
def content
  @content ||= file.read.gsub(/\r\n/, "\n")
end
file() click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 97
def file
  @file ||= File.open(@path)
end
pos(line, position) click to toggle source
# File lib/kinabo/bradesco/retorno.rb, line 101
def pos(line, position)
  i = position.split('-').map { |i| i.to_i - 1 }
  range = (i[0]..i[1])

  line[range]
end