cnab240santander 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format documentation
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in cnab240santander.gemspec
4
+ gemspec
data/RETORNO.TXT ADDED
@@ -0,0 +1,6 @@
1
+ 03300000 2012508169000136226080130004011 005015243 ZERTICO TECNOLOGIAS DE INTERNEBANCO SANTANDER (BRASIL) S/A 204082011 000002040
2
+ 03367741T01 040 2012508169000136005015243 226080130004011 ZERTICO TECNOLOGIAS DE INTERNE 0000000204082011
3
+ 0336774300001T 17226080130004011 00000000000601 0408201100000000000435000100308 002000000000000000 01300040110000000000002640400000000
4
+ 0336774300002U 170000000000000000000000000000000000000000000000000000000000000000000000043500000000000043500000000000000000000000000000000408201105082011000000000000000000000000000 000
5
+ 03367745 0000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
6
+ 03367749 000001000006
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "cnab240santander/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "cnab240santander"
7
+ s.version = Cnab240santander::Version::STRING
8
+ s.authors = ["Lairton Borges"]
9
+ s.email = ["lairton@gmail.com"]
10
+ s.homepage = "https://github.com/ljoseppi/"
11
+ s.summary = "Gem to read the cnab240 return file of Santander Bank (Brazil)"
12
+ s.description = s.summary
13
+
14
+ s.rubyforge_project = "cnab240santander"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_dependency "activesupport", "~> 3.1.0"
22
+ s.add_dependency "mocha", "~> 0.9.10"
23
+ s.add_development_dependency "rspec", "~> 2.6.0"
24
+ end
@@ -0,0 +1,5 @@
1
+ module Cnab240santander
2
+ class Base
3
+ extend Cnab240santander::Formatacao
4
+ end
5
+ end
@@ -0,0 +1,74 @@
1
+ module Cnab240santander
2
+ class Detalhe < Base
3
+ def self.processar(linha, segmento)
4
+ vlinha = Hash.new
5
+
6
+ if segmento == "T"
7
+ #Controle
8
+ vlinha["banco"] = linha[0..2] # Num //Código no Banco da Compensação
9
+ vlinha["lote"] = linha[3..6] # Num //Numero do lote retorno
10
+ vlinha["registro"] = linha[7..7] # Num //Tipo de Registro - 3
11
+ #Serviço
12
+ vlinha["num_registro_lote"] = linha[8..12] # Num //No sequencial do registro no lote
13
+ vlinha["segmento"] = linha[13..13] # Alfa //Código de Segmento no Reg. Detalhe - T
14
+ vlinha["res_banco1"] = linha[14..14] # Alfa //Reservado (uso Banco) - Brancos
15
+ vlinha["cod_movimento"] = linha[15..16] # Num //Código de movimento (ocorrência)
16
+ vlinha["agencia_ced"] = linha[17..20] # Num //Agência do Cedente
17
+ vlinha["dv_agencia_ced"] = linha[21..21] # Num //Dígito da Agência do Cedente
18
+ vlinha["conta_ced"] = linha[22..30] # Num //Número da conta corrente
19
+ vlinha["dv_conta_ced"] = linha[31..31] # Num //Dígito verificador da conta
20
+ vlinha["res_banco2"] = linha[32..39] # Alfa //Reservado (uso Banco) - Brancos
21
+ vlinha["nosso_numero"] = linha[40..52] # Num //Identificação do título no Banco - Nosso número
22
+ vlinha["cod_carteira"] = linha[53..53] # Num //Código da carteira
23
+ vlinha["seu_numero"] = linha[54..68] # Alfa //No do documento de cobrança - Seu número
24
+ vlinha["data_venc_titulo"] = formataData(linha[69..76]) # Num //Data do vencimento do título - DDMMAAAA
25
+ vlinha["valor_nominal"] = preparaMoeda(linha[77..91], 2) # Num //Valor nominal do título - 2 decimais
26
+ vlinha["banco_cobrador"] = linha[92..94] # Num //No do Banco Cobrador / Recebedor
27
+ vlinha["ag_cobradora"] = linha[95..98] # Num //Agência Cobradora / Recebedora
28
+ vlinha["dig_ag_cobradora"] = linha[99..99] # Num //Dígito da Agência do Cobradora
29
+ vlinha["id_titulo"] = linha[100..124] # Alfa //Identif. do título na empresa
30
+ vlinha["cod_moeda"] = linha[125..126] # Num //Código da moeda
31
+ vlinha["tipo_inscricao_sacado"] = linha[127..127] # Num //Tipo de inscrição sacado - 1 =CPF, 2 = CNPJ
32
+ vlinha["num_inscricao_sacado"] = linha[128..142] # Num //Número de inscrição sacado
33
+ vlinha["nome_sacado"] = linha[143..182] # Alfa //Nome do Sacado
34
+ vlinha["conta_cobranca"] = linha[183..192] # Alfa //Conta Cobrança
35
+ vlinha["valor_tarifa"] = preparaMoeda(linha[193..207], 2) # Num //Valor da Tarifa/Custas
36
+ vlinha["rejeicoes"] = linha[208..217] # Alfa //Identificação para rejeições, tarifas, custas, liquidações e baixas,
37
+ # ocorre 5 vezes, sendo que cada ocorrência ocupa 02 dígitos.
38
+ vlinha["res_banco3"] = linha[218..239] # Alfa //Reservado (uso Banco) - Brancos
39
+
40
+ elsif segmento == "U"
41
+
42
+ #Controle
43
+ vlinha["banco2"] = linha[0..2] # Num //Código do Banco na Compensação
44
+ vlinha["lote2"] = linha[3..6] # Num //Lote de Serviço
45
+ vlinha["registro2"] = linha[7..7] # Num default '3'//Registro detalhe
46
+ #Serviço
47
+ vlinha["num_registro_lote2"] = linha[8..12] # Num //No Sequencial do Registro no Lote
48
+ vlinha["segmento2"] = linha[13..13] # Alfa //Cód. segmento do registro detalhe - U
49
+ vlinha["res_banco3"] = linha[14..14] # Alfa //Reservado (uso Banco) - Brancos
50
+ vlinha["cod_movimento2"] = linha[15..16] # Num //Código de movimento (ocorrência)
51
+ #Valores
52
+ vlinha["juros_multa_encargos"] = preparaMoeda(linha[17..31], 2) # Num //Juros / Multa / Encargos - 2 decimais
53
+ vlinha["valor_desconto"] = preparaMoeda(linha[32..46], 2) # Num //Valor do desconto concedido - 2 decimais
54
+ vlinha["valor_abatimento"] = preparaMoeda(linha[47..61], 2) # Num //Valor do Abatimento Concedido/Cancelado - 2 decimais
55
+ vlinha["valor_iof"] = preparaMoeda(linha[62..76], 2) # Num //Valor do IOF recolhido - 2 decimais
56
+ vlinha["valor_pago"] = preparaMoeda(linha[77..91], 2) # Num //Valor pago pelo sacado - 2 decimais
57
+ vlinha["valor_liquido"] = preparaMoeda(linha[92..106], 2) # Num //Valor liquido a ser creditado - 2 decimais
58
+ vlinha["valor_despesas"] = preparaMoeda(linha[107..121], 2) # Num //Valor de outras despesas - 2 decimais
59
+ vlinha["valor_creditos"] = preparaMoeda(linha[122..136], 2) # Num //Valor de outros créditos - 2 decimais
60
+ #Ocorrencia
61
+ vlinha["data_ocorrencia"] = formataData(linha[137..144]) # Num //Data da ocorrência - DDMMAAAA
62
+ vlinha["data_credito"] = formataData(linha[145..152]) # Num //Data da efetivação do crédito - DDMMAAAA
63
+ vlinha["cod_ocorrencia_sacado"] = linha[153..156] # Num //Código da ocorrência do sacado
64
+ vlinha["data_ocorrencia_sacado"] = formataData(linha[157..164]) # Num //Data da ocorrência do sacado - DDMMAAAA
65
+ vlinha["valor_ocorrencia_sacado"] = preparaMoeda(linha[165..179], 2) # Num //Valor da ocorrência do sacado - 2 decimais
66
+ vlinha["comp_ocorrencia_sacado"] = linha[180..209] # Alfa //Complemento da ocorrência do sacado
67
+ vlinha["banco_compensacao"] = linha[210..212] # Num //Código do Banco correspondente compens.
68
+ vlinha["res_banco4"] = linha[213..239] # Alfa //Reservado (uso Banco) - Brancos
69
+ end
70
+
71
+ return vlinha
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,20 @@
1
+ module Cnab240santander
2
+ module Formatacao
3
+ def formataData(dt)
4
+ puts dt
5
+ if dt.split("").uniq != ["0"]
6
+ return DateTime.strptime(dt[0..1]+"/"+dt[2..3]+"/"+dt[4..7], "%d/%m/%Y").strftime('%d/%m/%Y')
7
+ end
8
+ end
9
+
10
+ def preparaMoeda(n, digitos)
11
+ return (n.to_f)/(10**digitos)
12
+ end
13
+ end
14
+ end
15
+
16
+ class Object
17
+ def blank?
18
+ respond_to?(:empty?) ? empty? : !self
19
+ end unless respond_to?(:blank?)
20
+ end
@@ -0,0 +1,31 @@
1
+ module Cnab240santander
2
+ class HeaderArquivo < Cnab240santander::Base
3
+ def self.processar(linha)
4
+ vlinha = Hash.new
5
+ vlinha["banco"] = linha[0..2] #num //Código do Banco na Compensação
6
+ vlinha["lote"] = linha[3..6] #num - default 0000 //Lote de Serviço
7
+ vlinha["registro"] = linha[7..7] #num - default 0 //Tipo de Registro
8
+ vlinha["res_banco1"] = linha[8..15] #alfa //Reservado (uso Banco) - Brancos
9
+ vlinha["tipo_inscricao_empresa"] = linha[16..16] #num //Tipo de Inscrição da Empresa
10
+ vlinha["num_inscricao_empresa"] = linha[17..31] #num //Número de Inscrição da Empresa
11
+ vlinha["agencia"] = linha[32..35] #num //Agência do Cedente
12
+ vlinha["dv_agencia"] = linha[36..36] #num //Dígito da Agência do Cedente
13
+ vlinha["conta_corrente"] = linha[37..45] #num //Número da conta corrente
14
+ vlinha["dv_conta"] = linha[46..46] #num //DV da Conta Corrent
15
+ vlinha["res_banco2"] = linha[47..51] #alfa //Reservado (uso Banco) - Brancos
16
+ vlinha["cod_cedente"] = linha[52..60] #num //Código do Cedente
17
+ vlinha["res_banco3"] = linha[61..71] #alfa //Reservado (uso Banco) - Brancos
18
+ vlinha["nome_empresa"] = linha[72..101] #alfa //Nome da empresa
19
+ vlinha["nome_banco"] = linha[102..131] #alfa //Nome do Banco
20
+ vlinha["res_banco4"] = linha[132..141] #alfa //Reservado (uso Banco) - Brancos
21
+ vlinha["cod_retorno"] = linha[142..142] #num - Código remessa / retorno
22
+ vlinha["data_geracao_arq"] = linha[143..150] #num - Data de geração do arquivo - DDMMAAAA
23
+ vlinha["res_banco5"] = linha[151..156] #alfa //Reservado (uso Banco) - Brancos
24
+ vlinha["sequencia"] = linha[157..162] #num //No seqüencial do arquivo
25
+ vlinha["versao"] = linha[163..165] #num //No da versão do layout do arquivo
26
+ vlinha["res_banco6"] = linha[166..239] #alfa //Reservado (uso Banco) - Brancos
27
+
28
+ return vlinha
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ module Cnab240santander
2
+ class HeaderLote < Cnab240santander::Base
3
+ def self.processar(linha)
4
+ vlinha = Hash.new
5
+ vlinha["banco"] = linha[0..2] #NUMERICO //Código do Banco na Compensação
6
+ vlinha["lote"] = linha[3..6] #num //Numero do lote retorno
7
+ vlinha["registro"] = linha[7..7] #num //Tipo de registro
8
+ vlinha["operacao"] = linha[8..8] #alfa //Tipo de operação - T
9
+ vlinha["servico"] = linha[9..10] #num //Tipo de serviço - 01
10
+ vlinha["res_banco1"] = linha[11..12] #alfa //Reservado (uso Banco) - Brancos
11
+ vlinha["layout_lote"] = linha[13..15] #num //No da versão do layout do lote - 040
12
+ vlinha["res_banco2"] = linha[16..16] #alfa //Reservado (uso Banco) - Brancos
13
+ vlinha["tipo_inscricao"] = linha[17..17] #num //Tipo de inscrição da empresa - 1 = CPF, 2 = CNPJ
14
+ vlinha["numero_inscricao"] = linha[18..32] #num //No de inscrição da empresa
15
+ vlinha["codigo_cedente"] = linha[33..41] #num //Código do Cedente
16
+ vlinha["res_banco3"] = linha[42..52] #alfa //Reservado (uso Banco) - Brancos
17
+ vlinha["agencia_ced"] = linha[53..56] #num //Agência do Cedente
18
+ vlinha["dv_agencia_ced"] = linha[57..57] #num //Dígito da Agência do Cedente
19
+ vlinha["conta_ced"] = linha[58..66] #num //Número da conta do Cedente
20
+ vlinha["dv_conta_ced"] = linha[67..67] #num //Dígito verificador da conta
21
+ vlinha["res_banco4"] = linha[68..72] #alfa //Reservado (uso Banco) - Brancos
22
+ vlinha["nome_empresa"] = linha[73..102] #alfa //Nome da empresa
23
+ vlinha["res_banco5"] = linha[103..182] #alfa //Reservado (uso Banco) - Branco
24
+ vlinha["numero_retorno"] = linha[183..190] #num //Número do Retorno
25
+ vlinha["data_remessa"] = formataData(linha[191..198]) #num //Data da gravação remessa/retorno - DDMMAAAA
26
+ vlinha["res_banco6"] = linha[199..239] #brancos //Uso Exclusivo FEBRABAN / CNAB
27
+
28
+ return vlinha
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,95 @@
1
+ module Cnab240santander
2
+ class Retorno
3
+ # Tipos de registros
4
+ $HEADER_ARQUIVO = 0
5
+ $HEADER_LOTE = 1
6
+ $DETALHE = 3
7
+ $TRAILER_LOTE = 5
8
+ $TRAILER_ARQUIVO = 9
9
+
10
+ attr_accessor :linhas
11
+
12
+ def initialize(args = {})
13
+ if args.has_key? :path
14
+ @linhas = processar(args) if validaCNAB240(args[:path])
15
+ else
16
+ raise Exception, "Necessário informar o :path"
17
+ end
18
+ end
19
+
20
+ def validaCNAB240(path)
21
+ File.open(path, 'rb') do |f|
22
+ while linha = f.gets
23
+ return false if linha.length != 242
24
+ end
25
+ end
26
+ return true
27
+ end
28
+
29
+ def processarLinha(numLn, linha)
30
+ tipoLn = linha[7..7].to_i
31
+ segmento = linha[13..13].to_s
32
+
33
+ case tipoLn
34
+ when $HEADER_ARQUIVO
35
+ HeaderArquivo.processar(linha)
36
+ when $HEADER_LOTE
37
+ HeaderLote.processar(linha)
38
+ when $DETALHE
39
+ Detalhe.processar(linha, segmento)
40
+ when $TRAILER_LOTE
41
+ TrailerLote.processar(linha)
42
+ when $TRAILER_ARQUIVO
43
+ TrailerArquivo.processar(linha)
44
+ end
45
+ end
46
+
47
+ def processar(args)
48
+ linhas = []
49
+ numLn = 0
50
+
51
+ File.open(args[:path], 'rb') { |f|
52
+ while (linha = f.gets)
53
+ tipoLn = linha[7..7].to_i
54
+ if tipoLn == $HEADER_ARQUIVO and args[:retorna] == $HEADER_ARQUIVO #0
55
+ puts "Processando header"
56
+ linhas << HeaderArquivo.processar(linha)
57
+ elsif tipoLn == $DETALHE and args[:retorna] == $DETALHE #3
58
+ puts "Processando detalhe"
59
+ segmento = linha[13..13]
60
+ if args[:merge] == true
61
+ hash_aux = {}
62
+
63
+ #RESGATANDO SEGMENTO G PARA AGRUPAMENTO
64
+ segmento = linha[13..13]
65
+ add_to_hash(Detalhe.processar(linha, segmento), hash_aux)
66
+
67
+ #RESGATANDO SEGMENTO H PARA AGRUPAMENTO (PROXIMA LINHA)
68
+ linha = f.gets
69
+ segmento = linha[13..13]
70
+ add_to_hash(Detalhe.processar(linha, segmento), hash_aux)
71
+
72
+ linhas << hash_aux
73
+ else
74
+ linhas << Detalhe.processar(linha, segmento)
75
+ end
76
+
77
+ elsif args[:retorna].blank?
78
+ puts "Processando linha..."
79
+ linhas << processarLinha(numLn, linha)
80
+ end
81
+ numLn += 1
82
+ end
83
+ }
84
+
85
+ return linhas
86
+ end
87
+
88
+ def add_to_hash(my_hash, combined_hash)
89
+ my_hash.inject(combined_hash) do |new_hash, (key, value)|
90
+ (new_hash[key] ||= []) << value
91
+ new_hash
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,16 @@
1
+ module Cnab240santander
2
+ class TrailerArquivo < Cnab240santander::Base
3
+ def self.processar(linha)
4
+ vlinha = Hash.new
5
+ vlinha["banco"] = linha[0..2] #num //Código do Banco na Compensação - 353 / 008 / 033
6
+ vlinha["lote"] = linha[3..6] #num //Numero do lote remessa
7
+ vlinha["registro"] = linha[7..7] #num //Tipo de registro - 9
8
+ vlinha["res_banco1"] = linha[8..16] #alfa //Reservado (uso Banco) - Branco
9
+ vlinha["qtde_lotes"] = linha[17..22] #num //Quantidade de lotes do arquivo - Registros tipo=1
10
+ vlinha["qtde_registros"] = linha[23..28] #num //Quantidade de registros do arquivo - Registros tipo=0+1+3+5+9
11
+ vlinha["res_banco2"] = linha[29..239] #alfa //Reservado (uso Banco) - Branco
12
+
13
+ return vlinha
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ module Cnab240santander
2
+ class TrailerLote < Cnab240santander::Base
3
+ def self.processar(linha)
4
+ vlinha = Hash.new
5
+ vlinha["banco"] = linha[0..2] #Num //Código do Banco na Compensação - 353 / 008 / 033
6
+ vlinha["lote"] = linha[3..6] #Num //Lote de Serviço
7
+ vlinha["registro"] = linha[7..7] #Num //Tipo de Registro - 5
8
+ vlinha["res_banco1"] = linha[8..16] #Alfa //Reservado (uso Banco) - Brancos
9
+ vlinha["qtde_registros"] = linha[17..22] #Num //Quantidade de registros do lote
10
+ vlinha["qtde_titulos_cobranca_simples"] = linha[23..28] #Num //Quantidade títulos cobrança simples
11
+ vlinha["valor_titulos_cobranca_simples"] = preparaMoeda(linha[29..45], 2) #Num //Valor total dos títulos cobrança simples - 2 decimais
12
+ vlinha["qtde_titulos_cobranca_vinculada"] = linha[46..51] #Num //Quantidade de títulos em cobrança vinculada
13
+ vlinha["valor_titulos_cobranca_vinculada"] = preparaMoeda(linha[52..68], 2) #Num //Valor total dos títulos em cobrança vinculada - 2 decimais
14
+ vlinha["qtde_titulos_cobranca_caucionada"] = linha[69..74] #Num //Quantidade de títulos em cobrança caucionada
15
+ vlinha["valor_titulos_cobranca_caucionada"] = preparaMoeda(linha[75..91], 2) #Num //Valor total dos títulos em cobrança caucionada - 2 decimais
16
+ vlinha["qtde_titulos_cobranca_descontada"] = linha[92..97] #Num //Quantidade de títulos em cobrança descontada
17
+ vlinha["valor_titulos_cobranca_descontada"] = preparaMoeda(linha[98..114], 2) #Num //Valor total dos títulos em cobrança descontada - 2 decimais
18
+ vlinha["num_aviso_lancamento"] = linha[115..122] #Alfa //Número do aviso de lançamento
19
+ vlinha["res_banco2"] = linha[123..239] #Alfa //Reservado (uso Banco) - Branco
20
+
21
+ return vlinha
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ module Cnab240santander
2
+ module Version
3
+ MAJOR = 0
4
+ MINOR = 1
5
+ PATCH = 0
6
+ STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ ["formatacao", "base", "retorno", "header_arquivo", "header_lote", "detalhe", "trailer_arquivo", "trailer_lote"].each do |f|
2
+ require File.join(File.dirname(__FILE__), 'cnab240santander', f)
3
+ end
4
+
5
+ module Cnab240santander
6
+ def self.retorno(path, retorna)
7
+ Cnab240santander::Retorno.new(:path => path, :retorna => retorna)
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe "Cnab240santander" do
4
+ it "should include ActiveSupport" do
5
+ Object.class_eval { const_defined?("ActiveSupport") }.should be_true
6
+ end
7
+
8
+ it "should raise an exception when :path options is nil" do
9
+ lambda {
10
+ Cnab240santander.retorno()
11
+ }.should raise_exception(Exception)
12
+ end
13
+
14
+ it "should return an array" do
15
+ cnab = Cnab240santander.retorno(File.dirname(__FILE__)+"/../../RETORNO.TXT", nil)
16
+ cnab.linhas.should be_kind_of(Array)
17
+ end
18
+
19
+ context "Header file" do
20
+ it "should parse the header file" do
21
+ cnab = Cnab240santander.retorno(File.dirname(__FILE__)+"/../../RETORNO.TXT", 0)
22
+ cnab.linhas.should be_kind_of(Array)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,9 @@
1
+ require "mocha"
2
+ require 'active_support'
3
+ require 'cnab240santander'
4
+
5
+ Dir[File.dirname(__FILE__) + "/../lib/**/*.rb"].each {|file| require File.expand_path(file)}
6
+
7
+ RSpec.configure do |config|
8
+ config.mock_with :mocha
9
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cnab240santander
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Lairton Borges
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-11-29 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activesupport
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 3
31
+ - 1
32
+ - 0
33
+ version: 3.1.0
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: mocha
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 47
45
+ segments:
46
+ - 0
47
+ - 9
48
+ - 10
49
+ version: 0.9.10
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: rspec
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ hash: 23
61
+ segments:
62
+ - 2
63
+ - 6
64
+ - 0
65
+ version: 2.6.0
66
+ type: :development
67
+ version_requirements: *id003
68
+ description: Gem to read the cnab240 return file of Santander Bank (Brazil)
69
+ email:
70
+ - lairton@gmail.com
71
+ executables: []
72
+
73
+ extensions: []
74
+
75
+ extra_rdoc_files: []
76
+
77
+ files:
78
+ - .gitignore
79
+ - .rspec
80
+ - Gemfile
81
+ - RETORNO.TXT
82
+ - Rakefile
83
+ - cnab240santander.gemspec
84
+ - lib/cnab240santander.rb
85
+ - lib/cnab240santander/base.rb
86
+ - lib/cnab240santander/detalhe.rb
87
+ - lib/cnab240santander/formatacao.rb
88
+ - lib/cnab240santander/header_arquivo.rb
89
+ - lib/cnab240santander/header_lote.rb
90
+ - lib/cnab240santander/retorno.rb
91
+ - lib/cnab240santander/trailer_arquivo.rb
92
+ - lib/cnab240santander/trailer_lote.rb
93
+ - lib/cnab240santander/version.rb
94
+ - spec/files/cnab_spec.rb
95
+ - spec/spec_helper.rb
96
+ homepage: https://github.com/ljoseppi/
97
+ licenses: []
98
+
99
+ post_install_message:
100
+ rdoc_options: []
101
+
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ hash: 3
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ requirements: []
123
+
124
+ rubyforge_project: cnab240santander
125
+ rubygems_version: 1.8.10
126
+ signing_key:
127
+ specification_version: 3
128
+ summary: Gem to read the cnab240 return file of Santander Bank (Brazil)
129
+ test_files: []
130
+