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 Cnab400
@@ -8,7 +9,7 @@ module Brcobranca
8
9
 
9
10
  validates_presence_of :agencia, :conta_corrente, message: 'não pode estar em branco.'
10
11
  validates_presence_of :codigo_empresa, :sequencial_remessa,
11
- :digito_conta, message: 'não pode estar em branco.'
12
+ :digito_conta, message: 'não pode estar em branco.'
12
13
  validates_length_of :codigo_empresa, maximum: 20, message: 'deve ser menor ou igual a 20 dígitos.'
13
14
  validates_length_of :agencia, maximum: 5, message: 'deve ter 5 dígitos.'
14
15
  validates_length_of :conta_corrente, maximum: 7, message: 'deve ter 7 dígitos.'
@@ -51,7 +52,7 @@ module Brcobranca
51
52
  def identificacao_empresa
52
53
  # identificacao da empresa no banco
53
54
  identificacao = '0' # vazio [1]
54
- identificacao << carteira.to_s.rjust(3, '0') # carteira [3]
55
+ identificacao += carteira.to_s.rjust(3, '0') # carteira [3]
55
56
  identificacao << agencia # codigo da agencia (sem dv) [5]
56
57
  identificacao << conta_corrente # codigo da conta [7]
57
58
  identificacao << digito_conta # digito da conta [1]
@@ -71,6 +72,7 @@ module Brcobranca
71
72
  def formata_endereco_sacado(pgto)
72
73
  endereco = "#{pgto.endereco_sacado}, #{pgto.cidade_sacado}/#{pgto.uf_sacado}"
73
74
  return endereco.ljust(40, ' ') if endereco.size <= 40
75
+
74
76
  "#{pgto.endereco_sacado[0..19]} #{pgto.cidade_sacado[0..14]}/#{pgto.uf_sacado}".format_size(40)
75
77
  end
76
78
 
@@ -78,13 +80,13 @@ module Brcobranca
78
80
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
79
81
 
80
82
  detalhe = '1' # identificacao do registro 9[01] 001 a 001
81
- detalhe << ''.rjust(5, '0') # agencia de debito (op) 9[05] 002 a 006
83
+ detalhe += ''.rjust(5, '0') # agencia de debito (op) 9[05] 002 a 006
82
84
  detalhe << ''.rjust(1, '0') # digito da agencia de debito (op) X[01] 007 a 007
83
85
  detalhe << ''.rjust(5, '0') # razao da conta corrente de debito (op) 9[05] 008 a 012
84
86
  detalhe << ''.rjust(7, '0') # conta corrente (op) 9[07] 013 a 019
85
87
  detalhe << ''.rjust(1, '0') # digito da conta corrente (op) X[01] 020 a 020
86
88
  detalhe << identificacao_empresa # identficacao da empresa X[17] 021 a 037
87
- detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # num. controle X[25] 038 a 062
89
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # num. controle X[25] 038 a 062
88
90
  detalhe << ''.rjust(3, '0') # codigo do banco (debito automatico apenas) 9[03] 063 a 065
89
91
  detalhe << pagamento.codigo_multa # campo da multa (0 = sem, 2 = com) 9[01] 066 a 066 *
90
92
  detalhe << pagamento.formata_percentual_multa # percentual multa 9[04] 067 a 070 *
@@ -124,6 +126,29 @@ module Brcobranca
124
126
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro do arquivo 9[06] 395 a 400
125
127
  detalhe
126
128
  end
