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
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab240
@@ -45,7 +46,7 @@ module Brcobranca
45
46
  def complemento_p(pagamento)
46
47
  # CAMPO TAMANHO
47
48
  # num. doc. de corbanca 15
48
- "#{pagamento.nosso_numero.to_s.rjust(15, '0')}"
49
+ pagamento.nosso_numero.to_s.rjust(15, '0').to_s
49
50
  end
50
51
 
51
52
  def codigo_convenio
@@ -54,15 +55,15 @@ module Brcobranca
54
55
  ''.rjust(20, ' ')
55
56
  end
56
57
 
57
- alias_method :convenio_lote, :codigo_convenio
58
+ alias convenio_lote codigo_convenio
58
59
 
59
60
  def totaliza_valor_titulos
60
61
  pagamentos.inject(0) { |sum, pag| sum += pag.valor.to_f }
61
62
  end
62
63
 
63
64
  def valor_titulos_carteira
64
- total = sprintf "%.2f", totaliza_valor_titulos
65
- total.somente_numeros.rjust(17, "0")
65
+ total = format '%.2f', totaliza_valor_titulos
66
+ total.somente_numeros.rjust(17, '0')
66
67
  end
67
68
 
68
69
  def complemento_trailer
@@ -78,7 +79,7 @@ module Brcobranca
78
79
  #
79
80
  # @return [String]
80
81
  #
81
- def monta_trailer_arquivo(nro_lotes, sequencial)
82
+ def monta_trailer_arquivo(nro_lotes, _sequencial)
82
83
  # CAMPO TAMANHO
83
84
  # zeros 7
84
85
  # registro trailer lote 1
@@ -86,7 +87,13 @@ module Brcobranca
86
87
  # nro de lotes 6
87
88
  # nro de registros(linhas) 6
88
89
  # uso FEBRABAN 211
89
- "#{''.rjust(7, '0')}5#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{valor_titulos_carteira}#{''.rjust(6, '0')}#{''.rjust(194, ' ')}"
90
+ "#{''.rjust(7,
91
+ '0')}5#{''.rjust(9,
92
+ ' ')}#{nro_lotes.to_s.rjust(6,
93
+ '0')}#{valor_titulos_carteira}#{''.rjust(6,
94
+ '0')}#{''.rjust(
95
+ 194, ' '
96
+ )}"
90
97
  end
91
98
  end
92
99
  end
@@ -1,16 +1,15 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab240
5
6
  class Sicredi < Brcobranca::Remessa::Cnab240::Base
6
- attr_accessor :modalidade_carteira
7
- attr_accessor :parcela
8
- # Parcela - 02 posições (11 a 12) - "01" se parcela única
7
+ attr_accessor :modalidade_carteira, :parcela, :byte_idt, :posto
9
8
 
10
- attr_accessor :byte_idt
11
- attr_accessor :posto
9
+ # Parcela - 02 posições (11 a 12) - "01" se parcela única
12
10
 
13
- validates_presence_of :byte_idt, :modalidade_carteira, :parcela, :posto, :digito_conta, message: 'não pode estar em branco.'
11
+ validates_presence_of :byte_idt, :modalidade_carteira, :parcela, :posto, :digito_conta,
12
+ message: 'não pode estar em branco.'
14
13
 
15
14
  # Remessa 240 - 12 digitos
16
15
  validates_length_of :conta_corrente, maximum: 5, message: 'deve ter 5 dígitos.'
@@ -19,7 +18,7 @@ module Brcobranca
19
18
  validates_length_of :digito_conta, is: 1, message: 'deve ter 1 dígito.'
20
19
  validates_length_of :posto, maximum: 2, message: 'deve ter 2 dígitos.'
21
20
  validates_length_of :byte_idt, is: 1,
22
- message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
21
+ message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
23
22
 
24
23
  def initialize(campos = {})
