brcobranca 9.2.4 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -9
  3. data/HISTORY.md +71 -0
  4. data/README.md +47 -54
  5. data/Rakefile +4 -4
  6. data/lib/brcobranca/arquivos/logos/ailos.eps +412 -0
  7. data/lib/brcobranca/arquivos/logos/ailos_carne.eps +412 -0
  8. data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
  9. data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
  10. data/lib/brcobranca/boleto/{cecred.rb → ailos.rb} +7 -5
  11. data/lib/brcobranca/boleto/banco_brasil.rb +9 -5
  12. data/lib/brcobranca/boleto/banco_brasilia.rb +5 -5
  13. data/lib/brcobranca/boleto/banco_nordeste.rb +4 -3
  14. data/lib/brcobranca/boleto/banestes.rb +4 -3
  15. data/lib/brcobranca/boleto/banrisul.rb +4 -3
  16. data/lib/brcobranca/boleto/base.rb +12 -7
  17. data/lib/brcobranca/boleto/bradesco.rb +4 -3
  18. data/lib/brcobranca/boleto/caixa.rb +10 -8
  19. data/lib/brcobranca/boleto/citibank.rb +9 -8
  20. data/lib/brcobranca/boleto/credisis.rb +6 -4
  21. data/lib/brcobranca/boleto/hsbc.rb +8 -6
  22. data/lib/brcobranca/boleto/itau.rb +5 -5
  23. data/lib/brcobranca/boleto/safra.rb +4 -4
  24. data/lib/brcobranca/boleto/santander.rb +4 -2
  25. data/lib/brcobranca/boleto/sicoob.rb +4 -3
  26. data/lib/brcobranca/boleto/sicredi.rb +6 -3
  27. data/lib/brcobranca/boleto/template/base.rb +2 -3
  28. data/lib/brcobranca/boleto/template/rghost.rb +18 -13
  29. data/lib/brcobranca/boleto/template/rghost_carne.rb +18 -12
  30. data/lib/brcobranca/boleto/unicred.rb +61 -103
  31. data/lib/brcobranca/calculo.rb +14 -9
  32. data/lib/brcobranca/calculo_data.rb +6 -5
  33. data/lib/brcobranca/currency.rb +10 -10
  34. data/lib/brcobranca/formatacao.rb +2 -1
  35. data/lib/brcobranca/formatacao_string.rb +7 -6
  36. data/lib/brcobranca/limpeza.rb +3 -3
  37. data/lib/brcobranca/remessa/base.rb +7 -10
  38. data/lib/brcobranca/remessa/cnab240/{cecred.rb → ailos.rb} +18 -15
  39. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +14 -11
  40. data/lib/brcobranca/remessa/cnab240/base.rb +56 -39
  41. data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +25 -17
  42. data/lib/brcobranca/remessa/cnab240/caixa.rb +21 -13
  43. data/lib/brcobranca/remessa/cnab240/sicoob.rb +33 -30
  44. data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +14 -7
  45. data/lib/brcobranca/remessa/cnab240/sicredi.rb +28 -22
  46. data/lib/brcobranca/remessa/cnab240/unicred.rb +2 -1
  47. data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +9 -9
  48. data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +29 -28
  49. data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +11 -10
  50. data/lib/brcobranca/remessa/cnab400/banrisul.rb +13 -10
  51. data/lib/brcobranca/remessa/cnab400/base.rb +22 -9
  52. data/lib/brcobranca/remessa/cnab400/bradesco.rb +30 -5
  53. data/lib/brcobranca/remessa/cnab400/citibank.rb +6 -5
  54. data/lib/brcobranca/remessa/cnab400/credisis.rb +7 -5
  55. data/lib/brcobranca/remessa/cnab400/itau.rb +9 -6
  56. data/lib/brcobranca/remessa/cnab400/santander.rb +17 -15
  57. data/lib/brcobranca/remessa/cnab400/sicoob.rb +8 -11
  58. data/lib/brcobranca/remessa/cnab400/unicred.rb +185 -69
  59. data/lib/brcobranca/remessa/pagamento.rb +43 -11
  60. data/lib/brcobranca/retorno/base.rb +5 -43
  61. data/lib/brcobranca/retorno/cnab240/{cecred.rb → ailos.rb} +12 -10
  62. data/lib/brcobranca/retorno/cnab240/base.rb +8 -9
  63. data/lib/brcobranca/retorno/cnab240/caixa.rb +4 -5
  64. data/lib/brcobranca/retorno/cnab240/santander.rb +12 -8
  65. data/lib/brcobranca/retorno/cnab240/sicoob.rb +11 -9
  66. data/lib/brcobranca/retorno/cnab240/sicredi.rb +12 -9
  67. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +3 -3
  68. data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +2 -1
  69. data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +2 -1
  70. data/lib/brcobranca/retorno/cnab400/banrisul.rb +1 -1
  71. data/lib/brcobranca/retorno/cnab400/base.rb +13 -12
  72. data/lib/brcobranca/retorno/cnab400/bradesco.rb +4 -4
  73. data/lib/brcobranca/retorno/cnab400/credisis.rb +2 -1
  74. data/lib/brcobranca/retorno/cnab400/itau.rb +6 -5
  75. data/lib/brcobranca/retorno/cnab400/santander.rb +8 -7
  76. data/lib/brcobranca/retorno/cnab400/unicred.rb +63 -58
  77. data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -2
  78. data/lib/brcobranca/retorno/retorno_cnab240.rb +11 -9
  79. data/lib/brcobranca/retorno/retorno_cnab400.rb +6 -5
  80. data/lib/brcobranca/util/date.rb +2 -1
  81. data/lib/brcobranca/util/empresa.rb +2 -1
  82. data/lib/brcobranca/util/errors.rb +31 -31
  83. data/lib/brcobranca/validations.rb +127 -151
  84. data/lib/brcobranca/version.rb +2 -3
  85. data/lib/brcobranca.rb +5 -5
  86. data/spec/brcobranca/base_spec.rb +20 -11
  87. data/spec/brcobranca/boleto/{cecred_spec.rb → ailos_spec.rb} +13 -12
  88. data/spec/brcobranca/boleto/banco_brasil_spec.rb +14 -12
  89. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +11 -10
  90. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +2 -3
  91. data/spec/brcobranca/boleto/banestes_spec.rb +10 -11
  92. data/spec/brcobranca/boleto/banrisul_spec.rb +10 -12
  93. data/spec/brcobranca/boleto/bradesco_spec.rb +36 -33
  94. data/spec/brcobranca/boleto/caixa_spec.rb +11 -12
  95. data/spec/brcobranca/boleto/citibank_spec.rb +10 -11
  96. data/spec/brcobranca/boleto/credisis_spec.rb +18 -17
  97. data/spec/brcobranca/boleto/hsbc_spec.rb +9 -10
  98. data/spec/brcobranca/boleto/itau_spec.rb +11 -12
  99. data/spec/brcobranca/boleto/safra_spec.rb +10 -11
  100. data/spec/brcobranca/boleto/santander_spec.rb +9 -10
  101. data/spec/brcobranca/boleto/sicoob_spec.rb +10 -11
  102. data/spec/brcobranca/boleto/sicredi_spec.rb +14 -10
  103. data/spec/brcobranca/boleto/unicred_spec.rb +28 -38
  104. data/spec/brcobranca/boletos_em_lote_spec.rb +7 -7
  105. data/spec/brcobranca/calculo_data_spec.rb +2 -2
  106. data/spec/brcobranca/calculo_spec.rb +13 -11
  107. data/spec/brcobranca/currency_spec.rb +26 -26
  108. data/spec/brcobranca/formatacao_spec.rb +2 -2
  109. data/spec/brcobranca/formatacao_string_spec.rb +10 -4
  110. data/spec/brcobranca/limpeza_spec.rb +2 -2
  111. data/spec/brcobranca/remessa/base_spec.rb +1 -2
  112. data/spec/brcobranca/remessa/cnab240/{cecred_spec.rb → ailos_spec.rb} +48 -47
  113. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +18 -13
  114. data/spec/brcobranca/remessa/cnab240/base_spec.rb +33 -10
  115. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +19 -17
  116. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +12 -8
  117. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +28 -26
  118. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +12 -10
  119. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +11 -9
  120. data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +6 -3
  121. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +24 -19
  122. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +19 -14
  123. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +17 -15
  124. data/spec/brcobranca/remessa/cnab400/base_spec.rb +23 -8
  125. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +19 -17
  126. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +14 -12
  127. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +21 -19
  128. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +18 -16
  129. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +24 -22
  130. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +20 -20
  131. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +167 -166
  132. data/spec/brcobranca/remessa/pagamento_spec.rb +16 -15
  133. data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
  134. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +4 -2
  135. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +2 -0
  136. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +2 -0
  137. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +2 -0
  138. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +2 -1
  139. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +2 -1
  140. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +2 -1
  141. data/spec/brcobranca/retorno/cnab400/base_spec.rb +25 -25
  142. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +2 -1
  143. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +5 -4
  144. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -2
  145. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +2 -1
  146. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +28 -32
  147. data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +2 -2
  148. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +2 -1
  149. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +2 -1
  150. data/spec/brcobranca/rghost_spec.rb +4 -4
  151. data/spec/brcobranca/util/empresa_spec.rb +1 -2
  152. data/spec/brcobranca_spec.rb +1 -2
  153. metadata +85 -162
  154. data/spec/arquivos/CBR64310.RET +0 -28
  155. data/spec/arquivos/CNAB240.RET +0 -74
  156. data/spec/arquivos/CNAB240CECRED.RET +0 -10
  157. data/spec/arquivos/CNAB240SANTANDER.RET +0 -8
  158. data/spec/arquivos/CNAB240SICOOB.RET +0 -10
  159. data/spec/arquivos/CNAB240SICREDI.CRT +0 -8
  160. data/spec/arquivos/CNAB400.RET +0 -54
  161. data/spec/arquivos/CNAB400BANCOBRASILIA.RET +0 -3
  162. data/spec/arquivos/CNAB400BANCONORDESTE.RET +0 -3
  163. data/spec/arquivos/CNAB400BANRISUL.RET +0 -3
  164. data/spec/arquivos/CNAB400BRADESCO.RET +0 -8
  165. data/spec/arquivos/CNAB400CREDISIS.RET +0 -3
  166. data/spec/arquivos/CNAB400ITAU.RET +0 -54
  167. data/spec/arquivos/CNAB400SANTANDER.RET +0 -54
  168. data/spec/arquivos/CNAB400UNICRED.RET +0 -3
  169. data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +0 -3
  170. data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +0 -3
  171. data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +0 -3
  172. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +0 -7
  173. data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +0 -7
  174. data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +0 -3
  175. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +0 -3
  176. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +0 -7
  177. data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +0 -7
  178. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +0 -3
  179. data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +0 -3
  180. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +0 -4
  181. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +0 -3
  182. data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +0 -3
  183. data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +0 -4
  184. data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +0 -7
  185. data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +0 -7
  186. data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +0 -3
  187. data/spec/spec.opts +0 -8
  188. data/spec/spec_helper.rb +0 -38
  189. data/spec/support/remessa_helpers.rb +0 -13
  190. data/spec/support/shared_examples/busca_logotipo.rb +0 -15
  191. data/spec/support/shared_examples/cnab240.rb +0 -259
  192. data/spec/support/shared_examples/cnab400.rb +0 -180
  193. data/spec/support/shared_examples/formatos_validos.rb +0 -36
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  #
3
4
  #