129
+
130
+ def monta_descontos_adicionais(pagamento, sequencial)
131
+ raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
132
+
133
+ detalhe = '2' # identificacao do registro 9[01] 001 a 001
134
+ detalhe += ''.rjust(80, ' ') # mensagem 1 X[80] 002 a 081
135
+ detalhe << ''.rjust(80, ' ') # mensagem 2 X[80] 082 a 161
136
+ detalhe << ''.rjust(80, ' ') # mensagem 3 X[80] 162 a 241
137
+ detalhe << ''.rjust(80, ' ') # mensagem 4 X[80] 242 a 321
138
+ detalhe << pagamento.formata_data_segundo_desconto # data limite para o terceiro desconto 9[06] 322 a 327
139
+ detalhe << pagamento.formata_valor_segundo_desconto # valor do segundo desconto 9[13] 328 a 340
140
+ detalhe << pagamento.formata_data_terceiro_desconto # data limite para o terceiro desconto 9[06] 341 a 346
141
+ detalhe << pagamento.formata_valor_terceiro_desconto # valor do terceiro desconto 9[13] 347 a 359
142
+ detalhe << ''.rjust(7, ' ') # reserva X[07] 360 a 366
143
+ detalhe << carteira.to_s.rjust(3, '0') # carteira 9[03] 367 a 369
144
+ detalhe << agencia # codigo da agencia (sem dv) 9[05] 370 a 374
145
+ detalhe << conta_corrente # codigo da conta 9[07] 375 a 381
146
+ detalhe << digito_conta # digito da conta X[01] 382 a 382
147
+ detalhe << pagamento.nosso_numero.to_s.rjust(11, '0') # identificacao do titulo (nosso numero) 9[11] 383 a 393
148
+ detalhe << digito_nosso_numero(pagamento.nosso_numero).to_s # digito de conferencia do nosso numero (dv) X[01] 394 a 394
149
+ detalhe << sequencial.to_s.rjust(6, '0') # numero do registro do arquivo 9[06] 395 a 400
150
+ detalhe
151
+ end
127
152
  end
128
153
  end
129
154
  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
@@ -61,10 +62,10 @@ module Brcobranca
61
62
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
62
63
 
63
64
  detalhe = '1' # identificacao transacao 9[01]
64
- detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
65
+ detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
65
66
  detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
66
67
  detalhe << portfolio # portfolio X[20]
67
- detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
68
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
68
69
  detalhe << pagamento.especie_titulo # espécie do título 9[02] - 00 = DMI – Duplicata Mercantil por Indicação, 02 = DM – Duplicata Mercantil
69
70
  detalhe << pagamento.nosso_numero.to_s.rjust(12, '0') # nosso numero 9[12]
70
71
  detalhe << ''.rjust(6, ' ') # brancos X[06]
@@ -74,7 +75,7 @@ module Brcobranca
74
75
  detalhe << '000' # parcela 9[03] - Só preencher se o banco for imprimir e enviar e for um carnê
75
76
  detalhe << carteira # codigo da carteira X[01] - Código 1 = Cobrança Simples, Código 2 = Cobrança Caucionada
76
77
  detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
77
- detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
78
+ detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
78
79
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
79
80
  detalhe << pagamento.formata_valor # valor do documento 9[13]
80
81
  detalhe << cod_banco # codigo banco 9[03]
@@ -101,7 +102,7 @@ module Brcobranca
101
102
  # IMPORTANTE: essa instrução somente poderá ser utilizada após assinatura de contrato específico para o produto.
102
103
  # 09 = DEVOLVER: esta é a instrução de BAIXA quando esta instrução for dada também deverá ser preenchida a posição 159/160
103
104
  # 10 = SUSTAR PROTESTO: instrução utilizada para títulos que NÃO estejam em cartório
104
- detalhe << '00' # Instrução para o título 9[02]
105
+ detalhe << '00' # Instrução para o título 9[02]
105
106
 
106
107
  # Quando posição 157/158 (Instrução para título) conter instrução 06 ou 09,
107
108
  # este campo deverá conter a quantidade de dias válidos para execução da instrução.
@@ -1,11 +1,13 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
5
6
  class Credisis < Brcobranca::Remessa::Cnab400::Base
6
7
  attr_accessor :codigo_cedente, :documento_cedente, :convenio
7
8
 
8
- validates_presence_of :agencia, :conta_corrente, :codigo_cedente, :digito_conta, message: 'não pode estar em branco.'
9
+ validates_presence_of :agencia, :conta_corrente, :codigo_cedente, :digito_conta,
10
+ message: 'não pode estar em branco.'
9
11
  validates_length_of :agencia, maximum: 4, message: 'deve ter 4 dígitos.'