25
24
  campos = { emissao_boleto: '2',
@@ -53,11 +52,11 @@ module Brcobranca
53
52
  end
54
53
 
55
54
  def digito_agencia
56
- " "
55
+ ' '
57
56
  end
58
57
 
59
58
  def dv_agencia_cobradora
60
- " "
59
+ ' '
61
60
  end
62
61
 
63
62
  def uso_exclusivo_banco
@@ -74,7 +73,7 @@ module Brcobranca
74
73
  ''.rjust(20, ' ')
75
74
  end
76
75
 
77
- alias_method :convenio_lote, :codigo_convenio
76
+ alias convenio_lote codigo_convenio
78
77
 
79
78
  def info_conta
80
79
  # CAMPO TAMANHO
@@ -100,13 +99,13 @@ module Brcobranca
100
99
  # Vl. Títulos em Carteira Caucionada 15 + 2 decimais
101
100
  # Qt. Títulos em Cobrança Descontada 6
102
101
  # Vl. Títulos em Carteira Descontada 15 + 2 decimais
103
- total_cobranca_simples = "".rjust(23, "0")
104
- total_cobranca_vinculada = "".rjust(23, "0")
105
- total_cobranca_caucionada = "".rjust(23, "0")
106
- total_cobranca_descontada = "".rjust(23, "0")
102
+ total_cobranca_simples = ''.rjust(23, '0')
103
+ total_cobranca_vinculada = ''.rjust(23, '0')
104
+ total_cobranca_caucionada = ''.rjust(23, '0')
105
+ total_cobranca_descontada = ''.rjust(23, '0')
107
106
 
108
107
  "#{total_cobranca_simples}#{total_cobranca_vinculada}#{total_cobranca_caucionada}"\
109
- "#{total_cobranca_descontada}".ljust(217, ' ')
108
+ "#{total_cobranca_descontada}".ljust(217, ' ')
110
109
  end
111
110
 
112
111
  # Monta o registro trailer do arquivo
@@ -127,7 +126,13 @@ module Brcobranca
127
126
  # nro de lotes 6
128
127
  # nro de registros(linhas) 6
129
128
  # uso FEBRABAN 211
130
- "#{cod_banco}99999#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{sequencial.to_s.rjust(6, '0')}#{''.rjust(6, '0')}#{''.rjust(205, ' ')}"
129
+ "#{cod_banco}99999#{''.rjust(9,
130
+ ' ')}#{nro_lotes.to_s.rjust(6,
131
+ '0')}#{sequencial.to_s.rjust(6,
132
+ '0')}#{''.rjust(6,
133
+ '0')}#{''.rjust(
134
+ 205, ' '
135
+ )}"
131
136
  end
132
137
 
133
138
  def complemento_p(pagamento)
@@ -146,21 +151,22 @@ module Brcobranca
146
151
  nosso_numero.somente_numeros.ljust(20, ' ')
147
152
  end
148
153
 
149
- def codigo_desconto(pagamento)
154
+ def codigo_desconto(_pagamento)
150
155
  '1'
151
156
  end
152
157
 
153
- def codigo_baixa(pagamento)
158
+ def codigo_baixa(_pagamento)
154
159
  '1'
155
160
  end
156
161
 
157
- def dias_baixa(pagamento)
162
+ def dias_baixa(_pagamento)
158
163
  '060'
159
164
  end
160
165
 
161
166
  def data_mora(pagamento)
162
- return "".rjust(8, "0") unless %w( 1 2 ).include? pagamento.tipo_mora
163
- pagamento.data_vencimento.next_day.strftime("%d%m%Y")
167
+ return ''.rjust(8, '0') unless %w[1 2].include? pagamento.tipo_mora
168
+
169
+ pagamento.data_vencimento.next_day.strftime('%d%m%Y')
164
170
  end
165
171
 
166
172
  private
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab240
@@ -1,5 +1,5 @@
1
- # -*- encoding: utf-8 -*-
2
- #
1
+ # frozen_string_literal: true
2
+
3
3
  module Brcobranca
4
4
  module Remessa
5
5
  module Cnab400
@@ -27,7 +27,8 @@ module Brcobranca
27
27
  #
28
28
  attr_accessor :tipo_cobranca
29
29
 
30
- validates_presence_of :agencia, :conta_corrente, :convenio, :variacao_carteira, :documento_cedente, message: 'não pode estar em branco.'
30
+ validates_presence_of :agencia, :conta_corrente, :convenio, :variacao_carteira, :documento_cedente,
31
+ message: 'não pode estar em branco.'
31
32
 