4
5
  # A Caixa tem dois padrões para a geração de boleto: SIGCB e SICOB.
@@ -7,7 +8,8 @@
7
8
  #
8
9
  module Brcobranca
9
10
  module Boleto
10
- class Caixa < Base # Caixa
11
+ # Caixa
12
+ class Caixa < Base
11
13
  # <b>REQUERIDO</b>: Emissão do boleto
12
14
  attr_accessor :emissao
13
15
 
@@ -103,12 +105,12 @@ module Brcobranca
103
105
  # @return [String]
104
106
  def codigo_barras_segunda_parte
105
107
  campo_livre = "#{convenio}" \
106
- "#{convenio_dv}" \
107
- "#{nosso_numero_boleto[2..4]}" \
108
- "#{nosso_numero_boleto[0..0]}" \
109
- "#{nosso_numero_boleto[5..7]}" \
110
- "#{nosso_numero_boleto[1..1]}" \
111
- "#{nosso_numero_boleto[8..16]}"
108
+ "#{convenio_dv}" \
109
+ "#{nosso_numero_boleto[2..4]}" \
110
+ "#{nosso_numero_boleto[0..0]}" \
111
+ "#{nosso_numero_boleto[5..7]}" \
112
+ "#{nosso_numero_boleto[1..1]}" \
113
+ "#{nosso_numero_boleto[8..16]}"
112
114
 