10
12
  validates_length_of :codigo_cedente, maximum: 4, message: 'deve ter 4 dígitos.'
11
13
  validates_length_of :conta_corrente, maximum: 8, message: 'deve ter 8 dígitos.'
@@ -86,17 +88,17 @@ module Brcobranca
86
88
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
87
89
 
88
90
  detalhe = '1' # identificacao transacao 9[01]
89
- detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
91
+ detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
90
92
  detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
91
93
  detalhe << agencia # agencia 9[04]
92
94
  detalhe << ''.rjust(1, ' ') # brancos X[01]
93
95
  detalhe << conta_corrente # conta corrente 9[08]
94
96
  detalhe << digito_conta # dac 9[01]
95
97
  detalhe << ''.rjust(6, ' ') # complemento do registro (brancos) X[06]
96
- detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
98
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
97
99
  detalhe << formata_nosso_numero(pagamento.nosso_numero.to_s) # nosso numero 9[11]
98
100
  detalhe << ''.rjust(37, ' ') # brancos X[37]
99
- detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
101
+ detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
100
102
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento A[06]
101
103
  detalhe << pagamento.formata_valor # valor do documento 9[13]
102
104
  detalhe << ''.rjust(11, ' ') # brancos X[11]
@@ -1,10 +1,11 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
5
6
  class Itau < Brcobranca::Remessa::Cnab400::Base
6
- VALOR_EM_REAIS = "1"
7
- VALOR_EM_PERCENTUAL = "2"
7
+ VALOR_EM_REAIS = '1'
8
+ VALOR_EM_PERCENTUAL = '2'
8
9
 
9
10
  validates_presence_of :agencia, :conta_corrente, message: 'não pode estar em branco.'
10
11
  validates_presence_of :documento_cedente, :digito_conta, message: 'não pode estar em branco.'
@@ -73,6 +74,7 @@ module Brcobranca
73
74
  return 'U' if carteira.to_s == '150'
74
75
  return '1' if carteira.to_s == '191'
75
76
  return 'E' if carteira.to_s == '147'
77
+
76
78
  'I'
77
79
  end
78
80
 
@@ -89,7 +91,7 @@ module Brcobranca
89
91
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
90
92
 
91
93
  detalhe = '1' # identificacao transacao 9[01]
92
- detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
94
+ detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
93
95
  detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
94
96
  detalhe << agencia # agencia 9[04]
95
97
  detalhe << ''.rjust(2, '0') # complemento de registro (zeros) 9[02]
@@ -109,7 +111,7 @@ module Brcobranca
109
111
  detalhe << pagamento.formata_valor # valor do documento 9[13]
110
112
  detalhe << cod_banco # codigo banco 9[03]
111
113
  detalhe << ''.rjust(5, '0') # agencia cobradora - deixar zero 9[05]
112
- detalhe << '99' # especie do titulo X[02]
114
+ detalhe << pagamento.especie_titulo # especie do titulo X[02]
113
115
  detalhe << aceite # aceite (A/N) X[01]
114
116
  detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06]
115
117
  detalhe << pagamento.cod_primeira_instrucao # 1a instrucao - deixar zero X[02]
@@ -139,12 +141,13 @@ module Brcobranca
139
141
 
140
142
  def prazo_instrucao(pagamento)
141
143
  return '03' unless pagamento.cod_primeira_instrucao == '09'
144
+
142
145
  pagamento.dias_protesto.rjust(2, '0')
143
146
  end
144
147
 
145
148
  def monta_detalhe_multa(pagamento, sequencial)
146
149
  detalhe = '2'
147
- detalhe << pagamento.codigo_multa
150
+ detalhe += pagamento.codigo_multa
148
151
  detalhe << pagamento.data_vencimento.strftime('%d%m%Y')
149
152
  detalhe << pagamento.formata_percentual_multa(13)
150
153
  detalhe << ''.rjust(371, ' ')