32
33
  validates_length_of :agencia, maximum: 4, message: 'deve ser igual a 4 digítos.'
33
34
  validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
@@ -88,7 +89,7 @@ module Brcobranca
88
89
 
89
90
  def complemento
90
91
  ret = ''
91
- ret << sequencial_remessa.to_s.rjust(7, '0') # sequencial da remessa (nao controlado pelo banco) 9[007]
92
+ ret += sequencial_remessa.to_s.rjust(7, '0') # sequencial da remessa (nao controlado pelo banco) 9[007]
92
93
  ret << ''.ljust(22, ' ') # complemento (brancos) X[022]
93
94
  ret << convenio_lider.to_s.rjust(7, '0') # numero do convenio lider (opcional) 9[007]
94
95
  ret << ''.ljust(258, ' ') # complemento (brancos) X[258]
@@ -98,7 +99,7 @@ module Brcobranca
98
99
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
99
100
 
100
101
  detalhe = '7' # identificacao do registro 9[1] 001 a 001
101
- detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02] 002 a 003
102
+ detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02] 002 a 003
102
103
  detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14] 004 a 017
103
104
  detalhe << agencia # agencia 9[04] 018 a 021
104
105
  detalhe << agencia_dv.to_s # digito agencia X[01] 022 a 022
@@ -118,7 +119,7 @@ module Brcobranca
118
119
  detalhe << '000000' # numero do bordero (zeros) 9[06] 096 a 101
119
120
  detalhe << tipo_cobranca.to_s.ljust(5, ' ') # tipo de cobranca 9[05] 102 a 106
120
121
  detalhe << carteira # carteira 9[02] 107 a 108
121
- detalhe << '01' # comando (01 = registro de titulo) 9[02] 109 a 110
122
+ detalhe << pagamento.identificacao_ocorrencia # comando / ocorrência 9[02] 109 a 110
122
123
  detalhe << pagamento.nosso_numero.to_s.rjust(10, '0') # numero atribuido pela empresa X[10] 111 a 120
123
124
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data de vencimento 9[06] 121 a 126
124
125
  detalhe << pagamento.formata_valor # valor do titulo 9[13] 127 a 139
@@ -152,11 +153,10 @@ module Brcobranca
152
153
 
153
154
  def monta_detalhe_multa(pagamento, sequencial)
154
155
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
155
- return false if %w[0 9].include?(pagamento.codigo_multa)
156
156
 
157
157
  detalhe = '5'
158
- detalhe << '99' # Tipo de Serviço: “99” (Cobrança de Multa) 9[02] 002 a 003
159
- detalhe << '2' # código da multa 9[01] 004 a 004
158
+ detalhe += '99' # Tipo de Serviço: “99” (Cobrança de Multa) 9[02] 002 a 003
159
+ detalhe << pagamento.codigo_multa # código da multa 9[01] 004 a 004
160
160
  detalhe << pagamento.formata_data_multa # Data de Inicio da Cobrança da Multa 9[06] 005 a 010
161
161
  detalhe << pagamento.formata_valor_multa(12) # percentual multa 9[12] 011 a 022
162
162
  detalhe << ''.rjust(372, ' ') # brancos 9[372] 023 a 394
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
@@ -14,7 +15,7 @@ module Brcobranca
14
15
  # Nova instancia do Banco do Nordeste
15
16
  def initialize(campos = {})
16
17
  campos = {
17
- aceite: 'N',
18
+ aceite: 'N'
18
19
  }.merge!(campos)
19
20
 
20
21
  super(campos)
@@ -68,8 +69,7 @@ module Brcobranca
68
69
  #
69
70
  # @return [String]
70
71
  #
71
- def complemento
72
- end
72
+ def complemento; end
73
73
 
74
74
  # Codigo da carteira de acordo com a documentacao do Banco do Nordeste
75
75
  #
@@ -80,25 +80,27 @@ module Brcobranca
80
80
  end
81
81
 
82
82
  def monta_nosso_numero(pagamento)
83
- return nosso_numero.rjust(12, "0") if carteira == "3"
83
+ return nosso_numero.rjust(12, '0') if carteira == '3'
84
84
 