113
115
  campo_livre.to_s +
114
116
  campo_livre.modulo11(
@@ -1,20 +1,21 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Citibank < Base # Citibank
5
+ # Citibank
6
+ class Citibank < Base
6
7
  # <b>REQUERIDO</b>: Portfolio
7
8
  attr_accessor :portfolio
8
9
 
9
- validates_length_of :convenio, is: 10, message: 'deve possuir 10 dígitos.' #Conta cosmos
10
+ validates_length_of :convenio, is: 10, message: 'deve possuir 10 dígitos.' # Conta cosmos
10
11
  validates_length_of :nosso_numero, is: 11, message: 'deve possuir 11 dígitos.'
11
- validates_length_of :portfolio, is: 3, message: 'deve possuir 3 dígitos.' #Portfolio
12
+ validates_length_of :portfolio, is: 3, message: 'deve possuir 3 dígitos.' # Portfolio
12
13
 
13
14
  # @param (see Brcobranca::Boleto::Base#initialize)
14
15
  def initialize(campos = {})
15
16
  campos = {
16
17
  carteira: '3',
17
- carteira_label: '3',
18
+ carteira_label: '3'
18
19
  }.merge!(campos)
19
20
  super(campos)
20
21
  end
@@ -58,7 +59,7 @@ module Brcobranca
58
59
  # Utiliza-se o [-1..-1] para retornar o último caracter
59
60
  # @return [String]
60
61
  def nosso_numero_dv
61
- "#{nosso_numero}".modulo11(
62
+ nosso_numero.to_s.modulo11(
62
63
  multiplicador: (2..9).to_a,
63
64
  mapeamento: { 10 => 0, 11 => 0 }
64
65
  ) { |total| 11 - (total % 11) }.to_s
@@ -86,7 +87,7 @@ module Brcobranca
86
87
  # 123456 - Base (Posição 24 a 29)
87
88
  # 78 - Sequência (Posição 30 a 31)
88
89
  # 9 - Dígito Verificador (Posição 32
89
- #
90
+ #
90
91
  # @return [String]
91
92
  def codigo_barras_segunda_parte
92
93
  "#{carteira}#{portfolio}#{convenio[1..-1]}#{nosso_numero}#{nosso_numero_dv}"
@@ -1,7 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Boleto
4
- class Credisis < Base # CrediSIS
5
+ # CrediSIS
6
+ class Credisis < Base
5
7
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
6
8
  validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
7
9
  validates_length_of :carteira, is: 2, message: 'deve ser menor ou igual a 2 dígitos.'
@@ -84,7 +86,7 @@ module Brcobranca
84
86
  "#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
85
87
  end
86
88
 
87
- #X – Módulo 11 do CPF/CNPJ (incluindo dígitos verificadores) do Beneficiário emissor
89
+ # X – Módulo 11 do CPF/CNPJ (incluindo dígitos verificadores) do Beneficiário emissor
88
90
  # Obs.: Caso for CPF, utilizar 9 como limitador da multiplicação.
89
91
  # Caso for CNPJ, utilizar 8 no limitador da multiplicação.
90
92
  def documento_cedente_dv
@@ -95,7 +97,7 @@ module Brcobranca
95
97
 
96
98
  # Segunda parte do código de barras.
97
99
  # @return [String] 25 caracteres numéricos.
98
- #1. - Número do Banco: “097”
100
+ # 1. - Número do Banco: “097”
99
101
  # 2. - Moeda: “9”
100
102
  # 3. - DV do Código de Barras, Baseado no Módulo 11 (Vide Anexo X).
101
103
  # 4. - Fator de Vencimento do Boleto (Vide Anexo VII).
@@ -1,9 +1,10 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Hsbc < Base # Banco HSBC
6
- validates_inclusion_of :carteira, in: %w(CNR CSB), message: 'não existente para este banco.'
5
+ # Banco HSBC
6
+ class Hsbc < Base
7
+ validates_inclusion_of :carteira, in: %w[CNR CSB], message: 'não existente para este banco.'
7
8
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
8
9
  validates_length_of :nosso_numero, maximum: 13, message: 'deve ser menor ou igual a 13 dígitos.'
9
10
  validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
@@ -34,7 +35,7 @@ module Brcobranca
34
35
  # boleto.nosso_numero_boleto #=> "0000000004042847"
35
36
  def nosso_numero_boleto
36
37
  case carteira
37
- when 'CNR' then
38
+ when 'CNR'
38
39
  if data_vencimento.is_a?(Date)
39
40
  self.codigo_servico = '4'
40
41
  dia = data_vencimento.day.to_s.rjust(2, '0')
@@ -53,7 +54,7 @@ module Brcobranca
53
54
  @nosso_numero
54
55
  else
55
56
  raise Brcobranca::NaoImplementado, 'Tipo de carteira não implementado.'
56
- # TODO - Verificar outras carteiras.
57
+ # TODO: - Verificar outras carteiras.
57
58
  # self.codigo_servico = "5"
58
59
  # parte_1 = "#{self.nosso_numero}#{self.nosso_numero.modulo11(mapeamento: { 10 => 0 })}#{self.codigo_servico}"
59
60
  # soma = parte_1.to_i + self.conta_corrente.to_i
@@ -84,6 +85,7 @@ module Brcobranca
84
85
  "#{conta_corrente}#{nosso_numero}#{dias_julianos}2"
85
86
  when 'CSB'
86
87
  raise Brcobranca::NaoImplementado, 'Nosso número não definido.' unless @nosso_numero
88
+
87
89
  "#{nosso_numero}#{agencia}#{conta_corrente}001"
88
90
  else
89
91
  raise Brcobranca::NaoImplementado, 'Tipo de carteira não implementado.'
@@ -1,9 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Brcobranca
5
4
  module Boleto
6
- class Itau < Base # Banco Itaú
5
+ # Banco Itaú
6
+ class Itau < Base
7
7
  # Usado somente em carteiras especiais com registro para complementar o número do cocumento
8
8
  attr_reader :seu_numero
9
9
 
@@ -53,7 +53,7 @@ module Brcobranca
53
53
  end
54
54
 
55
55
  def usa_seu_numero?
56
- %w(198 106 107 122 142 143 195 196).include?(carteira.to_s)
56
+ %w[198 106 107 122 142 143 195 196].include?(carteira.to_s)
57
57
  end
58
58
 
59
59
  # Dígito verificador do nosso número.
@@ -65,7 +65,7 @@ module Brcobranca
65
65
  #
66
66
  # @return [String] 1 caracteres numéricos.
67
67
  def nosso_numero_dv
68
- if %w(112 126 131 146 150 168).include?(carteira)
68
+ if %w[112 126 131 146 150 168].include?(carteira)
69
69
  "#{carteira}#{nosso_numero}".modulo10
70
70
  else
71
71
  "#{agencia}#{conta_corrente}#{carteira}#{nosso_numero}".modulo10
@@ -1,14 +1,14 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Brcobranca
5
4
  module Boleto
6
- class Safra < Base # Banco Safra
5
+ # Banco Safra
6
+ class Safra < Base
7
7
  # <b>REQUERIDO</b>: Dígito da Agência
8
8
  attr_accessor :agencia_dv
9
9
  # <b>REQUERIDO</b>: Dígito da conta
10
10
  attr_accessor :conta_corrente_dv
11
-
11
+
12
12
  validates_presence_of :agencia_dv, :conta_corrente_dv, message: 'não pode estar em branco.'
13
13
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
14
14
  validates_length_of :nosso_numero, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
@@ -1,10 +1,12 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  #
3
4
  # @author Kivanio Barbosa
4
5
  # @author Ronaldo Araujo
5
6
  module Brcobranca
6
7
  module Boleto
7
- class Santander < Base # Banco Santander
8
+ # Banco Santander
9
+ class Santander < Base
8
10
  validates_presence_of :convenio, message: 'não pode estar em branco.'
9
11
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
10
12
  validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Sicoob < Base # Sicoob (Bancoob)
5
+ # Sicoob (Bancoob)
6
+ class Sicoob < Base
6
7
  validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
7
8
  validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
8
9
  validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  #
3
4
  #
4
5
  # Sicredi
@@ -6,7 +7,8 @@
6
7
  #
7
8
  module Brcobranca
8
9
  module Boleto
9
- class Sicredi < Base # Banco SICREDI
10
+ # Banco SICREDI
11
+ class Sicredi < Base
10
12
  # <b>REQUERIDO</b>: Código do posto da cooperativa de crédito
11
13
  attr_accessor :posto
12
14
 
@@ -22,7 +24,8 @@ module Brcobranca
22
24
  # Obs.: O SICREDI não validará este campo.
23
25
  validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
24
26
  validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
25
- validates_length_of :byte_idt, is: 1, message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
27
+ validates_length_of :byte_idt, is: 1,
28
+ message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
26
29
  validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
27
30
 
28
31
  # Nova instancia do Bradesco
@@ -1,11 +1,10 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Brcobranca
5
4
  module Boleto
6
5
  module Template
7
6
  module Base
8
- extend self
7
+ module_function
9
8
 
10
9
  def define_template(template)
11
10
  case template
@@ -1,4 +1,4 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
3
  begin
4
4
  require 'rghost'
@@ -24,6 +24,7 @@ module Brcobranca
24
24
  extend self
25
25
  include RGhost unless include?(RGhost)
26
26
  RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
27
+ RGhost::Config::GS[:default_params] << '-dNOSAFER'
27
28
 
28
29
  # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
29
30
  #
@@ -79,7 +80,9 @@ module Brcobranca
79
80
  modelo_generico_rodape(doc, boleto)
80
81
 
81
82
  # Gerando codigo de barra com rghost_barcode
82
- doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm") if boleto.codigo_barras
83
+ if boleto.codigo_barras
84
+ doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm")
85
+ end
83
86
 
84
87
  # Gerando stream
85
88
  formato = (options.delete(:formato) || Brcobranca.configuration.formato)
@@ -107,7 +110,9 @@ module Brcobranca
107
110
  modelo_generico_rodape(doc, boleto)
108
111
 
109
112
  # Gerando codigo de barra com rghost_barcode
110
- doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm") if boleto.codigo_barras
113
+ if boleto.codigo_barras
114
+ doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm")
115
+ end
111
116
 
112
117
  # Cria nova página se não for o último boleto
113
118
  doc.next_page unless index == boletos.length - 1
@@ -134,6 +139,7 @@ module Brcobranca
134
139
  @y += y
135
140
  doc.moveto x: "#{@x} cm", y: "#{@y} cm"
136
141
  end
142
+
137
143
  # Monta o cabeçalho do layout do boleto
138
144
  def modelo_generico_cabecalho(doc, boleto)
139
145
  # INICIO Primeira parte do BOLETO
@@ -171,7 +177,7 @@ module Brcobranca
171
177
  doc.show boleto.quantidade
172
178
 
173
179
  move_more(doc, 2, 0)
174
- doc.show "#{boleto.documento_cedente.formata_documento}"
180
+ doc.show boleto.documento_cedente.formata_documento.to_s
175
181
 
176
182
  move_more(doc, 3.8, 0)
177
183
  doc.show boleto.data_vencimento.to_s_br
@@ -183,7 +189,7 @@ module Brcobranca
183
189
  doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
184
190
 
185
191
  move_more(doc, 0, -0.3)
186
- doc.show "#{boleto.sacado_endereco}"
192
+ doc.show boleto.sacado_endereco.to_s
187
193
  if boleto.demonstrativo
188
194
  doc.text_area boleto.demonstrativo, width: '18.5 cm', text_align: :left, x: "#{@x - 0.8} cm", y: "#{@y - 0.9} cm", row_height: '0.4 cm'
189
195
  end
@@ -224,7 +230,7 @@ module Brcobranca
224
230
  move_more(doc, 15.8, 0)
225
231
  doc.show boleto.agencia_conta_boleto
226
232
 
227
- move_more(doc, -15.8 , -0.9)
233
+ move_more(doc, -15.8, -0.9)
228
234
  doc.show boleto.data_documento.to_s_br if boleto.data_documento
229
235
 
230
236
  move_more(doc, 3.5, 0)
@@ -279,20 +285,19 @@ module Brcobranca
279
285
  doc.show boleto.instrucao6
280
286
  end
281
287
 
282
-
283
288
  move_more(doc, 0.5, -1.9)
284
- doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}" if boleto.sacado && boleto.sacado_documento
289
+ if boleto.sacado && boleto.sacado_documento
290
+ doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}"
291
+ end
285
292
 