@@ -1,9 +1,9 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  module Brcobranca
3
4
  module Remessa
4
5
  module Cnab400
5
6
  class Santander < Brcobranca::Remessa::Cnab400::Base
6
-
7
7
  # Código de Transmissão
8
8
  # Consultar seu gerente para pegar esse código. Geralmente está no e-mail enviado pelo banco.
9
9
  attr_accessor :codigo_transmissao
@@ -48,16 +48,15 @@ module Brcobranca
48
48
  # @return [String]
49
49
  #
50
50
  def zeros
51
- "".ljust(16, "0")
51
+ ''.ljust(16, '0')
52
52
  end
53
53
 
54
-
55
54
  # Complemento do header
56
55
  #
57
56
  # @return [String]
58
57
  #
59
58
  def complemento
60
- "".ljust(275, " ")
59
+ ''.ljust(275, ' ')
61
60
  end
62
61
 
63
62
  # Numero da versão da remessa
@@ -65,7 +64,7 @@ module Brcobranca
65
64
  # @return [String]
66
65
  #
67
66
  def versao
68
- "058"
67
+ '058'
69
68
  end
70
69
 
71
70
  def monta_header
@@ -84,7 +83,8 @@ module Brcobranca
84
83
  # complemento registro [275]
85
84
  # versao [3]
86
85
  # num. sequencial [6] 000001
87
- "01REMESSA01COBRANCA #{info_conta}#{empresa_mae[0..29].to_s.ljust(30, ' ')}#{cod_banco}#{nome_banco}#{data_geracao}#{zeros}#{complemento}#{versao}000001"
86
+ "01REMESSA01COBRANCA #{info_conta}#{empresa_mae[0..29].to_s.ljust(30,
87
+ ' ')}#{cod_banco}#{nome_banco}#{data_geracao}#{zeros}#{complemento}#{versao}000001"
88
88
  end
89
89
 
90
90
  # Detalhe do arquivo
@@ -100,10 +100,10 @@ module Brcobranca
100
100
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
101
101
 
102
102
  detalhe = '1' # identificacao transacao 9[01]
103
- detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
103
+ detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
104
104
  detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
105
105
  detalhe << codigo_transmissao # Código de Transmissão 9[20]
106
- detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # identificacao do tit. na empresa X[25]
106
+ detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # identificacao do tit. na empresa X[25]
107
107
  detalhe << pagamento.nosso_numero.to_s.rjust(8, '0') # nosso numero 9[8]
108
108
  detalhe << pagamento.formata_data_segundo_desconto # data limite para o segundo desconto 9[06]
109
109
  detalhe << ''.rjust(1, ' ') # brancos X[1]
@@ -121,7 +121,7 @@ module Brcobranca
121
121
  # 5 = RÁPIDA COM REGISTRO
122
122
  # (BLOQUETE EMITIDO PELO CLIENTE) 6 = CAUCIONADA RAPIDA
123
123
  # 7 = DESCONTADA ELETRÔNICA
124
- detalhe << codigo_carteira # codigo da carteira 9[01]
124
+ detalhe << codigo_carteira # codigo da carteira 9[01]
125
125
 
126
126
  # Código da ocorrência:
127
127
  # 01 = ENTRADA DE TÍTULO
@@ -133,8 +133,8 @@ module Brcobranca
133
133
  # 08 = ALTERAÇÃO DO SEU NÚMERO
134
134
  # 09 = PROTESTAR
135
135
  # 18 = SUSTAR PROTESTO
136
- detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
137
- detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
136
+ detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
137
+ detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
138
138
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
139
139
  detalhe << pagamento.formata_valor # valor do documento 9[13]
140
140
  detalhe << cod_banco # codigo banco 9[03]
@@ -188,11 +188,13 @@ module Brcobranca
188
188
 
189
189
  def identificador_movimento_complemento
190
190
  return 'I' if conta_padrao_novo?
191
+
191
192
  ''.rjust(1, ' ')
192
193
  end
193
194
 
