cnab240santander 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+