286
293
  move_more(doc, 0, -0.4)
287
- doc.show "#{boleto.sacado_endereco}"
294
+ doc.show boleto.sacado_endereco.to_s
288
295
 
289
296
  move_more(doc, 1.2, -0.93)
290
- if boleto.avalista && boleto.avalista_documento
291
- doc.show "#{boleto.avalista} - #{boleto.avalista_documento}"
292
- end
297
+ doc.show "#{boleto.avalista} - #{boleto.avalista_documento}" if boleto.avalista && boleto.avalista_documento
293
298
  # FIM Segunda parte do BOLETO
294
299
  end
295
- end # Base
300
+ end
296
301
  end
297
302
  end
298
303
  end
@@ -1,4 +1,4 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
3
  begin
4
4
  require 'rghost'
@@ -24,6 +24,7 @@ module Brcobranca
24
24
  extend self
25
25
  include RGhost unless include?(RGhost)
26
26
  RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
27
+ RGhost::Config::GS[:default_params] << '-dNOSAFER'
27
28
 
28
29
  # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
29
30
  #
@@ -52,7 +53,7 @@ module Brcobranca
52
53
  def method_missing(m, *args)
53
54
  method = m.to_s
54
55
  if method.start_with?('to_')
55
- modelo_carne(self, (args.first || {}).merge!(formato: method[3..-1]))
56
+ modelo_carne(self, (args.first || {}).merge!(formato: method[3..]))
56
57
  else
