cnab240 0.0.1
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 +18 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/Gemfile +6 -0
- data/LICENSE +22 -0
- data/README.md +34 -0
- data/Rakefile +8 -0
- data/cnab240.gemspec +22 -0
- data/lib/cnab240/arquivo/arquivo.rb +32 -0
- data/lib/cnab240/arquivo/header.rb +39 -0
- data/lib/cnab240/arquivo/trailer.rb +18 -0
- data/lib/cnab240/core_ext/attribute_accessors.rb +47 -0
- data/lib/cnab240/core_ext/bindata.rb +9 -0
- data/lib/cnab240/core_ext/default_mixin.rb +12 -0
- data/lib/cnab240/pagamentos/header.rb +41 -0
- data/lib/cnab240/pagamentos/lote.rb +25 -0
- data/lib/cnab240/pagamentos/trailer.rb +18 -0
- data/lib/cnab240/segmentos/segmento_a.rb +44 -0
- data/lib/cnab240/segmentos/segmento_b.rb +40 -0
- data/lib/cnab240/segmentos/segmento_c.rb +32 -0
- data/lib/cnab240/version.rb +4 -0
- data/lib/cnab240.rb +41 -0
- data/spec/arquivo/arquivo_spec.rb +40 -0
- data/spec/arquivo/header_spec.rb +41 -0
- data/spec/arquivo/trailer_spec.rb +22 -0
- data/spec/cnab240_spec.rb +22 -0
- data/spec/pagamentos/header_spec.rb +55 -0
- data/spec/pagamentos/lote_spec.rb +26 -0
- data/spec/pagamentos/trailer_spec.rb +32 -0
- data/spec/segmentos/segmento_a_spec.rb +56 -0
- data/spec/segmentos/segmento_b_spec.rb +58 -0
- data/spec/segmentos/segmento_c_spec.rb +42 -0
- data/spec/spec_helper.rb +8 -0
- metadata +127 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/.rspec
    ADDED
    
    
    
        data/.travis.yml
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    
    
        data/LICENSE
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            Copyright (c) 2012 J. Eduardo R. Mourao
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            MIT License
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 6 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 7 | 
            +
            "Software"), to deal in the Software without restriction, including
         | 
