brcobranca 3.2.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -0
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +7 -1
  5. data/Gemfile +13 -2
  6. data/Rakefile +2 -2
  7. data/brcobranca.gemspec +10 -17
  8. data/lib/brcobranca.rb +2 -5
  9. data/lib/brcobranca/arquivos/logos/bancobrasil.eps +0 -0
  10. data/lib/brcobranca/arquivos/logos/bradesco.eps +0 -0
  11. data/lib/brcobranca/arquivos/logos/caixa.eps +0 -0
  12. data/lib/brcobranca/arquivos/logos/hsbc.eps +0 -0
  13. data/lib/brcobranca/arquivos/logos/itau.eps +0 -0
  14. data/lib/brcobranca/arquivos/logos/santander.eps +0 -0
  15. data/lib/brcobranca/arquivos/logos/sicredi.eps +0 -0
  16. data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
  17. data/lib/brcobranca/boleto/banco_brasil.rb +27 -29
  18. data/lib/brcobranca/boleto/base.rb +29 -30
  19. data/lib/brcobranca/boleto/bradesco.rb +14 -15
  20. data/lib/brcobranca/boleto/caixa.rb +25 -23
  21. data/lib/brcobranca/boleto/hsbc.rb +30 -34
  22. data/lib/brcobranca/boleto/itau.rb +23 -25
  23. data/lib/brcobranca/boleto/santander.rb +17 -19
  24. data/lib/brcobranca/boleto/sicredi.rb +19 -19
  25. data/lib/brcobranca/boleto/template/base.rb +0 -2
  26. data/lib/brcobranca/boleto/template/rghost.rb +72 -74
  27. data/lib/brcobranca/boleto/template/rghost_carne.rb +105 -118
  28. data/lib/brcobranca/calculo.rb +22 -22
  29. data/lib/brcobranca/calculo_data.rb +8 -8
  30. data/lib/brcobranca/currency.rb +11 -11
  31. data/lib/brcobranca/formatacao.rb +16 -16
  32. data/lib/brcobranca/limpeza.rb +4 -4
  33. data/lib/brcobranca/retorno/base.rb +0 -1
  34. data/lib/brcobranca/retorno/retorno_cbr643.rb +35 -35
  35. data/lib/brcobranca/retorno/retorno_cnab240.rb +39 -40
  36. data/lib/brcobranca/retorno/retorno_cnab400.rb +21 -26
  37. data/lib/brcobranca/version.rb +2 -2
  38. data/spec/brcobranca/banco_bradesco_spec.rb +113 -113
  39. data/spec/brcobranca/banco_brasil_spec.rb +167 -167
  40. data/spec/brcobranca/banco_caixa_spec.rb +58 -58
  41. data/spec/brcobranca/banco_hsbc_spec.rb +117 -118
  42. data/spec/brcobranca/banco_sicredi_spec.rb +92 -93
  43. data/spec/brcobranca/base_spec.rb +78 -78
  44. data/spec/brcobranca/boletos_em_lote_spec.rb +22 -22
  45. data/spec/brcobranca/core_ext_spec.rb +134 -135
  46. data/spec/brcobranca/currency_spec.rb +59 -59
  47. data/spec/brcobranca/itau_spec.rb +137 -137
  48. data/spec/brcobranca/retorno_cbr643_spec.rb +32 -32
  49. data/spec/brcobranca/retorno_cnab400_spec.rb +40 -42
  50. data/spec/brcobranca/retorno_cnab_240_spec.rb +17 -19
  51. data/spec/brcobranca/rghost_spec.rb +21 -21
  52. data/spec/brcobranca/santander_spec.rb +80 -80
  53. data/spec/brcobranca_spec.rb +4 -4
  54. data/spec/spec_helper.rb +1 -1
  55. metadata +12 -54
  56. data/VERSION +0 -1
  57. data/lib/brcobranca/arquivos/logos/bancobrasil.jpg +0 -0
  58. data/lib/brcobranca/arquivos/logos/bradesco.jpg +0 -0
  59. data/lib/brcobranca/arquivos/logos/caixa.jpg +0 -0
  60. data/lib/brcobranca/arquivos/logos/hsbc.jpg +0 -0
  61. data/lib/brcobranca/arquivos/logos/itau.jpg +0 -0
  62. data/lib/brcobranca/arquivos/logos/santander.jpg +0 -0
  63. data/lib/brcobranca/arquivos/logos/sicredi.jpg +0 -0