85
- formacao = "#{carteira}#{pagamento.nosso_numero.to_s.rjust(6, "0")}#{cod_banco}"
85
+ formacao = "#{carteira}#{pagamento.nosso_numero.to_s.rjust(6, '0')}#{cod_banco}"
86
86
 
87
- formacao << formacao.modulo10.to_s
87
+ formacao += formacao.modulo10.to_s
88
88
  formacao << formacao.modulo11(
89
89
  multiplicador: (2..7).to_a,
90
- mapeamento: { 10 => 0, 11 => 0}
90
+ mapeamento: { 10 => 0, 11 => 0 }
91
91
  ) { |total| 11 - (total % 11) }.to_s
92
92
  end
93
93
 
94
94
  def codigo_tipo_juros(pagamento)
95
- return "50" if pagamento.valor_mora.to_f > 0.0
96
- "00"
95
+ return '50' if pagamento.valor_mora.to_f > 0.0
96
+
97
+ '00'
97
98
  end
98
99
 
99
100
  def codigo_tipo_desconto(pagamento)
100
- return "52" if pagamento.valor_desconto.to_f > 0.0
101
- "00"
101
+ return '52' if pagamento.valor_desconto.to_f > 0.0
102
+
103
+ '00'
102
104
  end
103
105
 
104
106
  # Dígito verificador do nosso número.
@@ -106,8 +108,7 @@ module Brcobranca
106
108
  # @param nosso_numero
107
109
  #
108
110
  # @return [String] 1 caracteres numéricos.
109
- def digito_nosso_numero(nosso_numero)
110
- end
111
+ def digito_nosso_numero(nosso_numero); end
111
112
 
112
113
  # Detalhe do arquivo
113
114
  #
@@ -118,11 +119,11 @@ module Brcobranca
118
119
  #
119
120
  # @return [String]
120
121
  #
121
- def monta_detalhe(pagamento, sequencial)
122
+ def monta_detalhe(pagamento, _sequencial)
122
123
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
123
124
 
124
125
  detalhe = '01' # identificacao transacao 9[02]
125
- detalhe << agencia # agencia 9[03]
126
+ detalhe += agencia # agencia 9[03]
126
127
  detalhe << conta_corrente # conta corrente 9[07]
127
128
  detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
128
129
  detalhe << pagamento.nome_sacado.format_size(35) # nome do pagador X[35]
@@ -131,16 +132,16 @@ module Brcobranca
131
132
  detalhe << pagamento.uf_sacado # uf do pagador X[02]
132
133
  detalhe << pagamento.cep_sacado # cep do pagador 9[08]
133
134
  detalhe << pagamento.identificacao_sacado(false).to_s # tipo de pessoa 9[01]
134
- detalhe << pagamento.documento_ou_numero.to_s.rjust(13, "0") # seu numero 9[13]
135
+ detalhe << pagamento.documento_ou_numero.to_s.rjust(13, '0') # seu numero 9[13]
135
136
  detalhe << codigo_carteira # categoria de cobranca 9[01]
136
137
  detalhe << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao 9[08]
137
- detalhe << "21" # tipo do documento 9[02]
138
- detalhe << "0" # código da natureza 9[01]
139
- detalhe << "0" # código da cond. pagamento 9[02]
140
- detalhe << "02" # código da moeda 9[02]
138
+ detalhe << '21' # tipo do documento 9[02]
139
+ detalhe << '0' # código da natureza 9[01]
140
+ detalhe << '0' # código da cond. pagamento 9[02]
141
+ detalhe << '02' # código da moeda 9[02]
141
142
  detalhe << cod_banco # código do banco 9[03]
142
- detalhe << agencia.rjust(4, "0") # código da agênica 9[04]
143
- detalhe << ''.rjust(30, " ") # praca de cobranca X[30]
143
+ detalhe << agencia.rjust(4, '0') # código da agênica 9[04]
144
+ detalhe << ''.rjust(30, ' ') # praca de cobranca X[30]
144
145
  detalhe << pagamento.data_vencimento.strftime('%d%m%Y') # data do vencimento 9[08]