57
58
  super
58
59
  end
@@ -116,12 +117,12 @@ module Brcobranca
116
117
  modelo_carne_build_data_left(doc, boleto, colunas, linhas)
117
118
  modelo_carne_build_data_right(doc, boleto, colunas, linhas)
118
119
 
119
- if curr_page_position >= max_per_page # maximo 3 boletos por pagina
120
- # Cria nova página se não for o último boleto
121
- doc.next_page unless index == boletos.length - 1
120
+ next unless curr_page_position >= max_per_page # maximo 3 boletos por pagina
122
121
 
123
- curr_page_position = 0 # reinicia contador por página
124
- end
122
+ # Cria nova página se não for o último boleto
123
+ doc.next_page unless index == boletos.length - 1
124
+
125
+ curr_page_position = 0 # reinicia contador por página
125
126
  end
126
127
 
127
128
  # Gerando stream
@@ -202,7 +203,7 @@ module Brcobranca
202
203
 
203
204
  # sacado
204
205
  doc.moveto x: colunas[0], y: linhas[13]
205
- doc.show "#{boleto.sacado}"
206
+ doc.show boleto.sacado.to_s
206
207
  end
207
208
 
208
209
  # aplica dados do lado direito
@@ -297,17 +298,22 @@ module Brcobranca
297
298
 