194
195
  def movimento_complemento
195
196
  return "#{conta_corrente[8]}#{digito_conta}" if conta_padrao_novo?
197
+
196
198
  ''.rjust(2, ' ')
197
199
  end
198
200
 
@@ -205,8 +207,8 @@ module Brcobranca
205
207
  # @return [String]
206
208
  #
207
209
  def total_titulos
208
- total = sprintf "%.2f", pagamentos.map(&:valor).inject(:+)
209
- total.to_s.somente_numeros.rjust(13, "0")
210
+ total = format '%.2f', pagamentos.sum(&:valor)
211
+ total.to_s.somente_numeros.rjust(13, '0')
210
212
  end
211
213
 
212
214
  # Trailer do arquivo remessa
@@ -223,7 +225,7 @@ module Brcobranca
223
225
  # valor total titulos [13]
224
226
  # zeros [374] 0
225
227
  # num. sequencial [6]
226
- "9#{sequencial.to_s.rjust(6, '0')}#{total_titulos}#{''.rjust(374, '0')}#{sequencial.to_s.rjust(6, "0")}"
228
+ "9#{sequencial.to_s.rjust(6, '0')}#{total_titulos}#{''.rjust(374, '0')}#{sequencial.to_s.rjust(6, '0')}"
227
229
  end
228
230
  end
229
231
  end
@@ -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
@@ -7,20 +7,16 @@ module Brcobranca
7
7
  # convenio do cedente
8
8
  attr_accessor :convenio
9
9
 
10
- attr_accessor :modalidade_carteira
10
+ attr_accessor :modalidade_carteira, :distribuicao_boleto, :tipo_formulario
11
11
  # identificacao da emissao do boleto (attr na classe base)
12
12
  # opcoes:
13
13
  # ‘1’ = Banco Emite
14
14
  # ‘2’ = Cliente Emite
15
-
16
- attr_accessor :distribuicao_boleto
17
15
  #
18
16
  # identificacao da distribuicao do boleto (attr na classe base)
19
17
  # opcoes:
20
18
  # ‘1’ = Banco distribui
21
19
  # ‘2’ = Cliente distribui
22
-
23
- attr_accessor :tipo_formulario
24
20
  # Tipo Formulário - 01 posição (15 a 15):
25
21
  # "1" -auto-copiativo
26
22
  # "3" -auto-envelopável
@@ -30,7 +26,8 @@ module Brcobranca
30
26
  # convenio do cedente
31
27
  attr_accessor :convenio
32
28
 
33
- validates_presence_of :agencia, :conta_corrente, :carteira, :convenio, :modalidade_carteira, :tipo_formulario, :digito_conta, :sequencial_remessa, :documento_cedente, message: 'não pode estar em branco.'
29
+ validates_presence_of :agencia, :conta_corrente, :carteira, :convenio, :modalidade_carteira, :tipo_formulario,
30
+ :digito_conta, :sequencial_remessa, :documento_cedente, message: 'não pode estar em branco.'
34
31
  # Remessa 400 - 8 digitos
35
32
  # Remessa 240 - 12 digitos
36
33
  validates_length_of :conta_corrente, is: 8, message: 'deve ter 8 dígitos.'
@@ -131,7 +128,7 @@ module Brcobranca
131
128
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?
132
129
 
133
130
  detalhe = '1' # identificacao transacao 9[01]
134
- detalhe << Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
131
+ detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
135
132
  detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
136
133
  detalhe << agencia # Prefixo da Cooperativa 9[4]
137
134
  detalhe << digito_agencia # Digito da Cooperativa 9[1]
@@ -185,8 +182,8 @@ module Brcobranca
185
182
  # 31 = Alteração de Outros Dados
186
183
  # 34 = Baixa - Pagamento Direto ao Beneficiário
187
184
 
188
- detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
189
- detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
185
+ detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
186
+ detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
190
187
  detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
191
188
  detalhe << pagamento.formata_valor # valor do documento 9[13]
192
189
  detalhe << cod_banco # codigo banco 9[03]