145
146
  detalhe << pagamento.formata_valor(14) # valor do documento 9[14]
146
147
  detalhe << monta_nosso_numero(pagamento) # nosso numero 9[12]
@@ -150,11 +151,11 @@ module Brcobranca
150
151
  detalhe << codigo_tipo_desconto(pagamento) # codigo tipo desconto 9[02]
151
152
  detalhe << pagamento.formata_data_desconto('%d%m%Y') # data limite para desconto 9[08]
152
153
  detalhe << pagamento.formata_valor_desconto(14) # valor do desconto 9[14]
153
- detalhe << "00" # primeira instrucao 9[02]
154
- detalhe << "00" # prazo da instrucao 9[02]
155
- detalhe << "00" # segunda instrucao 9[02]
156
- detalhe << "00" # prazo da instrucao 9[02]
157
- detalhe << "00000" # taxa referente a instrucao 9[05]
154
+ detalhe << '00' # primeira instrucao 9[02]
155
+ detalhe << '00' # prazo da instrucao 9[02]
156
+ detalhe << '00' # segunda instrucao 9[02]
157
+ detalhe << '00' # prazo da instrucao 9[02]
158
+ detalhe << '00000' # taxa referente a instrucao 9[05]
158
159
  detalhe << empresa_mae.format_size(40) # emitente do titulo X[40]
159
160
  detalhe << ''.rjust(40, ' ') # mensagem livre X[40]
160
161
  detalhe << ''.rjust(32, ' ') # branco X[32]
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
@@ -14,7 +15,7 @@ module Brcobranca
14
15
  validates_length_of :documento_cedente, minimum: 11, maximum: 14, message: 'deve ter entre 11 e 14 dígitos.'
15
16
  validates_length_of :carteira, maximum: 2, message: 'deve ter 2 dígitos.'
16
17
  validates_length_of :digito_conta, maximum: 1, message: 'deve ter 1 dígito.'
17
- validates_inclusion_of :carteira, in: %w(21 41 51), message: 'não é válida.'
18
+ validates_inclusion_of :carteira, in: %w[21 41 51], message: 'não é válida.'
18
19
 
19
20
  # Nova instancia do Banco do Nordeste
20
21
  def initialize(campos = {})
@@ -74,11 +75,11 @@ module Brcobranca
74
75
  # @return [String]
75
76
  #
76
77
  def codigo_carteira
77
- return "I" if carteira.to_s == "51"
78
+ return 'I' if carteira.to_s == '51'
78
79
 
79
80
  carteiras = {
80
- "1" => { "21" => "1", "41" => "2" }, # 1 - Emitido pelo banco
81
- "2" => { "21" => "4", "41" => "5" } # 2 - Emitido pelo cliente
81
+ '1' => { '21' => '1', '41' => '2' }, # 1 - Emitido pelo banco
82
+ '2' => { '21' => '4', '41' => '5' } # 2 - Emitido pelo cliente
82
83
  }
83
84
 
84
85
  carteiras[emissao_boleto.to_s][carteira.to_s]
@@ -109,14 +110,14 @@ module Brcobranca
109
110
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
110
111
 
111
112
  detalhe = '1' # identificacao transacao 9[01]
112
- detalhe << ''.rjust(16, ' ') # filler [16]
113
+ detalhe += ''.rjust(16, ' ') # filler [16]
113
114
  detalhe << agencia # agencia 9[04]
114
115
  detalhe << ''.rjust(2, '0') # complemento de registro (zeros) 9[02]
115
116
  detalhe << conta_corrente # conta corrente 9[07]
116
117
  detalhe << digito_conta # dac 9[01]
117
118
  detalhe << pagamento.formata_percentual_multa.to_s[0..1] # taxa - multa [02]
118
119
  detalhe << ''.rjust(4, ' ') # filler [04]
119
- detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
120
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
120
121
  detalhe << pagamento.nosso_numero.to_s.rjust(7, '0') # nosso numero 9[07]
121
122
  detalhe << digito_nosso_numero(pagamento.nosso_numero).to_s # dv nosso numero 9[01]
122
123
  detalhe << ''.rjust(10, '0') # numero do contrato [10]