298
299
  # Sacado
299
300
  doc.moveto x: colunas[2], y: linhas[11]
300
- doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}" if boleto.sacado && boleto.sacado_documento
301
+ if boleto.sacado && boleto.sacado_documento
302
+ doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
303
+ end
301
304
 
302
305
  # Sacado endereço
303
306
  doc.moveto x: colunas[2], y: linhas[12]
304
- doc.show "#{boleto.sacado_endereco}"
307
+ doc.show boleto.sacado_endereco.to_s
305
308
 
306
309
  # codigo de barras
307
310
  # Gerando codigo de barra com rghost_barcode
308
- doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.2 cm', x: colunas[2], y: linhas[14]) if boleto.codigo_barras
311
+ if boleto.codigo_barras
312
+ doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.2 cm', x: colunas[2],
313
+ y: linhas[14])
314
+ end
309
315
  end
310
- end # Base
316
+ end
311
317
  end
312
318
  end
313
319
  end
@@ -1,140 +1,98 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Boleto
5
- class Unicred < Base # Banco Unicred
6
- # <b>REQUERIDO</b>: Código do posto da cooperativa de crédito
7
- attr_accessor :posto
8
-
9
- # <b>REQUERIDO</b>: Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
10
- attr_accessor :byte_idt
11
-
12
- validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
13
- validates_length_of :nosso_numero, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
14
- validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
15
- # Carteira
16
- # 1 Com Registro
17
- # 3 Sem Registro
18
- # Obs.: O Unicred não validará este campo.
19
- validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
20
- validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
21
- validates_length_of :byte_idt, is: 1, message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
22
- validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
5
+ # Banco Unicred
6
+ class Unicred < Base
7
+ attr_accessor :conta_corrente_dv
8
+
9
+ validates_length_of :agencia, maximum: 4, message:
10
+ 'deve ser menor ou igual a 4 dígitos.'
11
+ validates_length_of :nosso_numero, maximum: 10, message:
12
+ 'deve ser menor ou igual a 10 dígitos.'
13
+ validates_length_of :conta_corrente, maximum: 9, message:
14
+ 'deve ser menor ou igual a 9 dígitos.'
15
+ # Carteira com 2(dois) caracteres ( SEMPRE 21 )
16
+ validates_length_of :carteira, maximum: 2, message:
17
+ 'deve ser menor ou igual a 2 dígitos.'
18
+ validates_length_of :conta_corrente_dv, maximum: 1, message:
19
+ 'deve ser menor ou igual a 1 dígitos.'
23
20
 