@@ -8,12 +8,12 @@ module Brcobranca
8
8
  # @return [Integer]
9
9
  # @raise [ArgumentError] Caso não seja um número inteiro.
10
10
  def modulo10
11
- raise ArgumentError, "Número inválido" unless self.is_number?
11
+ fail ArgumentError, 'Número inválido' unless self.is_number?
12
12
 
13
13
  total = 0
14
14
  multiplicador = 2
15
15
 
16
- self.to_s.split(//).reverse!.each do |caracter|
16
+ to_s.split(//).reverse!.each do |caracter|
17
17
  total += (caracter.to_i * multiplicador).soma_digitos
18
18
  multiplicador = multiplicador == 2 ? 1 : 2
19
19
  end
@@ -26,44 +26,44 @@ module Brcobranca
26
26
  #
27
27
  # @return [Integer]
28
28
  def modulo11_9to2
29
- total = self.multiplicador([9,8,7,6,5,4,3,2])
29
+ total = multiplicador([9, 8, 7, 6, 5, 4, 3, 2])
30
30
 
31
- return (total % 11 )
31
+ (total % 11)
32
32
  end
33
33
 
34
34
  # Calcula módulo 11 com multiplicaroes de 2 a 9 segundo a BACEN.
35
35
  #
36
36
  # @return [Integer]
37
37
  def modulo11_2to9
38
- total = self.multiplicador([2,3,4,5,6,7,8,9])
38
+ total = multiplicador([2, 3, 4, 5, 6, 7, 8, 9])
39
39
 
40
40
  valor = (11 - (total % 11))
41
- return [0,10,11].include?(valor) ? 1 : valor
41
+ [0, 10, 11].include?(valor) ? 1 : valor
42
42
  end
43
-
43
+
44
44
  # Calcula módulo 11 com multiplicaroes de 2 a 9 (Utilizado pela CAIXA - boletos SIGCB).
45
45
  #
46
46
  # @return [Integer]
47
47
  def modulo11_2to9_caixa
48
- total = self.multiplicador([2,3,4,5,6,7,8,9])
48
+ total = multiplicador([2, 3, 4, 5, 6, 7, 8, 9])
49
49
  total = (total % 11) unless total < 11
50
50
  valor = (11 - total)
51
- return valor > 9 ? 0 : valor
51
+ valor > 9 ? 0 : valor
52
52
  end
53
53
 
54
54
  # Calcula módulo 11 com multiplicaroes de 9 a 2 trocando retorno <b>10 por X</b>.
55
55
  #
56
56
  # @return [Integer, String] Caso resultado for 10, retorna X.
57
57
  def modulo11_9to2_10_como_x
58
- valor = self.modulo11_9to2
59
- valor == 10 ? "X" : valor
58
+ valor = modulo11_9to2
59
+ valor == 10 ? 'X' : valor
60
60
  end
61
61
 
62
62
  # Calcula módulo 11 com multiplicaroes de 9 a 2 trocando retorno <b>10 por 0</b>.
63
63
  #
64
64
  # @return [Integer]
65
65
  def modulo11_9to2_10_como_zero
66
- valor = self.modulo11_9to2
66
+ valor = modulo11_9to2
67
67
  valor == 10 ? 0 : valor
68
68
  end
69
69
 
@@ -71,7 +71,7 @@ module Brcobranca
71
71
  #
72
72
  # @return [Boolean]
73
73
  def is_number?
74
- self.to_s.empty? ? false : (self.to_s =~ (/\D/)).nil?
74
+ to_s.empty? ? false : (to_s =~ (/\D/)).nil?
75
75
  end
76
76
 
77
77
  # Soma dígitos de números inteiros positivos com 2 dígitos ou mais.
@@ -82,13 +82,13 @@ module Brcobranca
82
82
  # 11 (1+1) #=> 2
83
83
  # 13 (1+3) #=> 4
84
84
  def soma_digitos
85
- total = case self.to_i
85
+ total = case to_i
86
86
  when (0..9)
87
87
  self
88
88
  else
89
- numero = self.to_s
89
+ numero = to_s
90
90
  total = 0
91
- 0.upto(numero.size-1) {|digito| total += numero[digito,1].to_i }
91
+ 0.upto(numero.size - 1) { |digito| total += numero[digito, 1].to_i }
92
92
  total
93
93
  end
94
94
  total.to_i
@@ -99,16 +99,16 @@ module Brcobranca
99
99
  # @param [Array]
100
100
  # @return [Integer]
101
101
  # @raise [ArgumentError] Caso não seja um número inteiro.
102
- def multiplicador(fatores, &block)
103
- raise ArgumentError, "Número inválido" unless self.is_number?
102
+ def multiplicador(fatores, &_block)
103
+ fail ArgumentError, 'Número inválido' unless self.is_number?
104
104
 
105
105
  total = 0
106
106
  multiplicador_posicao = 0
107
107
 
108
- self.to_s.split(//).reverse!.each do |caracter|
108
+ to_s.split(//).reverse!.each do |caracter|
109
109
  fator = fatores[multiplicador_posicao]
110
110
  total += if block_given?
111
- yield(caracter, fator)
111
+ yield(caracter, fator)
112
112
  else
113
113
  (caracter.to_i * fator)
114
114
  end
@@ -119,6 +119,6 @@ module Brcobranca
119
119
  end
120
120
  end
121
121
 
122
- [ String, Numeric ].each do |klass|
122
+ [String, Numeric].each do |klass|
123
123
  klass.class_eval { include Brcobranca::Calculo }
124
- end
124
+ end
@@ -8,8 +8,8 @@ module Brcobranca
8
8
  # @example
9
9
  # Date.parse(2000-07-04).fator_vencimento #=> 1001
10
10
  def fator_vencimento
11
- data_base = Date.parse "1997-10-07"
12
- Integer(self - data_base).to_s.rjust(4,'0')
11
+ data_base = Date.parse '1997-10-07'
12
+ Integer(self - data_base).to_s.rjust(4, '0')
13
13
  end
14
14
 
15
15
  # Mostra a data em formato <b>dia/mês/ano</b>
@@ -17,7 +17,7 @@ module Brcobranca
17
17
  # @example
18
18
  # Date.today.to_s_br #=> 20/01/2010
19
19
  def to_s_br
20
- self.strftime('%d/%m/%Y')
20
+ strftime('%d/%m/%Y')
21
21
  end
22
22
  # Calcula número de dias julianos.
23
23
  #
@@ -29,14 +29,14 @@ module Brcobranca
29
29
  # @example
30
30
  # Date.parse(2009-02-11).to_juliano #=> "0429"
31
31
  def to_juliano
32
- ultima_data = Date.parse("#{self.year - 1}-12-31")
33
- ultimo_digito_ano = self.to_s[3..3]
32
+ ultima_data = Date.parse("#{year - 1}-12-31")
33
+ ultimo_digito_ano = to_s[3..3]
34
34
  dias = Integer(self - ultima_data)
35
- (dias.to_s + ultimo_digito_ano).rjust(4,'0')
35
+ (dias.to_s + ultimo_digito_ano).rjust(4, '0')
36
36
  end
37
37
  end
38
38
  end
39
39
 
40
- [ Date ].each do |klass|
40
+ [Date].each do |klass|
41
41
  klass.class_eval { include Brcobranca::CalculoData }
42
- end
42
+ end
@@ -5,13 +5,13 @@ module Brcobranca #:nodoc:[all]
5
5
  module Currency #:nodoc:[all]
6
6
  # Implementação feita por Fernando Vieira do http://simplesideias.com.br
7
7
  # post http://simplesideias.com.br/usando-number_to_currency-em-modelos-no-rails
8
- BRL = {:delimiter => ".", :separator => ",", :unit => "R$", :precision => 2, :position => "before"}
9
- USD = {:delimiter => ',', :separator => ".", :unit => "US$", :precision => 2, :position => "before"}
10
- DEFAULT = BRL.merge(:unit => "")
8
+ BRL = { delimiter: '.', separator: ',', unit: 'R$', precision: 2, position: 'before' }
9
+ USD = { delimiter: ',', separator: '.', unit: 'US$', precision: 2, position: 'before' }
10
+ DEFAULT = BRL.merge(unit: '')
11
11
 
12
12
  module String #:nodoc:[all]
13
- def to_number(options={})
14
- return self.gsub(/,/, '.').to_f if self.numeric?
13
+ def to_number(_options = {})
14
+ return gsub(/,/, '.').to_f if self.numeric?
15
15
  nil
16
16
  end
17
17
 
@@ -28,19 +28,19 @@ module Brcobranca #:nodoc:[all]
28
28
  precision = options[:precision] || default[:precision]
29
29
  unit = options[:unit] || default[:unit]
30
30
  position = options[:position] || default[:position]
31
- separator = precision > 0 ? options[:separator] || default[:separator] : ""
31
+ separator = precision > 0 ? options[:separator] || default[:separator] : ''
32
32
  delimiter = options[:delimiter] || default[:delimiter]
33
33
 
34
34
  begin
35
35
  parts = number.with_precision(precision).split('.')
36
36
  number = parts[0].to_i.with_delimiter(delimiter) + separator + parts[1].to_s
37
- position == "before" ? unit + number : number + unit
37
+ position == 'before' ? unit + number : number + unit
38
38
  rescue
39
39
  number
40
40
  end
41
41
  end
42
42
 
43
- def with_delimiter(delimiter=",", separator=".")
43
+ def with_delimiter(delimiter = ',', separator = '.')
44
44
  number = self
45
45
  begin
46
46
  parts = number.to_s.split(separator)
@@ -51,7 +51,7 @@ module Brcobranca #:nodoc:[all]
51
51
  end
52
52
  end
53
53
 
54
- def with_precision(precision=3)
54
+ def with_precision(precision = 3)
55
55
  number = self
56
56
  "%01.#{precision}f" % number
57
57
  end
@@ -59,10 +59,10 @@ module Brcobranca #:nodoc:[all]
59
59
  end
60
60
  end
61
61
 
62
- [ Numeric, String].each do |klass|
62
+ [Numeric, String].each do |klass|
63
63
  klass.class_eval { include Brcobranca::Currency::Number }
64
64
  end
65
65
 
66
- [ String ].each do |klass|
66
+ [String].each do |klass|
67
67
  klass.class_eval { include Brcobranca::Currency::String }
68
68
  end
@@ -9,7 +9,7 @@ module Brcobranca
9
9
  # @example
10
10
  # "12345678901".to_br_cpf #=> 123.456.789-01
11
11
  def to_br_cpf
12
- somente_numeros.gsub(/^(.{3})(.{3})(.{3})(.{2})$/,'\1.\2.\3-\4')
12
+ somente_numeros.gsub(/^(.{3})(.{3})(.{3})(.{2})$/, '\1.\2.\3-\4')
13
13
  end
14
14
 
15
15
  # Formata como CEP
@@ -19,7 +19,7 @@ module Brcobranca
19
19
  # "85253100".to_br_cep #=> "85253-100"
20
20
  # 85253100.to_br_cep #=> "85253-100"
21
21
  def to_br_cep
22
- somente_numeros.gsub(/^(.{5})(.{3})$/,'\1-\2')
22
+ somente_numeros.gsub(/^(.{5})(.{3})$/, '\1-\2')
23
23
  end
24
24
 
25
25
  # Formata como CNPJ
@@ -28,7 +28,7 @@ module Brcobranca
28
28
  # @example
29
29
  # "12345678000901".to_br_cnpj #=> 12.345.678/0009-01
30
30
  def to_br_cnpj
31
- somente_numeros.gsub(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/,'\1.\2.\3/\4-\5')
31
+ somente_numeros.gsub(/^(.{2})(.{3})(.{3})(.{4})(.{2})$/, '\1.\2.\3/\4-\5')
32
32
  end
33
33
 
34
34
  # Gera formatação automática do documento baseado no tamanho do campo.
@@ -55,7 +55,7 @@ module Brcobranca
55
55
  # @example
56
56
  # 1a23e45+".somente_numeros #=> 12345
57
57
  def somente_numeros
58
- to_s.gsub(/\D/,'')
58
+ to_s.gsub(/\D/, '')
59
59
  end
60
60
 
61
61
  # Monta a linha digitável padrão para todos os bancos segundo a BACEN.
@@ -80,23 +80,23 @@ module Brcobranca
80
80
  # "00192376900000135000000001238798777770016818".linha_digitavel #=> "00190.00009 01238.798779 77700.168188 2 37690000013500"
81
81
  def linha_digitavel
82
82
  if self =~ /^(\d{4})(\d{1})(\d{14})(\d{5})(\d{10})(\d{10})$/
83
- linha = $1
84
- linha << $4
83
+ linha = Regexp.last_match[1]
84
+ linha << Regexp.last_match[4]
85
85
  linha << linha.modulo10.to_s
86
- linha << $5
87
- linha << $5.modulo10.to_s
88
- linha << $6
89
- linha << $6.modulo10.to_s
90
- linha << $2
91
- linha << $3
92
- linha.gsub(/^(.{5})(.{5})(.{5})(.{6})(.{5})(.{6})(.{1})(.{14})$/,'\1.\2 \3.\4 \5.\6 \7 \8')
86
+ linha << Regexp.last_match[5]
87
+ linha << Regexp.last_match[5].modulo10.to_s
88
+ linha << Regexp.last_match[6]
89
+ linha << Regexp.last_match[6].modulo10.to_s
90
+ linha << Regexp.last_match[2]
91
+ linha << Regexp.last_match[3]
92
+ linha.gsub(/^(.{5})(.{5})(.{5})(.{6})(.{5})(.{6})(.{1})(.{14})$/, '\1.\2 \3.\4 \5.\6 \7 \8')
93
93
  else
94
- raise ArgumentError, "#{self} Precisa conter 44 caracteres numéricos."
94
+ fail ArgumentError, "#{self} Precisa conter 44 caracteres numéricos."
95
95
  end
96
96
  end
97
97
  end
98
98
  end
99
99
 
100
- [ String, Numeric ].each do |klass|
100
+ [String, Numeric].each do |klass|
101
101
  klass.class_eval { include Brcobranca::Formatacao }
102
- end
102
+ end
@@ -8,12 +8,12 @@ module Brcobranca
8
8
  # 1.9 #=> 190
9
9
  # 1.93 #=> 193
10
10
  def limpa_valor_moeda
11
- inicio, fim = self.to_s.split(/\./)
12
- (inicio + fim.ljust(2,'0'))
11
+ inicio, fim = to_s.split(/\./)
12
+ (inicio + fim.ljust(2, '0'))
13
13
  end
14
14
  end
15
15
  end
16
16
 
17
- [ Float, String ].each do |klass|
17
+ [Float, String].each do |klass|
18
18
  klass.class_eval { include Brcobranca::Limpeza }
19
- end
19
+ end
@@ -41,4 +41,3 @@ module Brcobranca
41
41
  end
42
42
  end
43
43
  end
44
-
@@ -8,41 +8,41 @@ module Brcobranca
8
8
  extend ParseLine::FixedWidth # Extendendo parseline
9
9
 
10
10
  fixed_width_layout do |parse|
11
- parse.field :agencia_com_dv,17..21
12
- parse.field :cedente_com_dv,22..30
13
- parse.field :convenio,31..37
14
- parse.field :nosso_numero,63..79
15
- parse.field :tipo_cobranca,80..80
16
- parse.field :tipo_cobranca_anterior,81..81
17
- parse.field :natureza_recebimento,86..87
18
- parse.field :carteira_variacao,91..93
19
- parse.field :desconto,95..99
20
- parse.field :iof,100..104
21
- parse.field :carteira,106..107
22
- parse.field :comando,108..109
23
- parse.field :data_liquidacao,110..115
24
- parse.field :data_vencimento,146..151
25
- parse.field :valor_titulo,152..164
26
- parse.field :banco_recebedor,165..167
27
- parse.field :agencia_recebedora_com_dv,168..172
28
- parse.field :especie_documento,173..174
29
- parse.field :data_credito,175..180
30
- parse.field :valor_tarifa,181..187
31
- parse.field :outras_despesas,188..200
32
- parse.field :juros_desconto,201..213
33
- parse.field :iof_desconto,214..226
34
- parse.field :valor_abatimento,227..239
35
- parse.field :desconto_concedito,240..252
36
- parse.field :valor_recebido,253..265
37
- parse.field :juros_mora,266..278
38
- parse.field :outros_recebimento,279..291
39
- parse.field :abatimento_nao_aproveitado,292..304
40
- parse.field :valor_lancamento,305..317
41
- parse.field :indicativo_lancamento,318..318
42
- parse.field :indicador_valor,319..319
43
- parse.field :valor_ajuste,320..331
44
- parse.field :sequencial,394..399
11
+ parse.field :agencia_com_dv, 17..21
12
+ parse.field :cedente_com_dv, 22..30
13
+ parse.field :convenio, 31..37
14
+ parse.field :nosso_numero, 63..79
15
+ parse.field :tipo_cobranca, 80..80
16
+ parse.field :tipo_cobranca_anterior, 81..81
17
+ parse.field :natureza_recebimento, 86..87
18
+ parse.field :carteira_variacao, 91..93
19
+ parse.field :desconto, 95..99
20
+ parse.field :iof, 100..104
21
+ parse.field :carteira, 106..107
22
+ parse.field :comando, 108..109
23
+ parse.field :data_liquidacao, 110..115
24
+ parse.field :data_vencimento, 146..151
25
+ parse.field :valor_titulo, 152..164
26
+ parse.field :banco_recebedor, 165..167
27
+ parse.field :agencia_recebedora_com_dv, 168..172
28
+ parse.field :especie_documento, 173..174
29
+ parse.field :data_credito, 175..180
30
+ parse.field :valor_tarifa, 181..187
31
+ parse.field :outras_despesas, 188..200
32
+ parse.field :juros_desconto, 201..213
33
+ parse.field :iof_desconto, 214..226
34
+ parse.field :valor_abatimento, 227..239
35
+ parse.field :desconto_concedito, 240..252
36
+ parse.field :valor_recebido, 253..265
37
+ parse.field :juros_mora, 266..278
38
+ parse.field :outros_recebimento, 279..291
39
+ parse.field :abatimento_nao_aproveitado, 292..304
40
+ parse.field :valor_lancamento, 305..317
41
+ parse.field :indicativo_lancamento, 318..318
42
+ parse.field :indicador_valor, 319..319
43
+ parse.field :valor_ajuste, 320..331
44
+ parse.field :sequencial, 394..399
45
45
  end
46
46
  end
47
47
  end
48
- end
48
+ end
@@ -8,17 +8,17 @@ module Brcobranca
8
8
  # Regex para remoção de headers e trailers além de registros diferentes de T ou U
9
9
  REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U = /^((?!^.{7}3.{5}[T|U].*$).)*$/
10
10
 
11
- def self.load_lines(file, options={})
12
- default_options = {:except => REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U}
11
+ def self.load_lines(file, options = {})
12
+ default_options = { except: REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U }
13
13
  options = default_options.merge!(options)
14
14
 
15
- Line.load_lines(file, options).each_slice(2).inject([]) do |retornos, cnab_lines|
15
+ Line.load_lines(file, options).each_slice(2).reduce([]) do |retornos, cnab_lines|
16
16
  retornos << generate_retorno_based_on_cnab_lines(cnab_lines)
17
17
  end
18
18
  end
19
19
 
20
20
  def self.generate_retorno_based_on_cnab_lines(cnab_lines)
21
- retorno = self.new
21
+ retorno = new
22
22
  cnab_lines.each do |line|
23
23
  if line.tipo_registro == 'T'
24
24
  Line::REGISTRO_T_FIELDS.each do |attr|
@@ -47,46 +47,45 @@ module Brcobranca
47
47
 
48
48
  fixed_width_layout do |parse|
49
49
  parse.field :tipo_registro, 13..13
50
- parse.field :sequencial,8..12
51
- parse.field :agencia_com_dv,17..22
52
- parse.field :cedente_com_dv,23..35
53
- parse.field :nosso_numero,46..56
54
- parse.field :carteira,57..57
55
- parse.field :data_vencimento,73..80
56
- parse.field :valor_titulo,81..95
57
- parse.field :banco_recebedor,96..98
58
- parse.field :agencia_recebedora_com_dv,99..104
59
- parse.field :data_credito,145..152
60
- parse.field :outras_despesas,107..121
61
- parse.field :iof_desconto,62..76
62
- parse.field :valor_abatimento,47..61
63
- parse.field :desconto_concedito,32..46
64
- parse.field :valor_recebido,77..91
65
- parse.field :juros_mora,17..31
66
- parse.field :outros_recebimento,122..136
67
- parse.field :valor_tarifa,198..212
50
+ parse.field :sequencial, 8..12
51
+ parse.field :agencia_com_dv, 17..22
52
+ parse.field :cedente_com_dv, 23..35
53
+ parse.field :nosso_numero, 46..56
54
+ parse.field :carteira, 57..57
55
+ parse.field :data_vencimento, 73..80
56
+ parse.field :valor_titulo, 81..95
57
+ parse.field :banco_recebedor, 96..98
58
+ parse.field :agencia_recebedora_com_dv, 99..104
59
+ parse.field :data_credito, 145..152
60
+ parse.field :outras_despesas, 107..121
61
+ parse.field :iof_desconto, 62..76
62
+ parse.field :valor_abatimento, 47..61
63
+ parse.field :desconto_concedito, 32..46
64
+ parse.field :valor_recebido, 77..91
65
+ parse.field :juros_mora, 17..31
66
+ parse.field :outros_recebimento, 122..136
67
+ parse.field :valor_tarifa, 198..212
68
68
 
69
69
  # Dados que não consegui extrair dos registros T e U
70
- #parse.field :convenio,31..37
71
- #parse.field :tipo_cobranca,80..80
72
- #parse.field :tipo_cobranca_anterior,81..81
73
- #parse.field :natureza_recebimento,86..87
74
- #parse.field :carteira_variacao,91..93
75
- #parse.field :desconto,95..99
76
- #parse.field :iof,100..104
77
- #parse.field :comando,108..109
78
- #parse.field :data_liquidacao,110..115
79
- #parse.field :especie_documento,173..174
80
- #parse.field :valor_tarifa,181..187
81
- #parse.field :juros_desconto,201..213
82
- #parse.field :abatimento_nao_aproveitado,292..304
83
- #parse.field :valor_lancamento,305..317
84
- #parse.field :indicativo_lancamento,318..318
85
- #parse.field :indicador_valor,319..319
86
- #parse.field :valor_ajuste,320..331
70
+ # parse.field :convenio,31..37
71
+ # parse.field :tipo_cobranca,80..80
72
+ # parse.field :tipo_cobranca_anterior,81..81
73
+ # parse.field :natureza_recebimento,86..87
74
+ # parse.field :carteira_variacao,91..93
75
+ # parse.field :desconto,95..99
76
+ # parse.field :iof,100..104
77
+ # parse.field :comando,108..109
78
+ # parse.field :data_liquidacao,110..115
79
+ # parse.field :especie_documento,173..174
80
+ # parse.field :valor_tarifa,181..187
81
+ # parse.field :juros_desconto,201..213
82
+ # parse.field :abatimento_nao_aproveitado,292..304
83
+ # parse.field :valor_lancamento,305..317
84
+ # parse.field :indicativo_lancamento,318..318
85
+ # parse.field :indicador_valor,319..319
86
+ # parse.field :valor_ajuste,320..331
87
87
  end
88
88
  end
89
89
  end
90
90
  end
91
91
  end
92
-