@@ -125,7 +126,7 @@ module Brcobranca
125
126
  detalhe << ''.rjust(8, ' ') # filler [08]
126
127
  detalhe << codigo_carteira # codigo da carteira X[01]
127
128
  detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
128
- detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
129
+ detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
129
130
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
130
131
  detalhe << pagamento.formata_valor # valor do documento 9[13]
131
132
  detalhe << cod_banco # codigo banco 9[03]
@@ -149,8 +150,8 @@ module Brcobranca
149
150
  detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
150
151
  detalhe << pagamento.uf_sacado # uf do pagador X[02]
151
152
  detalhe << pagamento.nome_avalista.format_size(40) # nome do sacador/avalista X[30]
152
- detalhe << "99" # prazo para protesto [02]
153
- detalhe << "0" # código da moeda X[01]
153
+ detalhe << '99' # prazo para protesto [02]
154
+ detalhe << '0' # código da moeda X[01]
154
155
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
155
156
  detalhe
156
157
  end
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
@@ -71,17 +72,17 @@ module Brcobranca
71
72
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
72
73
 
73
74
  detalhe = '1' # identificação do registro 9[01] 001 a 001
74
- detalhe << ''.rjust(16, ' ') # brancos 9[16] 002 a 017
75
+ detalhe += ''.rjust(16, ' ') # brancos 9[16] 002 a 017
75
76
  detalhe << codigo_cedente.rjust(13, ' ') # código do cedente X[13] 018 a 030
76
77
  detalhe << ''.rjust(7, ' ') # brancos X[07] 031 a 037
77
- detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ')# num. controle X[25] 038 a 062
78
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # num. controle X[25] 038 a 062
78
79
  detalhe << pagamento.nosso_numero.to_s.rjust(8, '0') # identificação do título (nosso número) 9[08] 063 a 070
79
80
  detalhe << digito_nosso_numero(pagamento.nosso_numero) # dígitos de conferência do nosso número (dv) 9[02] 071 a 072
80
81
  detalhe << ''.rjust(32, ' ') # mensagem no bloqueto X[32] 073 a 104
81
82
  detalhe << ''.rjust(3, ' ') # brancos X[03] 105 a 107
82
83
  detalhe << carteira # carteira 9[01] 108 a 108
83
84
  detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02] 109 a 110
84
- detalhe << pagamento.documento_ou_numero.to_s.ljust(10, ' ')# numero do documento alfanum. X[10] 111 a 120
85
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(10, ' ') # numero do documento alfanum. X[10] 111 a 120
85
86
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data de vencimento 9[06] 121 a 126
86
87
  detalhe << pagamento.formata_valor # valor do titulo 9[13] 127 a 139
87
88
  detalhe << cod_banco # banco encarregado 9[03] 140 a 142
@@ -118,8 +119,8 @@ module Brcobranca
118
119
  end
119
120
 
120
121
  def monta_trailer(sequencial)
121
- trailer = "9"
122
- trailer << ''.rjust(26, ' ') # brancos X[26] 002 a 027
122
+ trailer = '9'
123
+ trailer += ''.rjust(26, ' ') # brancos X[26] 002 a 027
123
124
  trailer << valor_titulos_carteira(13) # total geral/valores dos títulos 9[13] 028 a 040
124
125
  trailer << ''.rjust(354, ' ') # brancos X[354] 041 a 394
125
126
  trailer << sequencial.to_s.rjust(6, '0') # sequencial 9[06] 395 a 400
@@ -129,26 +130,28 @@ module Brcobranca
129
130
  private
130
131
 
131
132
  def codigo_primeira_instrucao(pagamento)
132
- return "18" if pagamento.percentual_multa.to_f > 0.00
133
+ return '18' if pagamento.percentual_multa.to_f > 0.00
134
+
133
135
  pagamento.cod_primeira_instrucao
134
136
  end
135
137
 
136
138
  def tipo_mora(pagamento)
137
139
  return ' ' if pagamento.tipo_mora == '3'
140
+
138
141
  pagamento.tipo_mora
139
142
  end
140
143
 
141
144
  def formata_percentual_multa(pagamento)