24
21
  # Nova instancia do Unicred
25
22
  # @param (see Brcobranca::Boleto::Base#initialize)
26
23
  def initialize(campos = {})
27
- campos = { carteira: '3',
28
- especie_documento: 'DM',
29
- local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED'
24
+ campos = {
25
+ carteira: '21',
26
+ local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED',
27
+ aceite: 'N'
30
28
  }.merge!(campos)
31
29
  super(campos)
32
30
  end
33
31
 
34
- # Codigo do banco emissor (3 dígitos sempre)
32
+ # Codigo do banco emissor 3 digitos sempre
35
33
  #
36
- # @return [String] 3 caracteres numéricos.
34
+ # @return [String] 3 caracteres numericos.
37
35
  def banco
38
- '748'
39
- end
40
-
41
- # Carteira
42
- #
43
- # @return [String] 2 caracteres numéricos.
44
- def carteira=(valor)
45
- @carteira = valor.to_s.rjust(1, '0') if valor
36
+ '136'
46
37
  end
47
38
 
48
- # Posto
49
- #
50
- # @return [String] 2 caracteres numéricos.
51
- def posto=(valor)
52
- @posto = valor.to_s.rjust(2, '0') if valor
39
+ # Agência do cliente junto ao banco.
40
+ # @return [String] 4 caracteres numéricos.
41
+ def agencia=(valor)
42
+ @agencia = valor.to_s.rjust(4, '0') if valor
53
43
  end
54
44
 
55
- # Número da conta corrente
56
- # @return [String] 5 caracteres numéricos.
45
+ # Conta corrente
46
+ # @return [String] 9 caracteres numéricos.
57
47
  def conta_corrente=(valor)
58
- @conta_corrente = valor.to_s.rjust(5, '0') if valor
48
+ @conta_corrente = valor.to_s.rjust(9, '0') if valor
59
49
  end
60
50
 
61
- # Código Beneficiário
62
- # @return [String] 5 caracteres numéricos.
63
- def convenio=(valor)
64
- @convenio = valor.to_s.rjust(5, '0') if valor
51
+ # Número seqüencial utilizado para identificar o boleto.
52
+ # @return [String] 10 caracteres numéricos.
53
+ def nosso_numero=(valor)
54
+ @nosso_numero = valor.to_s.rjust(10, '0') if valor
65
55
  end
66
56
 
67
- # Dígito verificador do banco
68
- # @return [String] 1 caractere.
69
- def banco_dv
70
- 'X'
57
+ # Dígito verificador do nosso número.
58
+ #
59
+ # @return [String] 1 caracteres numéricos.
60
+ def nosso_numero_dv
61
+ nosso_numero.to_s.modulo11(mapeamento: {
62
+ 10 => 0,
63
+ 11 => 0
64
+ })
71
65
  end
72
66
 
73
67
  # Nosso número para exibir no boleto.
74
- # O campo Nosso Número deve ser apresentado no formato AA/BXXXXX-D, onde:
75
- # AA = Ano atual
76
- # B = Byte que pode ser de 2 a 9. Somente será 1 se forem boletos pré-impressos.
77
- # XXXXX = número sequencial
78
- # D = dígito verificador calculado
79
68
  # @return [String]
80
69
  # @example
81
- # boleto.nosso_numero_boleto #=> "14/200022-5"
70
+ # boleto.nosso_numero_boleto #=> "12345678-4"
82
71
  def nosso_numero_boleto
83
- "#{nosso_numero_with_byte_idt[0..1]}/#{nosso_numero_with_byte_idt[2..-1]}-#{nosso_numero_dv}"
84
- end
85
-
86
- def nosso_numero_codigo_barra
87
- nosso_numero_boleto.gsub(/\D/, '')
88
- end
89
-
90
- def nosso_numero_with_byte_idt
91
- "#{data_processamento.strftime('%y')}#{byte_idt}#{nosso_numero}"
92
- end
93
-
94
- # Número seqüencial utilizado para identificar o boleto.
95
- # @return [String] 5 caracteres numéricos.
96
- def nosso_numero=(valor)
97
- @nosso_numero = valor.to_s.rjust(5, '0') if valor
98
- end
99
-
100
- # Dígito verificador do nosso número
101
- # @return [Integer] 1 caracteres numéricos.
102
- def nosso_numero_dv
103
- "#{agencia_posto_conta}#{nosso_numero_with_byte_idt}"
104
- .modulo11(mapeamento: mapeamento_para_modulo_11)
72
+ "#{nosso_numero}-#{nosso_numero_dv}"
105
73
  end
106
74
 
75
+ # Agência + conta corrente do cliente para exibir no boleto.
76
+ # @return [String]
77
+ # @example
78
+ # boleto.agencia_conta_boleto #=> "08111 / 536788-8"
107
79
  def agencia_conta_boleto
108
- "#{agencia}.#{posto}.#{convenio}"
109
- end
110
-
111
- def agencia_posto_conta
112
- "#{agencia}#{posto}#{convenio}"
80
+ "#{agencia} / #{conta_corrente}-#{conta_corrente_dv}"
113
81
  end
114
82
 
115
83
  # Segunda parte do código de barras.
116
- # Posição Tamanho Conteúdo
117
- # 20 – 20 01 Código numérico correspondente ao tipo de cobrança: “1” – Com Registro “3 Sem Registro”. Obs.: O SICREDI não validará este campo.
118
- # 21 21 01 Código numérico correspondente ao tipo de carteira: “1” - carteira simples
119
- # 22 30 09 Nosso número
120
- # 31 34 # 04 # Cooperativa de crédito/agência beneficiária
121
- # 35 36 # 02 # Posto da cooperativa de crédito/agência beneficiária
122
- # 37 41 # 05 # Código do beneficiário
123
- # 42 42 # 01 # Será 1 (um) quando houver valor expresso no campo “valor do documento”
124
- # 43 43 # 01 # Filler zeros “0”
125
- # 44 44 # 01 # DV do campo livre calculado por módulo 11 com aproveitamento total (resto igual a 0 ou 1 DV cai para 0)
84
+ # Posição | Tamanho | Picture | Conteúdo
85
+ # 01-03 | 3 | 9(3) | Identificação da instituição financeira - 136
86
+ # 04-04 | 1 | 9 | Código moeda (9 Real)
87
+ # 05-05 | 1 | 9 | Dígito verificador do código de barras (DV)
88
+ # 06-19 | 14 | 9(4) | Posições 06 a 09 – fator de vencimento
89
+ # | | 9(8)v99 | Posições 10 a 19 valor nominal do título
90
+ # 20-23 | 4 | 4 | Agência BENEFICIÁRIO (Sem o dígito verificador)
91
+ # 24-33 | 10 | 10 | Conta do BENEFICIÁRIO (Com o dígito verificador)
92
+ # 3444 | 11 | 11 | Nosso Número (Com o dígito verificador)
93
+ # @return [String] 25 caracteres numéricos.
126
94
  def codigo_barras_segunda_parte
127
- campo_livre = "#{carteira}1#{nosso_numero_codigo_barra}#{agencia_posto_conta}10"
128
- campo_livre + campo_livre.modulo11(mapeamento: mapeamento_para_modulo_11).to_s
129
- end
130
-
131
- private
132
-
133
- def mapeamento_para_modulo_11
134
- {
135
- 10 => 0,
136
- 11 => 0
137
- }
95
+ "#{agencia}#{conta_corrente}#{conta_corrente_dv}#{nosso_numero}#{nosso_numero_dv}"
138
96
  end
139
97
  end
140
98
  end