| 8 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 9 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 10 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 11 | 
            +
            the following conditions:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 14 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 17 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 18 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 19 | 
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 20 | 
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 21 | 
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 22 | 
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            # CNAB 240
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            [](http://travis-ci.org/eduardordm/cnab240)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Esta é uma implementação do Layout Padrão Febraban 240 posições, baseada no BinData. 
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## Instalação
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Adicione ao Gemfile:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                gem 'cnab240'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            execute:
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                $ bundle
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            Ou adicione no seu chiqueiro:
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                $ gem install cnab240
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            ## Como usar
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            TODO: ...
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            ## Contribuindo
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            Adicione testes, abra o pull request. 
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            Regras:
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            1. Sem bikeshedding.
         | 
| 32 | 
            +
            2. Sem bikeshedding.
         | 
| 33 | 
            +
            3. Sem bikeshedding.
         | 
| 34 | 
            +
             | 
    
        data/Rakefile
    ADDED
    
    
    
        data/cnab240.gemspec
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            require File.expand_path('../lib/cnab240/version', __FILE__)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Gem::Specification.new do |gem|
         | 
| 5 | 
            +
              gem.add_development_dependency "rspec"
         | 
| 6 | 
            +
              gem.add_dependency "bindata"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              gem.authors       = ["Eduardo Mourao"]
         | 
| 9 | 
            +
              gem.email         = ["eduardo.a20@gmail.com"]
         | 
| 10 | 
            +
              gem.description   = %q{Formato CNAB 240.}
         | 
| 11 | 
            +
              gem.summary       = %q{Formato CNAB 240.}
         | 
| 12 | 
            +
              gem.homepage      = ""
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              gem.rubyforge_project = "cnab240"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              gem.files         = `git ls-files`.split($\)
         | 
| 17 | 
            +
              gem.executables   = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
         | 
| 18 | 
            +
              gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
         | 
| 19 | 
            +
              gem.name          = "cnab240"
         | 
| 20 | 
            +
              gem.require_paths = ["lib"]
         | 
| 21 | 
            +
              gem.version       = Cnab240::VERSION
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            module Cnab240::Arquivo
         | 
| 2 | 
            +
            	class Arquivo
         | 
| 3 | 
            +
            		attr_accessor :header
         | 
| 4 | 
            +
            		attr_accessor :lotes
         | 
| 5 | 
            +
            		attr_accessor :trailer
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            		def initialize
         | 
| 8 | 
            +
            			@header = Header.new
         | 
| 9 | 
            +
            			@trailer = Trailer.new
         | 
| 10 | 
            +
            			@lotes = []
         | 
| 11 | 
            +
            		end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
             | 
| 14 | 
            +
            		def linhas
         | 
| 15 | 
            +
            			a = Array.new
         | 
| 16 | 
            +
            			a << @header.linha
         | 
| 17 | 
            +
            			@lotes.each do |lote|
         | 
| 18 | 
            +
            				lote.linhas.each do |linha|
         | 
| 19 | 
            +
            					a << linha
         | 
| 20 | 
            +
            				end
         | 
| 21 | 
            +
            			end 
         | 
| 22 | 
            +
            			a << @trailer.linha
         | 
| 23 | 
            +
            			a
         | 
| 24 | 
            +
            		end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            		def string
         | 
| 27 | 
            +
            			a.join("\n")
         | 
| 28 | 
            +
            		end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            	end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            end
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            module Cnab240::Arquivo
         | 
| 2 | 
            +
            	class Header < BinData::Record
         | 
| 3 | 
            +
            		
         | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :value => '0000'
         | 
| 8 | 
            +
            		string :controle_registro, :value => '0'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :cnab_g004_1, :length => 9
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            		string :empresa_tipo, :length => 1
         | 
| 13 | 
            +
            		string :empresa_numero, :length => 14
         | 
| 14 | 
            +
            		string :empresa_convenio, :length => 20
         | 
| 15 | 
            +
            		string :empresa_agencia_codigo, :length => 5
         | 
| 16 | 
            +
            		string :empresa_agencia_dv, :length => 1
         | 
| 17 | 
            +
            		string :empresa_conta_numero, :length => 12
         | 
| 18 | 
            +
            		string :empresa_conta_dv, :length => 1
         | 
| 19 | 
            +
            		string :empresa_agencia_conta_dv, :length => 1
         | 
| 20 | 
            +
            		string :empresa_nome, :length => 30
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            		string :banco_nome, :length => 30
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            		string :cnab_g004_2, :length => 10
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            		string :arquivo_codigo, :length => 1
         | 
| 27 | 
            +
            		string :arquivo_data_geracao, :length => 8
         | 
| 28 | 
            +
            		string :arquivo_hora_geracao,:length => 6
         | 
| 29 | 
            +
            		string :arquivo_sequencia, :length => 6
         | 
| 30 | 
            +
            		string :arquivo_layout, :value => '085'
         | 
| 31 | 
            +
            		string :arquivo_densidade, :length => 5
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            		string :reservado_banco, :length => 20
         | 
| 34 | 
            +
            		string :reservado_empresa, :length => 20
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            		string :cnab_g004_3, :length => 29
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            	end
         | 
| 39 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            module Cnab240::Arquivo
         | 
| 2 | 
            +
            	class Trailer < BinData::Record
         | 
| 3 | 
            +
            		
         | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :value => '9999'
         | 
| 8 | 
            +
            		string :controle_registro,  :value => '9'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :cnab_g004_1, :length => 9
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            		string :totais_qtde_lotes, :length => 6
         | 
| 13 | 
            +
            		string :totais_qtde_registros, :length => 6
         | 
| 14 | 
            +
            		string :totais_qtde_contas_concil, :length => 6
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            		string :cnab_g004_2, :length => 205
         | 
| 17 | 
            +
            	end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            # Taken from Rails 2.1
         | 
| 2 | 
            +
            class Module
         | 
| 3 | 
            +
              def mod_attr_reader(*syms)
         | 
| 4 | 
            +
                syms.each do |sym|
         | 
| 5 | 
            +
                  next if sym.is_a?(Hash)
         | 
| 6 | 
            +
                  class_eval(<<-EOS, __FILE__, __LINE__)
         | 
| 7 | 
            +
                    unless defined? @@#{sym}
         | 
| 8 | 
            +
                      @@#{sym} = nil
         | 
| 9 | 
            +
                    end
         | 
| 10 | 
            +
                    
         | 
| 11 | 
            +
                    def self.#{sym}
         | 
| 12 | 
            +
                      @@#{sym}
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    def #{sym}
         | 
| 16 | 
            +
                      @@#{sym}
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
                  EOS
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
              
         | 
| 22 | 
            +
              def mod_attr_writer(*syms)
         | 
| 23 | 
            +
                options = syms
         | 
| 24 | 
            +
                syms.each do |sym|
         | 
| 25 | 
            +
                  class_eval(<<-EOS, __FILE__, __LINE__)
         | 
| 26 | 
            +
                    unless defined? @@#{sym}
         | 
| 27 | 
            +
                      @@#{sym} = nil
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
                    
         | 
| 30 | 
            +
                    def self.#{sym}=(obj)
         | 
| 31 | 
            +
                      @@#{sym} = obj
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
                    
         | 
| 34 | 
            +
                    #{"
         | 
| 35 | 
            +
                    def #{sym}=(obj)
         | 
| 36 | 
            +
                      @@#{sym} = obj
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                    "  }
         | 
| 39 | 
            +
                  EOS
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
              
         | 
| 43 | 
            +
              def mod_attr_accessor(*syms)
         | 
| 44 | 
            +
                mod_attr_reader(*syms)
         | 
| 45 | 
            +
                mod_attr_writer(*syms)
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            module Cnab240::Pagamentos
         | 
| 2 | 
            +
            	class Header < BinData::Record
         | 
| 3 | 
            +
            		
         | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :length => 4
         | 
| 8 | 
            +
            		string :controle_registro, :length => 1, :initial_value => '1'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :servico_operacao, :value => 'C'
         | 
| 11 | 
            +
            		string :servico_tipo, :length => 2 
         | 
| 12 | 
            +
            		string :servico_forma, :length => 2
         | 
| 13 | 
            +
            		string :servico_layout, :value => '044'
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		string :cnab_g004_1, :length => 1
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            		string :empresa_tipo, :length => 1
         | 
| 18 | 
            +
            		string :empresa_numero, :length => 14 
         | 
| 19 | 
            +
            		string :empresa_convenio, :length => 20
         | 
| 20 | 
            +
            		string :empresa_agencia_codigo, :length => 5
         | 
| 21 | 
            +
            		string :empresa_agencia_dv, :length => 1
         | 
| 22 | 
            +
            		string :empresa_conta_numero, :length => 12
         | 
| 23 | 
            +
            		string :empresa_conta_dv, :length => 1
         | 
| 24 | 
            +
            		string :empresa_agencia_conta_dv, :length => 1 
         | 
| 25 | 
            +
            		string :empresa_nome, :length => 30
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            		string :informacao_1, :length => 40
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            		string :endereco_logradouro, :length => 30
         | 
| 30 | 
            +
            		string :endereco_numero, :length => 5
         | 
| 31 | 
            +
            		string :endereco_complemento, :length => 15
         | 
| 32 | 
            +
            		string :endereco_cidade, :length => 20
         | 
| 33 | 
            +
            		string :endereco_cep, :length => 5
         | 
| 34 | 
            +
            		string :endereco_complemento_cep, :length => 3
         | 
| 35 | 
            +
            		string :endereco_estado, :length => 2
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            		string :indicativo_forma_pagamento, :length => 2
         | 
| 38 | 
            +
            		string :cnab_g004_2, :length => 6
         | 
| 39 | 
            +
            		string :ocorrencias, :length => 10
         | 
| 40 | 
            +
            	end
         | 
| 41 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            module Cnab240::Pagamentos
         | 
| 2 | 
            +
            	class Lote 
         | 
| 3 | 
            +
            		attr_accessor :header
         | 
| 4 | 
            +
            		attr_accessor :segmento_a
         | 
| 5 | 
            +
            		attr_accessor :segmento_b
         | 
| 6 | 
            +
            		attr_accessor :segmento_c
         | 
| 7 | 
            +
            		attr_accessor :trailer
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            		def initialize
         | 
| 10 | 
            +
            			@header = Header.new
         | 
| 11 | 
            +
            			@segmento_a = SegmentoA.new
         | 
| 12 | 
            +
            			@segmento_b = SegmentoB.new
         | 
| 13 | 
            +
            			@trailer = Trailer.new
         | 
| 14 | 
            +
            		end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            		def linhas
         | 
| 17 | 
            +
            			@segmento_c.nil? ? [@header, @segmento_a, @segmento_b, @trailer] : [@header, @segmento_a, @segmento_b, @segmento_c, @trailer]
         | 
| 18 | 
            +
            		end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            		def string
         | 
| 21 | 
            +
            			linhas.join("\n")
         | 
| 22 | 
            +
            		end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            	end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            module Cnab240::Pagamentos
         | 
| 2 | 
            +
            	class Trailer < BinData::Record
         | 
| 3 | 
            +
            		
         | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :length => 4
         | 
| 8 | 
            +
            		string :controle_registro, :value => '5'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :cnab_g004_1, :length => 9
         | 
| 11 | 
            +
            		string :totais_qtde_registros, :length => 6
         | 
| 12 | 
            +
            		string :totais_valor, :length => 18
         | 
| 13 | 
            +
            		string :totais_qtde_moeda, :length => 18
         | 
| 14 | 
            +
            		string :numero_aviso_debito, :length => 6
         | 
| 15 | 
            +
            		string :cnab_g004_2, :length => 165
         | 
| 16 | 
            +
            		string :ocorrencias, :length => 10
         | 
| 17 | 
            +
            	end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            module Cnab240
         | 
| 2 | 
            +
            	class SegmentoA < BinData::Record
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
            		
         | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :length => 4
         | 
| 8 | 
            +
            		string :controle_registro, :length => 1, :initial_value => '3'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :servico_numero_registro, :length => 5
         | 
| 11 | 
            +
            		string :servico_codigo_segmento, :value => 'A'
         | 
| 12 | 
            +
            		string :servico_tipo_movimento, :length => 1
         | 
| 13 | 
            +
            		string :servico_codigo_movimento, :length => 2
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		string :favorecido_camara, :length => 3
         | 
| 16 | 
            +
            		string :favorecido_banco, :length => 3
         | 
| 17 | 
            +
            		string :favorecido_agencia_codigo, :length => 5
         | 
| 18 | 
            +
            		string :favorecido_agencia_dv, :length => 1
         | 
| 19 | 
            +
            		string :favorecido_conta_numero, :length => 12
         | 
| 20 | 
            +
            		string :favorecido_conta_dv, :length => 1
         | 
| 21 | 
            +
            		string :favorecido_agencia_conta_dv, :length => 1
         | 
| 22 | 
            +
            		string :favorecido_nome, :length => 30
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            		string :credito_seu_numero, :length => 20
         | 
| 25 | 
            +
            		string :credito_data_pagamento, :length => 8
         | 
| 26 | 
            +
            		string :credito_moeda_tipo, :length => 3
         | 
| 27 | 
            +
            		string :credito_moeda_quantidade, :length => 15
         | 
| 28 | 
            +
            		string :credito_valor_pagamento, :length => 15
         | 
| 29 | 
            +
            		string :credito_nosso_numero, :length => 20
         | 
| 30 | 
            +
            		string :credito_data_real, :length => 8
         | 
| 31 | 
            +
            		string :credito_valor_real, :length => 15
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            		string :informacao_2, :length => 40
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            		string :codigo_finalidade_doc, :length => 2
         | 
| 36 | 
            +
            		string :codigo_finalidade_ted, :length => 5
         | 
| 37 | 
            +
            		string :codigo_finalidade_complementar, :length => 2
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            		string :cnab_g004_1, :length => 3
         | 
| 40 | 
            +
            		string :aviso, :length => 1
         | 
| 41 | 
            +
            		string :ocorrencias, :length => 10
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            	end
         | 
| 44 | 
            +
            end
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            module Cnab240
         | 
| 2 | 
            +
            	class SegmentoB < BinData::Record
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :length => 4
         | 
| 8 | 
            +
            		string :controle_registro, :length => 1, :initial_value => '3'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :servico_numero_registro, :length => 5
         | 
| 11 | 
            +
            		string :servico_codigo_segmento, :value => 'B'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            		string :cnab240_g004_1, :length => 3
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		string :favorecido_inscricao_tipo, :length => 1
         | 
| 16 | 
            +
            		string :favorecido_inscricao_numero, :length => 14
         | 
| 17 | 
            +
            		string :favorecido_endereco_logradouro, :length => 30
         | 
| 18 | 
            +
            		string :favorecido_endereco_numero, :length => 5
         | 
| 19 | 
            +
            		string :favorecido_endereco_complemento, :length => 15
         | 
| 20 | 
            +
            		string :favorecido_endereco_bairro, :length => 15
         | 
| 21 | 
            +
            		string :favorecido_endereco_cidade, :length => 20
         | 
| 22 | 
            +
            		string :favorecido_endereco_cep, :length => 5
         | 
| 23 | 
            +
            		string :favorecido_endereco_cep_complemento, :length => 3
         | 
| 24 | 
            +
            		string :favorecido_endereco_estado, :length => 2
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            		string :pagamento_data_vencimento, :length => 8
         | 
| 27 | 
            +
            		string :pagamento_valor_documento, :length => 15
         | 
| 28 | 
            +
            		string :pagamento_valor_abatimento, :length => 15
         | 
| 29 | 
            +
            		string :pagamento_valor_desconto, :length => 15
         | 
| 30 | 
            +
            		string :pagamento_valor_mora, :length => 15
         | 
| 31 | 
            +
            		string :pagamento_valor_multa, :length => 15
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            		string :codigo_documento_favorecido, :length => 15
         | 
| 34 | 
            +
            		string :aviso, :length => 1
         | 
| 35 | 
            +
            		string :codigo_ug, :length => 6
         | 
| 36 | 
            +
            		
         | 
| 37 | 
            +
            		string :cnab_g004_2, :length => 8
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            	end
         | 
| 40 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            module Cnab240
         | 
| 2 | 
            +
            	class SegmentoC < BinData::Record
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            		include Cnab240::DefaultMixin
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            		string :controle_banco, :length => 3
         | 
| 7 | 
            +
            		string :controle_lote, :length => 4
         | 
| 8 | 
            +
            		string :controle_registro, :length => 1, :initial_value => '3'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		string :servico_numero_registro, :length => 5
         | 
| 11 | 
            +
            		string :servico_codigo_segmento, :value => 'C'
         | 
| 12 | 
            +
            		
         | 
| 13 | 
            +
            		string :cnab240_g004_1, :length => 3
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		string :complementar_valor_ir, :length => 15
         | 
| 16 | 
            +
            		string :complementar_valor_iss, :length => 15
         | 
| 17 | 
            +
            		string :complementar_valor_iof, :length => 15
         | 
| 18 | 
            +
            		string :complementar_valor_outras_deducoes, :length => 15
         | 
| 19 | 
            +
            		string :complementar_valor_outros_acrescimos, :length => 15
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            		string :substituta_agencia, :length => 5
         | 
| 22 | 
            +
            		string :substituta_agencia_dv, :length => 1
         | 
| 23 | 
            +
            		string :substituta_numero_cc, :length => 12
         | 
| 24 | 
            +
            		string :substituta_conta_dv, :length => 1
         | 
| 25 | 
            +
            		string :substituta_agencia_conta_dv, :length => 1
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            		string :valor_inss, :length => 15
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            		string :cnab_g004_2, :length => 113
         | 
| 30 | 
            +
            		
         | 
| 31 | 
            +
            	end
         | 
| 32 | 
            +
            end
         | 
    
        data/lib/cnab240.rb
    ADDED
    
    | @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            require "cnab240/version"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'bindata'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require "cnab240/core_ext/attribute_accessors"
         | 
| 6 | 
            +
            require "cnab240/core_ext/bindata"
         | 
| 7 | 
            +
            require "cnab240/core_ext/default_mixin"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            require "cnab240/segmentos/segmento_a"
         | 
| 10 | 
            +
            require "cnab240/segmentos/segmento_b"
         | 
| 11 | 
            +
            require "cnab240/segmentos/segmento_c"
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            require "cnab240/arquivo/arquivo"
         | 
| 14 | 
            +
            require "cnab240/arquivo/header"
         | 
| 15 | 
            +
            require "cnab240/arquivo/trailer"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            require "cnab240/pagamentos/header"
         | 
| 18 | 
            +
            require "cnab240/pagamentos/trailer"
         | 
| 19 | 
            +
            require "cnab240/pagamentos/lote"
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 22 | 
            +
            module Cnab240
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            	mod_attr_accessor :defaults
         | 
| 25 | 
            +
            	@@defaults = {}
         | 
| 26 | 
            +
             | 
| 27 | 
            +
             | 
| 28 | 
            +
            	# Yield self for configuration block:
         | 
| 29 | 
            +
            	#
         | 
| 30 | 
            +
            	#   Cnab240.setup do |config|
         | 
| 31 | 
            +
            	#     config.banco = "001"
         | 
| 32 | 
            +
            	#   end
         | 
| 33 | 
            +
            	#
         | 
| 34 | 
            +
            	def self.setup
         | 
| 35 | 
            +
            		yield self
         | 
| 36 | 
            +
            	end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include Cnab240::Pagamentos
         | 
| 4 | 
            +
            include Cnab240::Arquivo
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe Arquivo do
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            	it "deve instanciar" do
         | 
| 9 | 
            +
            		arquivo = Cnab240::Arquivo::Arquivo.new
         | 
| 10 | 
            +
            		arquivo.should be_an_instance_of(Cnab240::Arquivo::Arquivo)
         | 
| 11 | 
            +
            	end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            	it "deve aceitar lotes" do
         | 
| 14 | 
            +
            		arquivo = Cnab240::Arquivo::Arquivo.new
         | 
| 15 | 
            +
            		arquivo.should respond_to(:lotes)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            		(1..10).each do |n|
         | 
| 18 | 
            +
            			lote = Cnab240::Pagamentos::Lote.new
         | 
| 19 | 
            +
            			lote.should be_an_instance_of(Cnab240::Pagamentos::Lote)
         | 
| 20 | 
            +
            			arquivo.lotes << lote
         | 
| 21 | 
            +
            			arquivo.lotes.length.should be(n)
         | 
| 22 | 
            +
            		end
         | 
| 23 | 
            +
            	end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            	it "deve manter 240 em todo o arquivo" do
         | 
| 26 | 
            +
            		arquivo = Cnab240::Arquivo::Arquivo.new
         | 
| 27 | 
            +
            		arquivo.should respond_to(:lotes)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            		(1..10).each do |n|
         | 
| 30 | 
            +
            			lote = Cnab240::Pagamentos::Lote.new
         | 
| 31 | 
            +
            			lote.should be_an_instance_of(Cnab240::Pagamentos::Lote)
         | 
| 32 | 
            +
            			arquivo.lotes << lote
         | 
| 33 | 
            +
            		end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            		arquivo.linhas do |linha|
         | 
| 36 | 
            +
            			linha.length.should be(240)
         | 
| 37 | 
            +
            		end
         | 
| 38 | 
            +
            	end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            end
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Cnab240::Arquivo::Header do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            	it "deve ter campos de header" do
         | 
| 7 | 
            +
            		header = Cnab240::Arquivo::Header.new
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            		header.should respond_to(:controle_banco)
         | 
| 10 | 
            +
            		header.should respond_to(:controle_lote)
         | 
| 11 | 
            +
            		header.should respond_to(:controle_registro)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            		header.should respond_to(:cnab_g004_1)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		header.should respond_to(:empresa_tipo)
         | 
| 16 | 
            +
            		header.should respond_to(:empresa_numero)
         | 
| 17 | 
            +
            		header.should respond_to(:empresa_convenio)
         | 
| 18 | 
            +
            		header.should respond_to(:empresa_agencia_codigo)
         | 
| 19 | 
            +
            		header.should respond_to(:empresa_agencia_dv)
         | 
| 20 | 
            +
            		header.should respond_to(:empresa_conta_numero)
         | 
| 21 | 
            +
            		header.should respond_to(:empresa_conta_dv)
         | 
| 22 | 
            +
            		header.should respond_to(:empresa_agencia_conta_dv)
         | 
| 23 | 
            +
            		header.should respond_to(:empresa_nome)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            		header.should respond_to(:banco_nome)
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            		header.should respond_to(:cnab_g004_2)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            		header.should respond_to(:arquivo_codigo)
         | 
| 30 | 
            +
            		header.should respond_to(:arquivo_data_geracao)
         | 
| 31 | 
            +
            		header.should respond_to(:arquivo_hora_geracao)
         | 
| 32 | 
            +
            		header.should respond_to(:arquivo_sequencia)
         | 
| 33 | 
            +
            		header.should respond_to(:arquivo_layout)
         | 
| 34 | 
            +
            		header.should respond_to(:arquivo_densidade)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            		header.should respond_to(:reservado_banco)
         | 
| 37 | 
            +
            		header.should respond_to(:reservado_empresa)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            		header.should respond_to(:cnab_g004_3)
         | 
| 40 | 
            +
            	end
         | 
| 41 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Cnab240::Arquivo::Trailer do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            	it "deve conter campos trailer" do
         | 
| 7 | 
            +
            		header = Cnab240::Arquivo::Trailer.new
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            		header.should respond_to(:controle_banco)
         | 
| 10 | 
            +
            		header.should respond_to(:controle_lote)
         | 
| 11 | 
            +
            		header.should respond_to(:controle_registro)
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            		header.should respond_to(:cnab_g004_1)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		header.should respond_to(:totais_qtde_lotes)
         | 
| 16 | 
            +
            		header.should respond_to(:totais_qtde_registros)
         | 
| 17 | 
            +
            		header.should respond_to(:totais_qtde_contas_concil)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            		header.should respond_to(:cnab_g004_2)
         | 
| 20 | 
            +
            	end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Cnab240 do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            	it "deve ter campos de configuracao" do
         | 
| 6 | 
            +
            		Cnab240.setup do |config|
         | 
| 7 | 
            +
            			config.should respond_to(:defaults)
         | 
| 8 | 
            +
            			defaults[:empresa_tipo] = "1"
         | 
| 9 | 
            +
            		end
         | 
| 10 | 
            +
            		Cnab240.defaults[:empresa_tipo].should eq("1")
         | 
| 11 | 
            +
            	end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            	it "configuracao deve ter efeito" do
         | 
| 14 | 
            +
            		Cnab240.setup do |config|
         | 
| 15 | 
            +
            			defaults[:empresa_tipo] = "1"
         | 
| 16 | 
            +
            		end
         | 
| 17 | 
            +
            		Cnab240.defaults[:empresa_tipo].should eq("1")
         | 
| 18 | 
            +
            		arquivo = Cnab240::Arquivo::Arquivo.new
         | 
| 19 | 
            +
            		arquivo.header.empresa_tipo.should eq("1")
         | 
| 20 | 
            +
            	end
         | 
| 21 | 
            +
            	
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Cnab240::Pagamentos::Header do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            	it "deve conter campos header" do
         | 
| 6 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            		header = lote.header
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		header.should respond_to(:controle_banco)
         | 
| 11 | 
            +
            		header.should respond_to(:controle_lote)
         | 
| 12 | 
            +
            		header.should respond_to(:controle_registro)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            		header.should respond_to(:servico_operacao)
         | 
| 15 | 
            +
            		header.should respond_to(:servico_tipo)
         | 
| 16 | 
            +
            		header.should respond_to(:servico_forma)
         | 
| 17 | 
            +
            		header.should respond_to(:servico_layout)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            		header.should respond_to(:cnab_g004_1)
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            		header.should respond_to(:empresa_tipo)
         | 
| 22 | 
            +
            		header.should respond_to(:empresa_numero)
         | 
| 23 | 
            +
            		header.should respond_to(:empresa_convenio)
         | 
| 24 | 
            +
            		header.should respond_to(:empresa_agencia_codigo)
         | 
| 25 | 
            +
            		header.should respond_to(:empresa_agencia_dv)
         | 
| 26 | 
            +
            		header.should respond_to(:empresa_conta_numero)
         | 
| 27 | 
            +
            		header.should respond_to(:empresa_conta_dv)
         | 
| 28 | 
            +
            		header.should respond_to(:empresa_agencia_conta_dv)
         | 
| 29 | 
            +
            		header.should respond_to(:empresa_nome)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            		header.should respond_to(:informacao_1)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            		header.should respond_to(:endereco_logradouro)
         | 
| 34 | 
            +
            		header.should respond_to(:endereco_numero)
         | 
| 35 | 
            +
            		header.should respond_to(:endereco_complemento)
         | 
| 36 | 
            +
            		header.should respond_to(:endereco_cidade)
         | 
| 37 | 
            +
            		header.should respond_to(:endereco_cep)
         | 
| 38 | 
            +
            		header.should respond_to(:endereco_complemento_cep)
         | 
| 39 | 
            +
            		header.should respond_to(:endereco_estado)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            		header.should respond_to(:indicativo_forma_pagamento)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            		header.should respond_to(:cnab_g004_2)
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            		header.should respond_to(:ocorrencias)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            	end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
             | 
| 50 | 
            +
            	it "header deve ter 240 caracteres" do
         | 
| 51 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 52 | 
            +
            		lote.header.linha.length.should be(240)
         | 
| 53 | 
            +
            	end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            end
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Cnab240::Pagamentos::Lote do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            	it "deve conter trailer e header" do
         | 
| 6 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 7 | 
            +
            		lote.header.should be_an_instance_of(Cnab240::Pagamentos::Header)	
         | 
| 8 | 
            +
            		lote.trailer.should be_an_instance_of(Cnab240::Pagamentos::Trailer)
         | 
| 9 | 
            +
            	end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            	it "deve conter segmento a" do
         | 
| 12 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 13 | 
            +
            		lote.segmento_a.should be_an_instance_of(Cnab240::SegmentoA)
         | 
| 14 | 
            +
            	end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            	it "deve conter segmento b" do
         | 
| 17 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 18 | 
            +
            		lote.segmento_b.should be_an_instance_of(Cnab240::SegmentoB)
         | 
| 19 | 
            +
            	end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            	it "pode conter segmento c" do
         | 
| 22 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 23 | 
            +
            		lote.should respond_to(:segmento_c)
         | 
| 24 | 
            +
            	end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            end
         | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Cnab240::Pagamentos::Trailer do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            	it "deve conter campos trailer" do
         | 
| 6 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            		trailer = lote.trailer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            		trailer.should respond_to(:controle_banco)
         | 
| 11 | 
            +
            		trailer.should respond_to(:controle_lote)
         | 
| 12 | 
            +
            		trailer.should respond_to(:controle_registro)
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            		trailer.should respond_to(:cnab_g004_1)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            		trailer.should respond_to(:totais_qtde_registros)
         | 
| 17 | 
            +
            		trailer.should respond_to(:totais_valor)
         | 
| 18 | 
            +
            		trailer.should respond_to(:totais_qtde_moeda)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            		trailer.should respond_to(:numero_aviso_debito)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            		trailer.should respond_to(:cnab_g004_2)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            		trailer.should respond_to(:ocorrencias)
         | 
| 25 | 
            +
            	end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            	it "trailer deve ter 240 caracteres" do
         | 
| 28 | 
            +
            		lote = Cnab240::Pagamentos::Lote.new
         | 
| 29 | 
            +
            		lote.trailer.linha.length.should be(240)
         | 
| 30 | 
            +
            	end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include Cnab240
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe SegmentoA do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	it "deve instanciar segmento" do
         | 
| 8 | 
            +
            		segmento = SegmentoA.new
         | 
| 9 | 
            +
            		segmento.should be_an_instance_of(SegmentoA)
         | 
| 10 | 
            +
            	end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            	it "deve conter campos" do
         | 
| 13 | 
            +
            		segmento = SegmentoA.new
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		segmento.should respond_to(:controle_banco)
         | 
| 16 | 
            +
            		segmento.should respond_to(:controle_lote)
         | 
| 17 | 
            +
            		segmento.should respond_to(:controle_registro)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            		segmento.should respond_to(:servico_numero_registro)
         | 
| 20 | 
            +
            		segmento.should respond_to(:servico_codigo_segmento)
         | 
| 21 | 
            +
            		segmento.should respond_to(:servico_tipo_movimento)
         | 
| 22 | 
            +
            		segmento.should respond_to(:servico_codigo_movimento)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            		segmento.should respond_to(:favorecido_camara)
         | 
| 25 | 
            +
            		segmento.should respond_to(:favorecido_banco)
         | 
| 26 | 
            +
            		segmento.should respond_to(:favorecido_agencia_codigo)
         | 
| 27 | 
            +
            		segmento.should respond_to(:favorecido_agencia_dv)
         | 
| 28 | 
            +
            		segmento.should respond_to(:favorecido_conta_numero)
         | 
| 29 | 
            +
            		segmento.should respond_to(:favorecido_conta_dv)
         | 
| 30 | 
            +
            		segmento.should respond_to(:favorecido_nome)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            		segmento.should respond_to(:credito_seu_numero)
         | 
| 33 | 
            +
            		segmento.should respond_to(:credito_data_pagamento)
         | 
| 34 | 
            +
            		segmento.should respond_to(:credito_moeda_tipo)
         | 
| 35 | 
            +
            		segmento.should respond_to(:credito_moeda_quantidade)
         | 
| 36 | 
            +
            		segmento.should respond_to(:credito_valor_pagamento)
         | 
| 37 | 
            +
            		segmento.should respond_to(:credito_nosso_numero)
         | 
| 38 | 
            +
            		segmento.should respond_to(:credito_data_real)
         | 
| 39 | 
            +
            		segmento.should respond_to(:credito_valor_real)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            		segmento.should respond_to(:informacao_2)
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            		segmento.should respond_to(:codigo_finalidade_doc)
         | 
| 44 | 
            +
            		segmento.should respond_to(:codigo_finalidade_ted)
         | 
| 45 | 
            +
            		segmento.should respond_to(:codigo_finalidade_complementar)
         | 
| 46 | 
            +
            		segmento.should respond_to(:cnab_g004_1)
         | 
| 47 | 
            +
            		segmento.should respond_to(:aviso)
         | 
| 48 | 
            +
            		segmento.should respond_to(:ocorrencias)
         | 
| 49 | 
            +
            	end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            	it "deve ter 240 caracteres" do
         | 
| 52 | 
            +
            		segmento = SegmentoA.new
         | 
| 53 | 
            +
            		segmento.linha.length.should be(240)
         | 
| 54 | 
            +
            	end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            end
         | 
| @@ -0,0 +1,58 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include Cnab240
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe SegmentoB do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	it "deve instanciar segmento" do
         | 
| 8 | 
            +
            		segmento = SegmentoB.new
         | 
| 9 | 
            +
            		segmento.should be_an_instance_of(SegmentoB)
         | 
| 10 | 
            +
            	end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            	it "deve conter campos" do
         | 
| 13 | 
            +
            		segmento = SegmentoB.new
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		segmento.should respond_to(:controle_banco)
         | 
| 16 | 
            +
            		segmento.should respond_to(:controle_lote)
         | 
| 17 | 
            +
            		segmento.should respond_to(:controle_registro)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            		segmento.should respond_to(:servico_numero_registro)
         | 
| 20 | 
            +
            		segmento.should respond_to(:servico_codigo_segmento)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            		segmento.should respond_to(:cnab240_g004_1)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            		segmento.should respond_to(:favorecido_inscricao_tipo)
         | 
| 25 | 
            +
            		segmento.should respond_to(:favorecido_inscricao_numero)
         | 
| 26 | 
            +
            		segmento.should respond_to(:favorecido_endereco_logradouro)
         | 
| 27 | 
            +
            		segmento.should respond_to(:favorecido_endereco_numero)
         | 
| 28 | 
            +
            		segmento.should respond_to(:favorecido_endereco_complemento)
         | 
| 29 | 
            +
            		segmento.should respond_to(:favorecido_endereco_bairro)
         | 
| 30 | 
            +
            		segmento.should respond_to(:favorecido_endereco_cidade)
         | 
| 31 | 
            +
            		segmento.should respond_to(:favorecido_endereco_cep)
         | 
| 32 | 
            +
            		segmento.should respond_to(:favorecido_endereco_cep_complemento)
         | 
| 33 | 
            +
            		segmento.should respond_to(:favorecido_endereco_estado)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            		segmento.should respond_to(:pagamento_data_vencimento)
         | 
| 36 | 
            +
            		segmento.should respond_to(:pagamento_valor_documento)
         | 
| 37 | 
            +
            		segmento.should respond_to(:pagamento_valor_abatimento)
         | 
| 38 | 
            +
            		segmento.should respond_to(:pagamento_valor_desconto)
         | 
| 39 | 
            +
            		segmento.should respond_to(:pagamento_valor_mora)
         | 
| 40 | 
            +
            		segmento.should respond_to(:pagamento_valor_multa)
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            		segmento.should respond_to(:codigo_documento_favorecido)
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            		segmento.should respond_to(:aviso)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            		segmento.should respond_to(:codigo_ug)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            		segmento.should respond_to(:cnab_g004_2)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            	end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
             | 
| 53 | 
            +
            	it "deve ter 240 caracteres" do
         | 
| 54 | 
            +
            		segmento = SegmentoB.new
         | 
| 55 | 
            +
            		segmento.linha.length.should be(240)
         | 
| 56 | 
            +
            	end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            end
         | 
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            include Cnab240
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe SegmentoC do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	it "deve instanciar segmento" do
         | 
| 8 | 
            +
            		segmento = SegmentoC.new
         | 
| 9 | 
            +
            		segmento.should be_an_instance_of(SegmentoC)
         | 
| 10 | 
            +
            	end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            	it "deve conter campos" do
         | 
| 13 | 
            +
            		segmento = SegmentoC.new
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            		segmento.should respond_to(:servico_numero_registro)
         | 
| 16 | 
            +
            		segmento.should respond_to(:servico_codigo_segmento)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            		segmento.should respond_to(:cnab240_g004_1)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            		segmento.should respond_to(:complementar_valor_ir)
         | 
| 21 | 
            +
            		segmento.should respond_to(:complementar_valor_iss)
         | 
| 22 | 
            +
            		segmento.should respond_to(:complementar_valor_iof)
         | 
| 23 | 
            +
            		segmento.should respond_to(:complementar_valor_outras_deducoes)
         | 
| 24 | 
            +
            		segmento.should respond_to(:complementar_valor_outros_acrescimos)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            		segmento.should respond_to(:substituta_agencia)
         | 
| 27 | 
            +
            		segmento.should respond_to(:substituta_agencia_dv)
         | 
| 28 | 
            +
            		segmento.should respond_to(:substituta_numero_cc)
         | 
| 29 | 
            +
            		segmento.should respond_to(:substituta_conta_dv)
         | 
| 30 | 
            +
            		segmento.should respond_to(:substituta_agencia_conta_dv)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            		segmento.should respond_to(:valor_inss)
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            		segmento.should respond_to(:cnab_g004_2)
         | 
| 35 | 
            +
            	end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            	it "deve ter 240 caracteres" do
         | 
| 38 | 
            +
            		segmento = SegmentoC.new
         | 
| 39 | 
            +
            		segmento.linha.length.should be(240)
         | 
| 40 | 
            +
            	end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | @@ -0,0 +1,127 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: cnab240
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.0.1
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - Eduardo Mourao
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2012-07-11 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: rspec
         | 
| 16 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: '0'
         | 
| 22 | 
            +
              type: :development
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 25 | 
            +
                none: false
         | 
| 26 | 
            +
                requirements:
         | 
| 27 | 
            +
                - - ! '>='
         | 
| 28 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            +
                    version: '0'
         | 
| 30 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 31 | 
            +
              name: bindata
         | 
| 32 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 33 | 
            +
                none: false
         | 
| 34 | 
            +
                requirements:
         | 
| 35 | 
            +
                - - ! '>='
         | 
| 36 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 37 | 
            +
                    version: '0'
         | 
| 38 | 
            +
              type: :runtime
         | 
| 39 | 
            +
              prerelease: false
         | 
| 40 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 41 | 
            +
                none: false
         | 
| 42 | 
            +
                requirements:
         | 
| 43 | 
            +
                - - ! '>='
         | 
| 44 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 45 | 
            +
                    version: '0'
         | 
| 46 | 
            +
            description: Formato CNAB 240.
         | 
| 47 | 
            +
            email:
         | 
| 48 | 
            +
            - eduardo.a20@gmail.com
         | 
| 49 | 
            +
            executables: []
         | 
| 50 | 
            +
            extensions: []
         | 
| 51 | 
            +
            extra_rdoc_files: []
         | 
| 52 | 
            +
            files:
         | 
| 53 | 
            +
            - .gitignore
         | 
| 54 | 
            +
            - .rspec
         | 
| 55 | 
            +
            - .travis.yml
         | 
| 56 | 
            +
            - Gemfile
         | 
| 57 | 
            +
            - LICENSE
         | 
| 58 | 
            +
            - README.md
         | 
| 59 | 
            +
            - Rakefile
         | 
| 60 | 
            +
            - cnab240.gemspec
         | 
| 61 | 
            +
            - lib/cnab240.rb
         | 
| 62 | 
            +
            - lib/cnab240/arquivo/arquivo.rb
         | 
| 63 | 
            +
            - lib/cnab240/arquivo/header.rb
         | 
| 64 | 
            +
            - lib/cnab240/arquivo/trailer.rb
         | 
| 65 | 
            +
            - lib/cnab240/core_ext/attribute_accessors.rb
         | 
| 66 | 
            +
            - lib/cnab240/core_ext/bindata.rb
         | 
| 67 | 
            +
            - lib/cnab240/core_ext/default_mixin.rb
         | 
| 68 | 
            +
            - lib/cnab240/pagamentos/header.rb
         | 
| 69 | 
            +
            - lib/cnab240/pagamentos/lote.rb
         | 
| 70 | 
            +
            - lib/cnab240/pagamentos/trailer.rb
         | 
| 71 | 
            +
            - lib/cnab240/segmentos/segmento_a.rb
         | 
| 72 | 
            +
            - lib/cnab240/segmentos/segmento_b.rb
         | 
| 73 | 
            +
            - lib/cnab240/segmentos/segmento_c.rb
         | 
| 74 | 
            +
            - lib/cnab240/version.rb
         | 
| 75 | 
            +
            - spec/arquivo/arquivo_spec.rb
         | 
| 76 | 
            +
            - spec/arquivo/header_spec.rb
         | 
| 77 | 
            +
            - spec/arquivo/trailer_spec.rb
         | 
| 78 | 
            +
            - spec/cnab240_spec.rb
         | 
| 79 | 
            +
            - spec/pagamentos/header_spec.rb
         | 
| 80 | 
            +
            - spec/pagamentos/lote_spec.rb
         | 
| 81 | 
            +
            - spec/pagamentos/trailer_spec.rb
         | 
| 82 | 
            +
            - spec/segmentos/segmento_a_spec.rb
         | 
| 83 | 
            +
            - spec/segmentos/segmento_b_spec.rb
         | 
| 84 | 
            +
            - spec/segmentos/segmento_c_spec.rb
         | 
| 85 | 
            +
            - spec/spec_helper.rb
         | 
| 86 | 
            +
            homepage: ''
         | 
| 87 | 
            +
            licenses: []
         | 
| 88 | 
            +
            post_install_message: 
         | 
| 89 | 
            +
            rdoc_options: []
         | 
| 90 | 
            +
            require_paths:
         | 
| 91 | 
            +
            - lib
         | 
| 92 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
              none: false
         | 
| 94 | 
            +
              requirements:
         | 
| 95 | 
            +
              - - ! '>='
         | 
| 96 | 
            +
                - !ruby/object:Gem::Version
         | 
| 97 | 
            +
                  version: '0'
         | 
| 98 | 
            +
                  segments:
         | 
| 99 | 
            +
                  - 0
         | 
| 100 | 
            +
                  hash: -3092847186393092884
         | 
| 101 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 102 | 
            +
              none: false
         | 
| 103 | 
            +
              requirements:
         | 
| 104 | 
            +
              - - ! '>='
         | 
| 105 | 
            +
                - !ruby/object:Gem::Version
         | 
| 106 | 
            +
                  version: '0'
         | 
| 107 | 
            +
                  segments:
         | 
| 108 | 
            +
                  - 0
         | 
| 109 | 
            +
                  hash: -3092847186393092884
         | 
| 110 | 
            +
            requirements: []
         | 
| 111 | 
            +
            rubyforge_project: cnab240
         | 
| 112 | 
            +
            rubygems_version: 1.8.24
         | 
| 113 | 
            +
            signing_key: 
         | 
| 114 | 
            +
            specification_version: 3
         | 
| 115 | 
            +
            summary: Formato CNAB 240.
         | 
| 116 | 
            +
            test_files:
         | 
| 117 | 
            +
            - spec/arquivo/arquivo_spec.rb
         | 
| 118 | 
            +
            - spec/arquivo/header_spec.rb
         | 
| 119 | 
            +
            - spec/arquivo/trailer_spec.rb
         | 
| 120 | 
            +
            - spec/cnab240_spec.rb
         | 
| 121 | 
            +
            - spec/pagamentos/header_spec.rb
         | 
| 122 | 
            +
            - spec/pagamentos/lote_spec.rb
         | 
| 123 | 
            +
            - spec/pagamentos/trailer_spec.rb
         | 
| 124 | 
            +
            - spec/segmentos/segmento_a_spec.rb
         | 
| 125 | 
            +
            - spec/segmentos/segmento_b_spec.rb
         | 
| 126 | 
            +
            - spec/segmentos/segmento_c_spec.rb
         | 
| 127 | 
            +
            - spec/spec_helper.rb
         |