brcobranca_sicredi_400 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3 -0
  3. data/LICENSE +20 -0
  4. data/README.md +91 -0
  5. data/Rakefile +8 -0
  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/bancobrasil.eps +5402 -0
  9. data/lib/brcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
  10. data/lib/brcobranca/arquivos/logos/bancobrasilia.eps +0 -0
  11. data/lib/brcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
  12. data/lib/brcobranca/arquivos/logos/banconordeste.eps +0 -0
  13. data/lib/brcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
  14. data/lib/brcobranca/arquivos/logos/banestes.eps +5198 -0
  15. data/lib/brcobranca/arquivos/logos/banestes_carne.eps +5206 -0
  16. data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
  17. data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
  18. data/lib/brcobranca/arquivos/logos/bradesco.eps +5210 -0
  19. data/lib/brcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
  20. data/lib/brcobranca/arquivos/logos/caixa.eps +5111 -0
  21. data/lib/brcobranca/arquivos/logos/caixa_carne.eps +5115 -0
  22. data/lib/brcobranca/arquivos/logos/cecred.eps +0 -0
  23. data/lib/brcobranca/arquivos/logos/cecred_carne.eps +0 -0
  24. data/lib/brcobranca/arquivos/logos/citibank.eps +745 -0
  25. data/lib/brcobranca/arquivos/logos/citibank_carne.eps +745 -0
  26. data/lib/brcobranca/arquivos/logos/credisis.eps +0 -0
  27. data/lib/brcobranca/arquivos/logos/credisis_carne.eps +0 -0
  28. data/lib/brcobranca/arquivos/logos/hsbc.eps +5124 -0
  29. data/lib/brcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
  30. data/lib/brcobranca/arquivos/logos/itau.eps +5318 -0
  31. data/lib/brcobranca/arquivos/logos/itau_carne.eps +5322 -0
  32. data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
  33. data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
  34. data/lib/brcobranca/arquivos/logos/santander.eps +5305 -0
  35. data/lib/brcobranca/arquivos/logos/santander_carne.eps +5313 -0
  36. data/lib/brcobranca/arquivos/logos/sicoob.eps +5375 -0
  37. data/lib/brcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
  38. data/lib/brcobranca/arquivos/logos/sicredi.eps +5379 -0
  39. data/lib/brcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
  40. data/lib/brcobranca/arquivos/logos/unicred.eps +0 -0
  41. data/lib/brcobranca/arquivos/logos/unicred_carne.eps +0 -0
  42. data/lib/brcobranca/arquivos/templates/modelo_carne.eps +1112 -0
  43. data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
  44. data/lib/brcobranca/arquivos/templates/modelo_generico2.eps +9967 -0
  45. data/lib/brcobranca/boleto/ailos.rb +89 -0
  46. data/lib/brcobranca/boleto/banco_brasil.rb +165 -0
  47. data/lib/brcobranca/boleto/banco_brasilia.rb +102 -0
  48. data/lib/brcobranca/boleto/banco_nordeste.rb +80 -0
  49. data/lib/brcobranca/boleto/banestes.rb +86 -0
  50. data/lib/brcobranca/boleto/banrisul.rb +95 -0
  51. data/lib/brcobranca/boleto/base.rb +256 -0
  52. data/lib/brcobranca/boleto/bradesco.rb +100 -0
  53. data/lib/brcobranca/boleto/caixa.rb +123 -0
  54. data/lib/brcobranca/boleto/citibank.rb +97 -0
  55. data/lib/brcobranca/boleto/credisis.rb +118 -0
  56. data/lib/brcobranca/boleto/hsbc.rb +96 -0
  57. data/lib/brcobranca/boleto/itau.rb +138 -0
  58. data/lib/brcobranca/boleto/safra.rb +152 -0
  59. data/lib/brcobranca/boleto/santander.rb +86 -0
  60. data/lib/brcobranca/boleto/sicoob.rb +120 -0
  61. data/lib/brcobranca/boleto/sicredi.rb +145 -0
  62. data/lib/brcobranca/boleto/template/base.rb +28 -0
  63. data/lib/brcobranca/boleto/template/rghost.rb +308 -0
  64. data/lib/brcobranca/boleto/template/rghost2.rb +264 -0
  65. data/lib/brcobranca/boleto/template/rghost_bolepix.rb +286 -0
  66. data/lib/brcobranca/boleto/template/rghost_carne.rb +319 -0
  67. data/lib/brcobranca/boleto/unicred.rb +99 -0
  68. data/lib/brcobranca/calculo.rb +120 -0
  69. data/lib/brcobranca/calculo_data.rb +63 -0
  70. data/lib/brcobranca/currency.rb +69 -0
  71. data/lib/brcobranca/formatacao.rb +104 -0
  72. data/lib/brcobranca/formatacao_string.rb +37 -0
  73. data/lib/brcobranca/limpeza.rb +20 -0
  74. data/lib/brcobranca/remessa/base.rb +72 -0
  75. data/lib/brcobranca/remessa/cnab240/ailos.rb +156 -0
  76. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +249 -0
  77. data/lib/brcobranca/remessa/cnab240/base.rb +529 -0
  78. data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +307 -0
  79. data/lib/brcobranca/remessa/cnab240/caixa.rb +171 -0
  80. data/lib/brcobranca/remessa/cnab240/santander.rb +225 -0
  81. data/lib/brcobranca/remessa/cnab240/sicoob.rb +229 -0
  82. data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +101 -0
  83. data/lib/brcobranca/remessa/cnab240/sicredi.rb +183 -0
  84. data/lib/brcobranca/remessa/cnab240/unicred.rb +10 -0
  85. data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +169 -0
  86. data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +167 -0
  87. data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +161 -0
  88. data/lib/brcobranca/remessa/cnab400/banrisul.rb +158 -0
  89. data/lib/brcobranca/remessa/cnab400/base.rb +132 -0
  90. data/lib/brcobranca/remessa/cnab400/bradesco.rb +155 -0
  91. data/lib/brcobranca/remessa/cnab400/citibank.rb +139 -0
  92. data/lib/brcobranca/remessa/cnab400/credisis.rb +130 -0
  93. data/lib/brcobranca/remessa/cnab400/itau.rb +162 -0
  94. data/lib/brcobranca/remessa/cnab400/santander.rb +233 -0
  95. data/lib/brcobranca/remessa/cnab400/sicoob.rb +305 -0
  96. data/lib/brcobranca/remessa/cnab400/sicredi.rb +117 -0
  97. data/lib/brcobranca/remessa/cnab400/unicred.rb +259 -0
  98. data/lib/brcobranca/remessa/pagamento.rb +320 -0
  99. data/lib/brcobranca/retorno/base.rb +11 -0
  100. data/lib/brcobranca/retorno/cnab240/ailos.rb +104 -0
  101. data/lib/brcobranca/retorno/cnab240/base.rb +41 -0
  102. data/lib/brcobranca/retorno/cnab240/caixa.rb +47 -0
  103. data/lib/brcobranca/retorno/cnab240/santander.rb +99 -0
  104. data/lib/brcobranca/retorno/cnab240/sicoob.rb +101 -0
  105. data/lib/brcobranca/retorno/cnab240/sicredi.rb +82 -0
  106. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +130 -0
  107. data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +90 -0
  108. data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +113 -0
  109. data/lib/brcobranca/retorno/cnab400/banrisul.rb +42 -0
  110. data/lib/brcobranca/retorno/cnab400/base.rb +53 -0
  111. data/lib/brcobranca/retorno/cnab400/bradesco.rb +124 -0
  112. data/lib/brcobranca/retorno/cnab400/credisis.rb +116 -0
  113. data/lib/brcobranca/retorno/cnab400/itau.rb +144 -0
  114. data/lib/brcobranca/retorno/cnab400/santander.rb +58 -0
  115. data/lib/brcobranca/retorno/cnab400/sicredi.rb +78 -0
  116. data/lib/brcobranca/retorno/cnab400/unicred.rb +123 -0
  117. data/lib/brcobranca/retorno/retorno_cbr643.rb +48 -0
  118. data/lib/brcobranca/retorno/retorno_cnab240.rb +99 -0
  119. data/lib/brcobranca/retorno/retorno_cnab400.rb +71 -0
  120. data/lib/brcobranca/util/date.rb +21 -0
  121. data/lib/brcobranca/util/empresa.rb +29 -0
  122. data/lib/brcobranca/util/errors.rb +76 -0
  123. data/lib/brcobranca/validations.rb +208 -0
  124. data/lib/brcobranca/version.rb +5 -0
  125. data/lib/brcobranca.rb +200 -0
  126. metadata +225 -0
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ # Ailos
6
+ class Ailos < Base
7
+ validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
8
+ validates_length_of :conta_corrente,
9
+ maximum: 8,
10
+ message: 'deve ser menor ou igual a 8 dígitos.'
11
+ validates_length_of :carteira, is: 2, message: 'deve ser menor ou igual a 2 dígitos.'
12
+ validates_length_of :convenio, is: 6, message: 'deve ser menor ou igual a 6 dígitos.'
13
+ validates_length_of :nosso_numero, maximum: 9, message: 'deve ser menor ou igual a 9 dígitos.'
14
+
15
+ # Nova instancia do Ailos
16
+ # @param (see Brcobranca::Boleto::Base#initialize)
17
+ def initialize(campos = {})
18
+ campos = {
19
+ carteira: '1',
20
+ local_pagamento: 'Pagar preferencialmente nas cooperativas do Sistema AILOS.'
21
+ }.merge!(campos)
22
+ super(campos)
23
+ end
24
+
25
+ # Codigo do banco emissor (3 dígitos sempre)
26
+ #
27
+ # @return [String] 3 caracteres numéricos.
28
+ def banco
29
+ '085'
30
+ end
31
+
32
+ # Dígito verificador do banco
33
+ # @return [Integer] 1 caracteres numéricos.
34
+ def banco_dv
35
+ '1'
36
+ end
37
+
38
+ # Dígito verificador da conta corrente
39
+ # @return [Integer] 1 caracteres numéricos.
40
+ def conta_corrente_dv
41
+ conta_corrente.modulo11(mapeamento: { 10 => 0 })
42
+ end
43
+
44
+ # Convenio
45
+ # @return [String] 6 caracteres numéricos.
46
+ def convenio=(valor)
47
+ @convenio = valor.to_s.rjust(6, '0') if valor
48
+ end
49
+
50
+ # Carteira
51
+ # @return [String] 2 caracteres numéricos.
52
+ def carteira=(valor)
53
+ @carteira = valor.to_s.rjust(2, '0') if valor
54
+ end
55
+
56
+ # Número seqüencial utilizado para identificar o boleto.
57
+ # (Número de dígitos depende do tipo de convênio).
58
+ # @raise [Brcobranca::NaoImplementado] Caso o tipo de convênio não seja suportado pelo Brcobranca.
59
+ #
60
+ # @overload numero
61
+ # @return [String] 9 caracteres numéricos.
62
+ def nosso_numero=(valor)
63
+ @nosso_numero = valor.to_s.rjust(9, '0')
64
+ end
65
+
66
+ # Nosso número para exibir no boleto.
67
+ # @return [String]
68
+ # @example
69
+ # boleto.nosso_numero_boleto #=> "10000000027000095-7"
70
+ def nosso_numero_boleto
71
+ "#{conta_corrente}#{conta_corrente_dv}#{nosso_numero}"
72
+ end
73
+
74
+ # Agência + conta corrente do cliente para exibir no boleto.
75
+ # @return [String]
76
+ # @example
77
+ # boleto.agencia_conta_boleto #=> "0001-9 / 0000002-7"
78
+ def agencia_conta_boleto
79
+ "#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
80
+ end
81
+
82
+ # Segunda parte do código de barras.
83
+ # @return [String] 25 caracteres numéricos.
84
+ def codigo_barras_segunda_parte
85
+ "#{convenio}#{nosso_numero_boleto}#{carteira}"
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,165 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ # Banco do Brasil
6
+ class BancoBrasil < Base
7
+ validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
8
+ validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
9
+ validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
10
+ validates_length_of :convenio, in: 4..8, message: 'não existente para este banco.'
11
+
12
+ validates_each :nosso_numero do |record, attr, value|
13
+ valor_tamanho = value.to_s.size
14
+ registro_tamanho = record.convenio.to_s.size
15
+ quantidade = if (valor_tamanho > 9) && (registro_tamanho == 8)
16
+ '9'
17
+ elsif (valor_tamanho > 10) && (registro_tamanho == 7)
18
+ '10'
19
+ elsif (valor_tamanho > 7) && (registro_tamanho == 4)
20
+ '7'
21
+ elsif (valor_tamanho > 5) && (registro_tamanho == 6) && !record.codigo_servico
22
+ '5'
23
+ elsif (valor_tamanho > 17) && (registro_tamanho == 6) && record.codigo_servico
24
+ '17'
25
+ end
26
+ record.errors.add attr, "deve ser menor ou igual a #{quantidade} dígitos." if quantidade
27
+ end
28
+
29
+ # Nova instancia do BancoBrasil
30
+ # @param (see Brcobranca::Boleto::Base#initialize)
31
+ def initialize(campos = {})
32
+ campos = {
33
+ carteira: '18',
34
+ codigo_servico: false,
35
+ local_pagamento: 'PAGÁVEL EM QUALQUER BANCO.'
36
+ }.merge!(campos)
37
+ super(campos)
38
+ end
39
+
40
+ # Codigo do banco emissor (3 dígitos sempre)
41
+ #
42
+ # @return [String] 3 caracteres numéricos.
43
+ def banco
44
+ '001'
45
+ end
46
+
47
+ # Carteira
48
+ #
49
+ # @return [String] 2 caracteres numéricos.
50
+ def carteira=(valor)
51
+ @carteira = valor.to_s.rjust(2, '0') if valor
52
+ end
53
+
54
+ # Dígito verificador do banco
55
+ #
56
+ # @return [String] 1 caracteres numéricos.
57
+ def banco_dv
58
+ banco.modulo11(mapeamento: { 10 => 'X' })
59
+ end
60
+
61
+ # Retorna dígito verificador da agência
62
+ #
63
+ # @return [String] 1 caracteres numéricos.
64
+ def agencia_dv
65
+ agencia.modulo11(mapeamento: { 10 => 'X' })
66
+ end
67
+
68
+ # Conta corrente
69
+ # @return [String] 8 caracteres numéricos.
70
+ def conta_corrente=(valor)
71
+ @conta_corrente = valor.to_s.rjust(8, '0') if valor
72
+ end
73
+
74
+ # Dígito verificador da conta corrente
75
+ # @return [String] 1 caracteres numéricos.
76
+ def conta_corrente_dv
77
+ conta_corrente.modulo11(mapeamento: { 10 => 'X' })
78
+ end
79
+
80
+ # Número seqüencial utilizado para identificar o boleto.
81
+ # (Número de dígitos depende do tipo de convênio).
82
+ # @raise [Brcobranca::NaoImplementado] Caso o tipo de convênio não seja suportado pelo Brcobranca.
83
+ #
84
+ # @overload nosso_numero
85
+ # Nosso Número de 17 dígitos com Convenio de 8 dígitos.
86
+ # @return [String] 9 caracteres numéricos.
87
+ # @overload nosso_numero
88
+ # Nosso Número de 17 dígitos com Convenio de 7 dígitos.
89
+ # @return [String] 10 caracteres numéricos.
90
+ # @overload nosso_numero
91
+ # Nosso Número de 7 dígitos com Convenio de 4 dígitos.
92
+ # @return [String] 4 caracteres numéricos.
93
+ # @overload nosso_numero
94
+ # Nosso Número de 11 dígitos com Convenio de 6 dígitos e {#codigo_servico} false.
95
+ # @return [String] 5 caracteres numéricos.
96
+ # @overload nosso_numero
97
+ # Nosso Número de 17 dígitos com Convenio de 6 dígitos e {#codigo_servico} true. (carteira 16 e 18)
98
+ # @return [String] 17 caracteres numéricos.
99
+ def nosso_numero
100
+ quantidade = case @convenio.to_s.size
101
+ when 8
102
+ 9
103
+ when 7
104
+ 10
105
+ when 4
106
+ 7
107
+ when 6
108
+ codigo_servico ? 17 : 5
109
+ else
110
+ raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
111
+ end
112
+ quantidade ? @nosso_numero.to_s.rjust(quantidade, '0') : @nosso_numero
113
+ end
114
+
115
+ # Dígito verificador do nosso número.
116
+ # @return [String] 1 caracteres numéricos.
117
+ # @see BancoBrasil#nosso_numero
118
+ def nosso_numero_dv
119
+ "#{convenio}#{nosso_numero}".modulo11(mapeamento: { 10 => 'X' })
120
+ end
121
+
122
+ # Nosso número para exibir no boleto.
123
+ # @return [String]
124
+ # @example
125
+ # boleto.nosso_numero_boleto #=> "12387989000004042-4"
126
+ def nosso_numero_boleto
127
+ "#{convenio}#{nosso_numero}"
128
+ end
129
+
130
+ # Agência + conta corrente do cliente para exibir no boleto.
131
+ # @return [String]
132
+ # @example
133
+ # boleto.agencia_conta_boleto #=> "0548-7 / 00001448-6"
134
+ def agencia_conta_boleto
135
+ "#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
136
+ end
137
+
138
+ # Segunda parte do código de barras.
139
+ # A montagem é feita baseada na quantidade de dígitos do convênio.
140
+ # @return [String] 25 caracteres numéricos.
141
+ def codigo_barras_segunda_parte
142
+ case convenio.to_s.size
143
+ when 8 # Nosso Número de 17 dígitos com Convenio de 8 dígitos e nosso_numero de 9 dígitos
144
+ "000000#{convenio}#{nosso_numero}#{carteira}"
145
+ when 7 # Nosso Número de 17 dígitos com Convenio de 7 dígitos e nosso_numero de 10 dígitos
146
+ "000000#{convenio}#{nosso_numero}#{carteira}"
147
+ when 6 # Convenio de 6 dígitos
148
+ if codigo_servico == false
149
+ # Nosso Número de 11 dígitos com Convenio de 6 dígitos e nosso_numero de 5 dígitos
150
+ "#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
151
+ else
152
+ # Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem nosso_numero, carteira 16 e 18
153
+ raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w[
154
+ 16 18
155
+ ].include?(carteira)
156
+
157
+ "#{convenio}#{nosso_numero}21"
158
+ end
159
+ when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem nosso_numero
160
+ "#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ # Banco Brasilia
6
+ class BancoBrasilia < Base
7
+ # <b>OPCIONAL</b>: Incremento do Campo Livre do Nosso Número
8
+ attr_accessor :nosso_numero_incremento
9
+
10
+ # Validações
11
+ # Modalidade/Carteira de Cobrança (1-Sem Registro | 2-Registrada)
12
+ validates_length_of :agencia, is: 3, message: 'deve possuir 3 dígitos.'
13
+ validates_length_of :carteira, is: 1, message: 'deve possuir 1 dígito.'
14
+ validates_length_of :nosso_numero, maximum: 6, message: 'deve ser menor ou igual a 6 dígitos.'
15
+ validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
16
+ validates_length_of :nosso_numero_incremento, maximum: 3, message: 'deve ser menor ou igual a 3 dígitos.'
17
+ validates_presence_of :nosso_numero_incremento, message: 'não pode estar em branco.'
18
+
19
+ # Nova instância da BancoBrasilia
20
+ # @param (see Brcobranca::Boleto::Base#initialize)
21
+ def initialize(campos = {})
22
+ campos = {
23
+ carteira: '2',
24
+ nosso_numero_incremento: '000',
25
+ local_pagamento: 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO'
26
+ }.merge!(campos)
27
+
28
+ super(campos)
29
+ end
30
+
31
+ # Código do banco emissor
32
+ # @return [String]
33
+ def banco
34
+ '070'
35
+ end
36
+
37
+ # Número da agência
38
+ # @return [String] 3 caracteres numéricos.
39
+ def agencia=(valor)
40
+ @agencia = valor.to_s.rjust(3, '0') if valor
41
+ end
42
+
43
+ # Conta corrente
44
+ # @return [String] 7 caracteres numéricos.
45
+ def conta_corrente=(valor)
46
+ @conta_corrente = valor.to_s.rjust(7, '0') if valor
47
+ end
48
+
49
+ # Número seqüencial utilizado para identificar o boleto.
50
+ # @return [String] 6 caracteres numéricos.
51
+ def nosso_numero=(valor)
52
+ @nosso_numero = valor.to_s.rjust(6, '0') if valor
53
+ end
54
+
55
+ # Incremento do Campo Livre do Nosso Número
56
+ # @return [String] 3 caracteres numéricos.
57
+ def nosso_numero_incremento=(valor)
58
+ @nosso_numero_incremento = valor.to_s.rjust(3, '0') if valor
59
+ end
60
+
61
+ # Nosso número boleto
62
+ # @return [String]
63
+ def nosso_numero_boleto
64
+ "#{carteira}#{nosso_numero}070#{codigo_barras_segunda_parte[-2..]}"
65
+ end
66
+
67
+ # Número da agência/código cedente do cliente para exibir no boleto.
68
+ # @return [String]
69
+ # @example
70
+ # boleto.agencia_conta_boleto #=> "1565/100000-4"
71
+ def agencia_conta_boleto
72
+ "000 - #{agencia} - #{conta_corrente}"
73
+ end
74
+
75
+ # Monta a segunda parte do código de barras.
76
+ #
77
+ # @return [String]
78
+ # POSIÇÃO | Tamanho| NOME DO CAMPO | CONTEÚDO/DESCRIÇÃO
79
+ # 1 - 3 | 3 | Incremento do Campo Livre do Nosso Número | Incremento do Campo livre. Tal incremento é opcional e uma vez utilizado deverá ser concatenado com as posições 2 a 7 do Nosso Número.
80
+ # 4 - 13 | 10 | Código do Beneficiário (Agencia/Conta) | Conta corrente de cobrança
81
+ # 14 - 25 | 12 | Nosso Número | Nosso Número. O formato é MSSSSSS070dd, em que M=Modalidade, S=Sequencial (campo livre do Nosso Número), 070-fixo, dd=Dígitos
82
+ #
83
+ # Composição do Nosso Número
84
+ # POSIÇÃO | Tamanho | NOME DO CAMPO | CONTEÚDO/DESCRIÇÃO
85
+ # 1 - 3 | 1 | Modalidade de Cobrança | Informar a modalidade de cobrança conforme a seguir:
86
+ # 1: Direta Modalidade 1;
87
+ # 2: Direta Modalidade 2;
88
+ # 3: Modalidade 3 (emissão BRB)
89
+ # As modalidades 1 e 2 são para a emissão local e a 3 para a emissão BRB.
90
+ # Neste caso, o padrão é postagem SIM.
91
+ # 4 - 9 | 6 | Campo Livre do Nosso Número | Neste campo livre, deve o sistema do sistema do Beneficiário controlar e identificar o boleto em sua carteira.
92
+ # Pode ser incrementado por meio das posições 1 a 3 da Chave BRB. Não são admitidas duplicidades.
93
+ # 10 - 12 | 3 | Banco | 070
94
+ # 13 - 13 | 1 | Dígito 1 | Calcula-se utilizando-se o sistema de “Módulo 10”, pesos 2 e 1. Ver detalhe ao lado.
95
+ # 14 - 14 | 1 | Dígito 2 | Calcula-se utilizando o sistema de “Modulo 11”, pesos de 2 a 7, com exceções quando o resto é igual a 0 e igual a 1. Ver detalhe ao lado.
96
+ def codigo_barras_segunda_parte
97
+ campo_livre = "#{nosso_numero_incremento}#{agencia}#{conta_corrente}#{carteira}#{nosso_numero}070"
98
+ campo_livre + campo_livre.duplo_digito
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ # Banco do Nordeste
6
+ class BancoNordeste < Base
7
+ # <b>REQUERIDO</b>: digito verificador da conta corrente
8
+ attr_accessor :digito_conta_corrente
9
+
10
+ validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
11
+ validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
12
+ validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.'
13
+ validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
14
+ validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
15
+
16
+ # Nova instancia do Banco do Nordeste
17
+ # @param (see Brcobranca::Boleto::Base#initialize)
18
+ def initialize(campos = {})
19
+ campos = { carteira: '21' }.merge!(campos)
20
+ super(campos)
21
+ end
22
+
23
+ # Codigo do banco emissor (3 dígitos sempre)
24
+ #
25
+ # @return [String] 3 caracteres numéricos.
26
+ def banco
27
+ '004'
28
+ end
29
+
30
+ # Número da conta corrente
31
+ # @return [String] 7 caracteres numéricos.
32
+ def conta_corrente=(valor)
33
+ @conta_corrente = valor.to_s.rjust(7, '0') if valor
34
+ end
35
+
36
+ # Número sequencial utilizado para identificar o boleto.
37
+ # @return [String] 7 caracteres numéricos.
38
+ def nosso_numero=(valor)
39
+ @nosso_numero = valor.to_s.rjust(7, '0') if valor
40
+ end
41
+
42
+ # Dígito verificador do nosso número.
43
+ # @return [String] 1 caracteres numéricos.
44
+ def nosso_numero_dv
45
+ nosso_numero.modulo11(
46
+ multiplicador: (2..8).to_a,
47
+ mapeamento: { 10 => 0, 11 => 0 }
48
+ ) { |total| 11 - (total % 11) }
49
+ end
50
+
51
+ # Nosso número para exibir no boleto.
52
+ # @return [String]
53
+ # @example
54
+ # boleto.nosso_numero_boleto #=> "0020572-9"
55
+ def nosso_numero_boleto
56
+ "#{nosso_numero}-#{nosso_numero_dv}"
57
+ end
58
+
59
+ # Agência + codigo do cedente do cliente para exibir no boleto.
60
+ # @return [String]
61
+ # @example
62
+ # boleto.agencia_conta_boleto #=> "0059/189977-5"
63
+ def agencia_conta_boleto
64
+ "#{agencia}/#{conta_corrente}-#{digito_conta_corrente}"
65
+ end
66
+
67
+ # Segunda parte do código de barras.
68
+ # 9(04) | Agência <br/>
69
+ # 9(08) | Conta corrente com DV <br/>
70
+ # 9(08) | Nosso Numero Com DV<br/>
71
+ # 9(02) | Carteira<br/>
72
+ # 9(03) | Zeros<br/>
73
+ #
74
+ # @return [String] 25 caracteres numéricos.
75
+ def codigo_barras_segunda_parte
76
+ "#{agencia}#{conta_corrente}#{digito_conta_corrente}#{nosso_numero}#{nosso_numero_dv}#{carteira}000"
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ # Banestes
6
+ class Banestes < Base
7
+ # <b>REQUERIDO</b>: digito verificador da conta corrente
8
+ attr_accessor :digito_conta_corrente
9
+
10
+ validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
11
+ validates_length_of :conta_corrente, maximum: 10, message: 'deve ser menor ou igual a 10 dígitos.'
12
+ validates_length_of :nosso_numero, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
13
+ validates_length_of :variacao, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
14
+ validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
15
+ validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.'
16
+
17
+ def initialize(campos = {})
18
+ campos = { carteira: '11', variacao: '2' }.merge!(campos)
19
+ super(campos)
20
+ end
21
+
22
+ # Codigo do banco emissor (3 dígitos sempre)
23
+ #
24
+ # @return [String] 3 caracteres numéricos.
25
+ def banco
26
+ '021'
27
+ end
28
+
29
+ # Dígito verificador do banco
30
+ #
31
+ # @return [String] 1 caractere.
32
+ def banco_dv
33
+ '3'
34
+ end
35
+
36
+ # Agência
37
+ #
38
+ # @return [String] 4 caracteres numéricos.
39
+ def agencia=(valor)
40
+ @agencia = valor.to_s.rjust(4, '0') if valor
41
+ end
42
+
43
+ # Conta
44
+ #
45
+ # @return [String] 7 caracteres numéricos.
46
+ def conta_corrente=(valor)
47
+ @conta_corrente = valor.to_s.rjust(10, '0') if valor
48
+ end
49
+
50
+ # Número documento
51
+ #
52
+ # @return [String] 8 caracteres numéricos.
53
+ def nosso_numero=(valor)
54
+ @nosso_numero = valor.to_s.rjust(8, '0') if valor
55
+ end
56
+
57
+ # Nosso número para exibição no boleto.
58
+ #
59
+ # @return [String] caracteres numéricos.
60
+ def nosso_numero_boleto
61
+ "#{nosso_numero}-#{nosso_numero_dv}"
62
+ end
63
+
64
+ def nosso_numero_dv
65
+ numero_dv_1 = nosso_numero.modulo11(mapeamento: { 10 => 0, 11 => 0 })
66
+ numero_dv_2 = "#{nosso_numero}#{numero_dv_1}".modulo11(mapeamento: { 10 => 0, 11 => 0 })
67
+
68
+ "#{numero_dv_1}#{numero_dv_2}"
69
+ end
70
+
71
+ def agencia_conta_boleto
72
+ "#{agencia.to_i} / #{conta_corrente.to_i}#{digito_conta_corrente}"
73
+ end
74
+
75
+ # Nosso Numero 'N' | Nosso número sem os dígitos | 08
76
+ # Conta corrente 'C' | No da conta corrente com DV | 11
77
+ # Tipo Cobranca 'R' | (2) Sem registro - (3) Caucionada - (4, 5, 6 e 7) Com registro | 01
78
+ # Codigo do banco cedente | Código do BANESTES '021' | 03
79
+ # Digitos | Dígitos verificadores | 02
80
+ def codigo_barras_segunda_parte
81
+ campo_livre = "#{nosso_numero}#{conta_corrente}#{digito_conta_corrente}#{variacao}021"
82
+ campo_livre + campo_livre.duplo_digito
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,95 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ # Banrisul
6
+ class Banrisul < Base
7
+ # <b>REQUERIDO</b>: digito verificador do convenio
8
+ attr_accessor :digito_convenio
9
+
10
+ validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
11
+ validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
12
+ validates_length_of :nosso_numero, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
13
+ validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
14
+ validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
15
+ validates_length_of :digito_convenio, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
16
+
17
+ def initialize(campos = {})
18
+ campos = { carteira: '2' }.merge!(campos)
19
+ super(campos)
20
+ end
21
+
22
+ # Codigo do banco emissor (3 dígitos sempre)
23
+ #
24
+ # @return [String] 3 caracteres numéricos.
25
+ def banco
26
+ '041'
27
+ end
28
+
29
+ # Dígito verificador do banco
30
+ #
31
+ # @return [String] 1 caractere.
32
+ def banco_dv
33
+ '8'
34
+ end
35
+
36
+ # Agência
37
+ #
38
+ # @return [String] 4 caracteres numéricos.
39
+ def agencia=(valor)
40
+ @agencia = valor.to_s.rjust(4, '0') if valor
41
+ end
42
+
43
+ # Conta
44
+ #
45
+ # @return [String] 8 caracteres numéricos.
46
+ def conta_corrente=(valor)
47
+ @conta_corrente = valor.to_s.rjust(8, '0') if valor
48
+ end
49
+
50
+ # Número documento
51
+ #
52
+ # @return [String] 8 caracteres numéricos.
53
+ def nosso_numero=(valor)
54
+ @nosso_numero = valor.to_s.rjust(8, '0') if valor
55
+ end
56
+
57
+ # Número do convênio do cliente junto ao banco.
58
+ # @return [String] 7 caracteres numéricos.
59
+ def convenio=(valor)
60
+ @convenio = valor.to_s.rjust(7, '0') if valor
61
+ end
62
+
63
+ # Digito do convênio do cliente junto ao banco.
64
+ # @return [String] 2 caracteres numéricos.
65
+ def digito_convenio=(valor)
66
+ @digito_convenio = valor.to_s.rjust(2, '0') if valor
67
+ end
68
+
69
+ # Nosso número para exibição no boleto.
70
+ #
71
+ # @return [String] caracteres numéricos.
72
+ def nosso_numero_boleto
73
+ "#{nosso_numero}-#{nosso_numero.duplo_digito}"
74
+ end
75
+
76
+ def agencia_conta_boleto
77
+ "#{agencia} / #{convenio[0..5]}.#{convenio[6]}.#{digito_convenio}"
78
+ end
79
+
80
+ # Posições 20 a 20 - Produto:
81
+ # 1 Cobrança Normal, Fichário emitido pelo BANRISUL.
82
+ # 2 Cobrança Direta, Fichário emitido pelo CLIENTE.
83
+ # Posição 21 a 21 - Constante 1
84
+ # Posição 22 a 25 - Código da Agência, com quatro dígitos, sem o Número de Controle.
85
+ # Posição 26 a 32 - Código de Cedente do Beneficiário sem Número de Controle.
86
+ # Posição 33 a 40 - Nosso Número sem Número de Controle.
87
+ # Posição 41 a 42 - Constante 40.
88
+ # Posição 43 a 44 - Duplo Dígito referente às posições 20 a 42 (módulos 10 e 11).
89
+ def codigo_barras_segunda_parte
90
+ campo_livre = "#{carteira}1#{agencia}#{convenio}#{nosso_numero}40"
91
+ campo_livre + campo_livre.duplo_digito
92
+ end
93
+ end
94
+ end
95
+ end