142
- raise ValorInvalido, 'Deve ser um Float' if !(pagamento.percentual_multa.to_s =~ /\./)
145
+ raise ValorInvalido, 'Deve ser um Float' unless /\./.match?(pagamento.percentual_multa.to_s)
143
146
 
144
- sprintf('%.1f', pagamento.percentual_multa).delete('.').rjust(3, '0')
147
+ format('%.1f', pagamento.percentual_multa).delete('.').rjust(3, '0')
145
148
  end
146
149
 
147
150
  def formata_valor_mora(tamanho, pagamento)
148
151
  return ''.rjust(tamanho, ' ') if pagamento.tipo_mora == '3'
152
+
149
153
  pagamento.formata_valor_mora(tamanho)
150
154
  end
151
-
152
155
  end
153
156
  end
154
157
  end
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
@@ -54,7 +55,8 @@ module Brcobranca
54
55
  # Este metodo deve ser sobrescrevido na classe do banco
55
56
  #
56
57
  def monta_detalhe(_pagamento, _sequencial)
57
- raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
58
+ raise Brcobranca::NaoImplementado,
59
+ 'Sobreescreva este método na classe referente ao banco que você esta criando'
58
60
  end
59
61
 
60
62
  # Gera o arquivo com os registros
@@ -69,17 +71,24 @@ module Brcobranca
69
71
  pagamentos.each do |pagamento|
70
72
  contador += 1
71
73
  ret << monta_detalhe(pagamento, contador)
72
- if pagamento.codigo_multa.to_i > 0 && self.respond_to?(:monta_detalhe_multa)
74
+ if pagamento.codigo_multa.to_i.positive? && respond_to?(:monta_detalhe_multa)
73
75
  contador += 1
74
76
  ret << monta_detalhe_multa(pagamento, contador)
75
77
  end
78
+
79
+ # Adiciona registro de desconto adicional
80
+ if pagamento.valor_segundo_desconto.to_f.positive? && respond_to?(:monta_descontos_adicionais)
81
+ contador += 1
82
+ ret << monta_descontos_adicionais(pagamento, contador)
83
+ end
76
84
  end
77
85
  ret << monta_trailer(contador + 1)
78
86
 
79
- remittance = ret.join("\n").to_ascii.upcase
87
+ remittance = ret.join("\n").remove_accents.upcase
80
88
  remittance << "\n"
81
89
 
82
- remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding, crlf_newline: true)
90
+ remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding,
91
+ crlf_newline: true)
83
92
  end
84
93
 
85
94
  # Informacoes referentes a conta do cedente
@@ -87,7 +96,8 @@ module Brcobranca
87
96
  # Este metodo deve ser sobrescrevido na classe do banco
88
97
  #
89
98
  def info_conta
90
- raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
99
+ raise Brcobranca::NaoImplementado,
100
+ 'Sobreescreva este método na classe referente ao banco que você esta criando'
91
101
  end
92
102
 
93
103
  # Numero do banco na camara de compensacao
@@ -95,7 +105,8 @@ module Brcobranca
95
105
  # Este metodo deve ser sobrescrevido na classe do banco
96
106
  #
97
107
  def cod_banco
98
- raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
108
+ raise Brcobranca::NaoImplementado,
109
+ 'Sobreescreva este método na classe referente ao banco que você esta criando'
99
110
  end
100
111
 
101
112
  # Nome por extenso do banco cobrador
@@ -103,7 +114,8 @@ module Brcobranca
103
114
  # Este metodo deve ser sobrescrevido na classe do banco
104
115
  #
105
116
  def nome_banco
106
- raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
117
+ raise Brcobranca::NaoImplementado,
118
+ 'Sobreescreva este método na classe referente ao banco que você esta criando'
107
119
  end
108
120
 
109
121
  # Complemento do registro header
@@ -111,7 +123,8 @@ module Brcobranca
111
123
  # Este metodo deve ser sobrescrevido na classe do banco
112
124
  #
113
125
  def complemento
114
- raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
126
+ raise Brcobranca::NaoImplementado,
127
+ 'Sobreescreva este método na classe referente ao banco que você esta criando'
115
128
  end
116
129
  end
117
130
  end