brcobranca 8.0.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -1
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +5 -3
  5. data/CHANGELOG.md +9 -0
  6. data/Gemfile +2 -2
  7. data/README.md +24 -12
  8. data/brcobranca.gemspec +0 -2
  9. data/lib/brcobranca.rb +43 -26
  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/cecred.eps +427 -0
  13. data/lib/brcobranca/arquivos/logos/cecred_carne.eps +427 -0
  14. data/lib/brcobranca/arquivos/logos/credisis.eps +5402 -0
  15. data/lib/brcobranca/arquivos/logos/credisis_carne.eps +5410 -0
  16. data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
  17. data/lib/brcobranca/boleto/banco_brasil.rb +21 -21
  18. data/lib/brcobranca/boleto/banco_brasilia.rb +96 -0
  19. data/lib/brcobranca/boleto/banco_nordeste.rb +4 -6
  20. data/lib/brcobranca/boleto/banestes.rb +7 -7
  21. data/lib/brcobranca/boleto/banrisul.rb +5 -5
  22. data/lib/brcobranca/boleto/base.rb +28 -22
  23. data/lib/brcobranca/boleto/bradesco.rb +6 -6
  24. data/lib/brcobranca/boleto/caixa.rb +11 -18
  25. data/lib/brcobranca/boleto/cecred.rb +86 -0
  26. data/lib/brcobranca/boleto/credisis.rb +124 -0
  27. data/lib/brcobranca/boleto/hsbc.rb +10 -27
  28. data/lib/brcobranca/boleto/itau.rb +9 -10
  29. data/lib/brcobranca/boleto/santander.rb +5 -6
  30. data/lib/brcobranca/boleto/sicoob.rb +5 -5
  31. data/lib/brcobranca/boleto/sicredi.rb +7 -7
  32. data/lib/brcobranca/boleto/template/rghost.rb +127 -80
  33. data/lib/brcobranca/boleto/template/rghost_carne.rb +9 -9
  34. data/lib/brcobranca/boleto/unicred.rb +126 -4
  35. data/lib/brcobranca/calculo_data.rb +3 -0
  36. data/lib/brcobranca/formatacao_string.rb +15 -5
  37. data/lib/brcobranca/remessa/base.rb +16 -9
  38. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +14 -13
  39. data/lib/brcobranca/remessa/cnab240/base.rb +252 -119
  40. data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +299 -0
  41. data/lib/brcobranca/remessa/cnab240/caixa.rb +61 -7
  42. data/lib/brcobranca/remessa/cnab240/cecred.rb +151 -0
  43. data/lib/brcobranca/remessa/cnab240/sicoob.rb +109 -123
  44. data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +94 -0
  45. data/lib/brcobranca/remessa/cnab240/sicredi.rb +177 -0
  46. data/lib/brcobranca/remessa/cnab240/unicred.rb +9 -0
  47. data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +14 -0
  48. data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +166 -0
  49. data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +4 -6
  50. data/lib/brcobranca/remessa/cnab400/banrisul.rb +155 -0
  51. data/lib/brcobranca/remessa/cnab400/base.rb +4 -4
  52. data/lib/brcobranca/remessa/cnab400/bradesco.rb +7 -8
  53. data/lib/brcobranca/remessa/cnab400/citibank.rb +3 -4
  54. data/lib/brcobranca/remessa/cnab400/credisis.rb +128 -0
  55. data/lib/brcobranca/remessa/cnab400/itau.rb +23 -6
  56. data/lib/brcobranca/remessa/cnab400/santander.rb +80 -65
  57. data/lib/brcobranca/remessa/cnab400/sicoob.rb +2 -2
  58. data/lib/brcobranca/remessa/cnab400/unicred.rb +143 -0
  59. data/lib/brcobranca/remessa/pagamento.rb +50 -14
  60. data/lib/brcobranca/retorno/base.rb +4 -4
  61. data/lib/brcobranca/retorno/cnab240/base.rb +11 -8
  62. data/lib/brcobranca/retorno/cnab240/caixa.rb +4 -0
  63. data/lib/brcobranca/retorno/cnab240/cecred.rb +102 -0
  64. data/lib/brcobranca/retorno/cnab240/santander.rb +35 -12
  65. data/lib/brcobranca/retorno/cnab240/sicoob.rb +8 -4
  66. data/lib/brcobranca/retorno/cnab240/sicredi.rb +79 -0
  67. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +127 -0
  68. data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +89 -0
  69. data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +112 -0
  70. data/lib/brcobranca/retorno/cnab400/banrisul.rb +42 -0
  71. data/lib/brcobranca/retorno/cnab400/base.rb +18 -7
  72. data/lib/brcobranca/retorno/cnab400/bradesco.rb +9 -3
  73. data/lib/brcobranca/retorno/cnab400/credisis.rb +115 -0
  74. data/lib/brcobranca/retorno/cnab400/itau.rb +10 -4
  75. data/lib/brcobranca/retorno/cnab400/santander.rb +57 -0
  76. data/lib/brcobranca/retorno/cnab400/unicred.rb +118 -0
  77. data/lib/brcobranca/retorno/retorno_cnab240.rb +7 -3
  78. data/lib/brcobranca/retorno/retorno_cnab400.rb +6 -77
  79. data/lib/brcobranca/util/date.rb +20 -0
  80. data/lib/brcobranca/util/errors.rb +76 -0
  81. data/lib/brcobranca/validations.rb +232 -0
  82. data/lib/brcobranca/version.rb +1 -1
  83. data/spec/arquivos/CNAB240CECRED.RET +10 -0
  84. data/spec/arquivos/CNAB240SANTANDER.RET +8 -26
  85. data/spec/arquivos/CNAB240SICREDI.CRT +8 -0
  86. data/spec/arquivos/CNAB400BANCOBRASILIA.RET +3 -0
  87. data/spec/arquivos/CNAB400BANCONORDESTE.RET +3 -0
  88. data/spec/arquivos/CNAB400BANRISUL.RET +3 -0
  89. data/spec/arquivos/CNAB400CREDISIS.RET +3 -0
  90. data/spec/arquivos/CNAB400SANTANDER.RET +54 -0
  91. data/spec/arquivos/CNAB400UNICRED.RET +3 -0
  92. data/spec/brcobranca/base_spec.rb +6 -4
  93. data/spec/brcobranca/boleto/banco_brasil_spec.rb +22 -22
  94. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +134 -0
  95. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +19 -19
  96. data/spec/brcobranca/boleto/banestes_spec.rb +19 -19
  97. data/spec/brcobranca/boleto/banrisul_spec.rb +14 -14
  98. data/spec/brcobranca/boleto/bradesco_spec.rb +13 -13
  99. data/spec/brcobranca/boleto/caixa_spec.rb +7 -7
  100. data/spec/brcobranca/boleto/cecred_spec.rb +147 -0
  101. data/spec/brcobranca/boleto/credisis_spec.rb +155 -0
  102. data/spec/brcobranca/boleto/hsbc_spec.rb +17 -37
  103. data/spec/brcobranca/boleto/itau_spec.rb +16 -16
  104. data/spec/brcobranca/boleto/santander_spec.rb +11 -11
  105. data/spec/brcobranca/boleto/sicoob_spec.rb +17 -17
  106. data/spec/brcobranca/boleto/sicredi_spec.rb +13 -13
  107. data/spec/brcobranca/boleto/unicred_spec.rb +10 -10
  108. data/spec/brcobranca/boletos_em_lote_spec.rb +1 -1
  109. data/spec/brcobranca/formatacao_string_spec.rb +1 -1
  110. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +10 -18
  111. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +39 -38
  112. data/spec/brcobranca/remessa/cnab240/cecred_spec.rb +164 -0
  113. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +268 -0
  114. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +58 -39
  115. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +201 -0
  116. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +193 -0
  117. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +183 -0
  118. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +4 -2
  119. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +190 -0
  120. data/spec/brcobranca/remessa/cnab400/base_spec.rb +1 -1
  121. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +16 -11
  122. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +11 -11
  123. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +188 -0
  124. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +25 -12
  125. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +35 -36
  126. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +37 -0
  127. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +185 -0
  128. data/spec/brcobranca/remessa/pagamento_spec.rb +45 -27
  129. data/spec/brcobranca/retorno/cnab240/base_spec.rb +7 -8
  130. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +50 -0
  131. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +35 -18
  132. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +20 -19
  133. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +31 -0
  134. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +36 -0
  135. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +39 -0
  136. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +41 -0
  137. data/spec/brcobranca/retorno/cnab400/base_spec.rb +34 -13
  138. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +4 -4
  139. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +25 -0
  140. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -4
  141. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +39 -0
  142. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +42 -0
  143. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +1 -1
  144. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +1 -1
  145. data/spec/brcobranca/rghost_spec.rb +1 -1
  146. data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +1 -1
  147. data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +3 -0
  148. data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +1 -1
  149. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +5 -4
  150. data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +5 -4
  151. data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +3 -0
  152. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +1 -1
  153. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +6 -5
  154. data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +7 -0
  155. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +1 -1
  156. data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +3 -0
  157. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +3 -2
  158. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +2 -2
  159. data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +4 -0
  160. data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +7 -0
  161. data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +7 -0
  162. data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +3 -0
  163. data/spec/support/shared_examples/busca_logotipo.rb +0 -2
  164. data/spec/support/shared_examples/cnab240.rb +92 -28
  165. data/spec/support/shared_examples/cnab400.rb +60 -14
  166. data/spec/support/shared_examples/formatos_validos.rb +6 -6
  167. metadata +103 -31
@@ -1,6 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  #
3
3
  # @author Kivanio Barbosa
4
+
5
+ require 'date'
6
+
4
7
  module Brcobranca
5
8
  # Métodos auxiliares de cálculos envolvendo Datas.
6
9
  module CalculoData
@@ -1,7 +1,4 @@
1
1
  #
2
- require 'active_support/core_ext/string/filters'
3
- require 'active_support/inflector/transliterate'
4
-
5
2
  module Brcobranca
6
3
  # Métodos auxiliares de formatação de strings
7
4
  module FormatacaoString
@@ -12,11 +9,24 @@ module Brcobranca
12
9
  #
13
10
  def format_size(size)
14
11
  if self.size > size
15
- ActiveSupport::Inflector.transliterate(truncate(size, omission: ''))
12
+ remove_accents.strip.gsub(/\s+/, ' ').gsub(/[^A-Za-z0-9[[:space:]]]/, '').truncate(size)
16
13
  else
17
- ActiveSupport::Inflector.transliterate(ljust(size, ' '))
14
+ remove_accents.strip.gsub(/\s+/, ' ').gsub(/[^A-Za-z0-9[[:space:]]]/, '').ljust(size, ' ')
18
15
  end
19
16
  end
17
+
18
+ def truncate(truncate_at)
19
+ return dup unless length > truncate_at
20
+ "#{self[0, truncate_at]}"
21
+ end
22
+
23
+ def remove_accents
24
+ self.tr(
25
+ "ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž",
26
+ "AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz"
27
+ )
28
+ end
29
+
20
30
  end
21
31
  end
22
32
 
@@ -1,5 +1,4 @@
1
1
  # -*- encoding: utf-8 -*-
2
- #
3
2
  require 'unidecoder'
4
3
 
5
4
  module Brcobranca
@@ -21,9 +20,11 @@ module Brcobranca
21
20
  attr_accessor :sequencial_remessa
22
21
  # aceite (A = ACEITO/N = NAO ACEITO)
23
22
  attr_accessor :aceite
23
+ # documento do cedente (CPF/CNPJ)
24
+ attr_accessor :documento_cedente
24
25
 
25
- # Validações do Rails 3
26
- include ActiveModel::Validations
26
+ # Validações
27
+ include Brcobranca::Validations
27
28
 
28
29
  validates_presence_of :pagamentos, :empresa_mae, message: 'não pode estar em branco.'
29
30
 
@@ -57,13 +58,19 @@ module Brcobranca
57
58
  yield self if block_given?
58
59
  end
59
60
 
60
- # Soma de todos os boletos
61
- #
62
- # @return [String]
63
- def valor_total_titulos(tamanho = 13)
64
- value = pagamentos.inject(0.0) { |sum, pagamento| sum += pagamento.valor }
65
- sprintf('%.2f', value).delete('.').rjust(tamanho, '0')
61
+ def quantidade_titulos_cobranca
62
+ pagamentos.length.to_s.rjust(6, "0")
63
+ end
64
+
65
+ def totaliza_valor_titulos
66
+ pagamentos.inject(0.0) { |sum, pagamento| sum += pagamento.valor.to_f }
66
67
  end
68
+
69
+ def valor_titulos_carteira(tamanho = 17)
70
+ total = sprintf "%.2f", totaliza_valor_titulos
71
+ total.somente_numeros.rjust(tamanho, "0")
72
+ end
73
+
67
74
  end
68
75
  end
69
76
  end
@@ -1,5 +1,4 @@
1
1
  # -*- encoding: utf-8 -*-
2
- #
3
2
  module Brcobranca
4
3
  module Remessa
5
4
  module Cnab240
@@ -21,9 +20,10 @@ module Brcobranca
21
20
 
22
21
  def initialize(campos = {})
23
22
  campos = { emissao_boleto: '0',
24
- distribuicao_boleto: '0',
25
- especie_titulo: '02',
26
- codigo_carteira: '7' }.merge!(campos)
23
+ distribuicao_boleto: '0',
24
+ especie_titulo: '02',
25
+ codigo_baixa: '00',
26
+ codigo_carteira: '7',}.merge!(campos)
27
27
  super(campos)
28
28
  end
29
29
 
@@ -65,7 +65,7 @@ module Brcobranca
65
65
  "#{convenio.rjust(9, '0')}0014#{carteira}#{variacao} "
66
66
  end
67
67
 
68
- alias convenio_lote codigo_convenio
68
+ alias_method :convenio_lote, :codigo_convenio
69
69
 
70
70
  def info_conta
71
71
  # CAMPO TAMANHO
@@ -156,7 +156,7 @@ module Brcobranca
156
156
  # 30 – Recusa da Alegação do Sacado,
157
157
  # 31 – Alteração de Outros Dados,
158
158
  # 40 – Alteração de Modalidade.
159
- segmento_p << '01' # cod. movimento remessa 2
159
+ segmento_p << pagamento.identificacao_ocorrencia # cod. movimento remessa 2
160
160
  segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
161
161
  segmento_p << digito_agencia.to_s # dv agencia 1
162
162
  segmento_p << complemento_p(pagamento) # informacoes da conta 34
@@ -170,7 +170,7 @@ module Brcobranca
170
170
  segmento_p << tipo_documento # tipo de documento 1
171
171
  segmento_p << emissao_boleto # identificaco emissao 1
172
172
  segmento_p << distribuicao_boleto # indentificacao entrega 1
173
- segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
173
+ segmento_p << numero(pagamento) # uso exclusivo 15
174
174
  segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
175
175
  segmento_p << pagamento.formata_valor(15) # valor documento 15
176
176
  segmento_p << ''.rjust(5, '0') # agencia cobradora 5
@@ -210,15 +210,16 @@ module Brcobranca
210
210
  segmento_p << especie_titulo # especie do titulo 2
211
211
  segmento_p << aceite # aceite 1
212
212
  segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
213
- segmento_p << '0' # cod. do juros 1 *
214
- segmento_p << ''.rjust(8, '0') # data juros 8 *
215
- segmento_p << ''.rjust(15, '0') # valor juros 15 *
213
+ segmento_p << pagamento.tipo_mora # cod. do juros 1
214
+ segmento_p << data_mora(pagamento) # data juros 8
215
+ segmento_p << pagamento.formata_valor_mora(15) # valor juros 15
216
216
  segmento_p << pagamento.cod_desconto # cod. do desconto 1
217
217
  segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
218
218
  segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
219
219
  segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
220
220
  segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
221
- segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
221
+ segmento_p << identificacao_titulo_empresa(pagamento) # identificacao documento empresa 25
222
+
222
223
  # O Banco do Brasil trata somente os códigos
223
224
  # '1' – Protestar dias corridos,
224
225
  # '2' – Protestar dias úteis, e
@@ -226,12 +227,12 @@ module Brcobranca
226
227
  # No caso de carteira 31 ou carteira 11/17 modalidade Vinculada,
227
228
  # se não informado nenhum código,
228
229
  # o sistema assume automaticamente Protesto em 3 dias úteis.
229
- segmento_p << '3' # cod. para protesto 1 *
230
+ segmento_p << pagamento.codigo_protesto # cod. para protesto 1
230
231
  # Preencher de acordo com o código informado na posição 221.
231
232
  # Para código '1' – é possível, de 6 a 29 dias, 35o, 40o, dia corrido.
232
233
  # Para código '2' – é possível, 3o, 4o ou 5o dia útil.
233
234
  # Para código '3' preencher com Zeros.
234
- segmento_p << '00' # dias para protesto 2 *
235
+ segmento_p << pagamento.dias_protesto.to_s.rjust(2, '0') # dias para protesto 2
235
236
  segmento_p << '0' # cod. para baixa 1 *'1' = Protestar Dias Corridos, '2' = Protestar Dias Úteis, '3' = Não Protestar
236
237
  segmento_p << '000' # dias para baixa 2 *
237
238
  segmento_p << '09' # cod. da moeda 2
@@ -1,11 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
- #
3
2
  module Brcobranca
4
3
  module Remessa
5
4
  module Cnab240
6
5
  class Base < Brcobranca::Remessa::Base
7
- # documento do cedente (CPF/CNPJ)
8
- attr_accessor :documento_cedente
9
6
  # convenio do cedente
10
7
  attr_accessor :convenio
11
8
  # mensagem 1
@@ -32,6 +29,10 @@ module Brcobranca
32
29
  attr_accessor :especie_titulo
33
30
  # tipo de documento (verificar o padrao nas classes referentes aos bancos)
34
31
  attr_accessor :tipo_documento
32
+ # codigo_baixa (verificar o padrao nas classes referentes aos bancos)
33
+ attr_accessor :codigo_baixa
34
+ # dias_baixa (verificar o padrao nas classes referentes aos bancos)
35
+ attr_accessor :dias_baixa
35
36
 
36
37
  validates_presence_of :agencia, :conta_corrente, message: 'não pode estar em branco.'
37
38
  validates_presence_of :documento_cedente, message: 'não pode estar em branco.'
@@ -41,9 +42,11 @@ module Brcobranca
41
42
  validates_length_of :distribuicao_boleto, is: 1, message: 'deve ter 1 dígito.'
42
43
 
43
44
  def initialize(campos = {})
44
- campos = { codigo_carteira: '1',
45
- forma_cadastramento: '1',
46
- tipo_documento: ' ' }.merge!(campos)
45
+ campos = {
46
+ codigo_carteira: '1',
47
+ forma_cadastramento: '1',
48
+ tipo_documento: ' '
49
+ }.merge!(campos)
47
50
  super(campos)
48
51
  end
49
52
 
@@ -68,27 +71,27 @@ module Brcobranca
68
71
  # @return [String]
69
72
  #
70
73
  def monta_header_arquivo
71
- header_arquivo = '' # CAMPO TAMANHO
72
- header_arquivo << cod_banco # codigo do banco 3
73
- header_arquivo << '0000' # lote do servico 4
74
- header_arquivo << '0' # tipo de registro 1
75
- header_arquivo << ''.rjust(9, ' ') # uso exclusivo FEBRABAN 9
74
+ header_arquivo = '' # CAMPO TAMANHO
75
+ header_arquivo << cod_banco # codigo do banco 3
76
+ header_arquivo << '0000' # lote do servico 4
77
+ header_arquivo << '0' # tipo de registro 1
78
+ header_arquivo << ''.rjust(9, ' ') # uso exclusivo FEBRABAN 9
76
79
  header_arquivo << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo inscricao 1
77
- header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao 14
78
- header_arquivo << codigo_convenio # codigo do convenio no banco 20
79
- header_arquivo << info_conta # informacoes da conta 20
80
- header_arquivo << empresa_mae.format_size(30) # nome da empresa 30
81
- header_arquivo << nome_banco.format_size(30) # nome do banco 30
82
- header_arquivo << ''.rjust(10, ' ') # uso exclusivo FEBRABAN 10
83
- header_arquivo << '1' # codigo remessa 1
84
- header_arquivo << data_geracao # data geracao 8
85
- header_arquivo << hora_geracao # hora geracao 6
86
- header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo 6
87
- header_arquivo << versao_layout_arquivo # num. versao arquivo 3
88
- header_arquivo << ''.rjust(5, '0') # densidade gravacao 5
89
- header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
90
- header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
91
- header_arquivo << complemento_header # complemento do arquivo 29
80
+ header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao 14
81
+ header_arquivo << codigo_convenio # codigo do convenio no banco 20
82
+ header_arquivo << info_conta # informacoes da conta 20
83
+ header_arquivo << empresa_mae.format_size(30) # nome da empresa 30
84
+ header_arquivo << nome_banco.format_size(30) # nome do banco 30
85
+ header_arquivo << ''.rjust(10, ' ') # uso exclusivo FEBRABAN 10
86
+ header_arquivo << '1' # codigo remessa 1
87
+ header_arquivo << data_geracao # data geracao 8
88
+ header_arquivo << hora_geracao # hora geracao 6
89
+ header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo 6
90
+ header_arquivo << versao_layout_arquivo # num. versao arquivo 3
91
+ header_arquivo << densidade_gravacao # densidade gravacao 5
92
+ header_arquivo << uso_exclusivo_banco # uso exclusivo 20
93
+ header_arquivo << uso_exclusivo_empresa # uso exclusivo 20
94
+ header_arquivo << complemento_header # complemento do arquivo 29
92
95
  header_arquivo
93
96
  end
94
97
 
@@ -100,26 +103,26 @@ module Brcobranca
100
103
  # @return [String]
101
104
  #
102
105
  def monta_header_lote(nro_lote)
103
- header_lote = '' # CAMPO TAMANHO
104
- header_lote << cod_banco # codigo banco 3
105
- header_lote << nro_lote.to_s.rjust(4, '0') # lote servico 4
106
- header_lote << '1' # tipo de registro 1
107
- header_lote << 'R' # tipo de operacao 1
108
- header_lote << '01' # tipo de servico 2
109
- header_lote << ' ' # uso exclusivo 2
110
- header_lote << versao_layout_lote # num.versao layout lote 3
111
- header_lote << ' ' # uso exclusivo 1
106
+ header_lote = '' # CAMPO TAMANHO
107
+ header_lote << cod_banco # codigo banco 3
108
+ header_lote << nro_lote.to_s.rjust(4, '0') # lote servico 4
109
+ header_lote << '1' # tipo de registro 1
110
+ header_lote << 'R' # tipo de operacao 1
111
+ header_lote << '01' # tipo de servico 2
112
+ header_lote << exclusivo_servico # uso exclusivo 2
113
+ header_lote << versao_layout_lote # num.versao layout lote 3
114
+ header_lote << ' ' # uso exclusivo 1
112
115
  header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo de inscricao 1
113
- header_lote << documento_cedente.to_s.rjust(15, '0') # inscricao cedente 15
114
- header_lote << convenio_lote # codigo do convenio 20
115
- header_lote << info_conta # informacoes conta 20
116
- header_lote << empresa_mae.format_size(30) # nome empresa 30
117
- header_lote << mensagem_1.to_s.format_size(40) # 1a mensagem 40
118
- header_lote << mensagem_2.to_s.format_size(40) # 2a mensagem 40
119
- header_lote << sequencial_remessa.to_s.rjust(8, '0') # numero remessa 8
120
- header_lote << data_geracao # data gravacao 8
121
- header_lote << ''.rjust(8, '0') # data do credito 8
122
- header_lote << ''.rjust(33, ' ') # complemento 33
116
+ header_lote << documento_cedente.to_s.rjust(15, '0') # inscricao cedente 15
117
+ header_lote << convenio_lote # codigo do convenio 20
118
+ header_lote << info_conta # informacoes conta 20
119
+ header_lote << empresa_mae.format_size(30) # nome empresa 30
120
+ header_lote << mensagem_1.to_s.format_size(40) # 1a mensagem 40
121
+ header_lote << mensagem_2.to_s.format_size(40) # 2a mensagem 40
122
+ header_lote << sequencial_remessa.to_s.rjust(8, '0') # numero remessa 8
123
+ header_lote << data_geracao # data gravacao 8
124
+ header_lote << ''.rjust(8, '0') # data do credito 8
125
+ header_lote << ''.rjust(33, ' ') # complemento 33
123
126
  header_lote
124
127
  end
125
128
 
@@ -135,47 +138,46 @@ module Brcobranca
135
138
  # @return [String]
136
139
  #
137
140
  def monta_segmento_p(pagamento, nro_lote, sequencial)
138
- # campos com * na frente nao foram implementados
139
141
  # # DESCRICAO TAMANHO
140
- segmento_p = cod_banco # codigo banco 3
141
- segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
142
- segmento_p << '3' # tipo de registro 1
143
- segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
144
- segmento_p << 'P' # cod. segmento 1
145
- segmento_p << ' ' # uso exclusivo 1
146
- segmento_p << '01' # cod. movimento remessa 2
147
- segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
148
- segmento_p << digito_agencia.to_s # dv agencia 1
149
- segmento_p << complemento_p(pagamento) # informacoes da conta 34
150
- segmento_p << codigo_carteira # codigo da carteira 1
151
- segmento_p << forma_cadastramento # forma de cadastro do titulo 1
152
- segmento_p << tipo_documento # tipo de documento 1
153
- segmento_p << emissao_boleto # identificaco emissao 1
154
- segmento_p << distribuicao_boleto # indentificacao entrega 1
155
- segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
156
- segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
157
- segmento_p << pagamento.formata_valor(15) # valor documento 15
158
- segmento_p << ''.rjust(5, '0') # agencia cobradora 5
159
- segmento_p << '0' # dv agencia cobradora 1
160
- segmento_p << especie_titulo # especie do titulo 2
161
- segmento_p << aceite # aceite 1
162
- segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
163
- segmento_p << '0' # cod. do juros 1 *
164
- segmento_p << ''.rjust(8, '0') # data juros 8 *
165
- segmento_p << ''.rjust(15, '0') # valor juros 15 *
166
- segmento_p << pagamento.cod_desconto # cod. do desconto 1
167
- segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
168
- segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
169
- segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
170
- segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
171
- segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
172
- segmento_p << '0' # cod. para protesto 1 *
173
- segmento_p << '00' # dias para protesto 2 *
174
- segmento_p << '0' # cod. para baixa 1 *
175
- segmento_p << '000' # dias para baixa 2 *
176
- segmento_p << '09' # cod. da moeda 2
177
- segmento_p << ''.rjust(10, '0') # uso exclusivo 10
178
- segmento_p << ' ' # uso exclusivo 1
142
+ segmento_p = cod_banco # codigo banco 3
143
+ segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
144
+ segmento_p << '3' # tipo de registro 1
145
+ segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
146
+ segmento_p << 'P' # cod. segmento 1
147
+ segmento_p << ' ' # uso exclusivo 1
148
+ segmento_p << pagamento.identificacao_ocorrencia # cod. movimento remessa 2
149
+ segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
150
+ segmento_p << digito_agencia.to_s # dv agencia 1
151
+ segmento_p << complemento_p(pagamento) # informacoes da conta 34
152
+ segmento_p << codigo_carteira # codigo da carteira 1
153
+ segmento_p << forma_cadastramento # forma de cadastro do titulo 1
154
+ segmento_p << tipo_documento # tipo de documento 1
155
+ segmento_p << emissao_boleto # identificaco emissao 1
156
+ segmento_p << distribuicao_boleto # indentificacao entrega 1
157
+ segmento_p << numero(pagamento) # uso exclusivo 4
158
+ segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
159
+ segmento_p << pagamento.formata_valor(15) # valor documento 15
160
+ segmento_p << ''.rjust(5, '0') # agencia cobradora 5
161
+ segmento_p << dv_agencia_cobradora # dv agencia cobradora 1
162
+ segmento_p << especie_titulo # especie do titulo 2
163
+ segmento_p << aceite # aceite 1
164
+ segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
165
+ segmento_p << pagamento.tipo_mora # cod. do mora 1
166
+ segmento_p << data_mora(pagamento) # data mora 8
167
+ segmento_p << pagamento.formata_valor_mora(15) # valor mora 15
168
+ segmento_p << codigo_desconto(pagamento) # cod. do desconto 1
169
+ segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
170
+ segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
171
+ segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
172
+ segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
173
+ segmento_p << identificacao_titulo_empresa(pagamento) # identificacao titulo empresa 25
174
+ segmento_p << pagamento.codigo_protesto # cod. para protesto 1
175
+ segmento_p << pagamento.dias_protesto.to_s.rjust(2, '0') # dias para protesto 2
176
+ segmento_p << codigo_baixa(pagamento) # cod. para baixa 1
177
+ segmento_p << dias_baixa(pagamento) # dias para baixa 2
178
+ segmento_p << '09' # cod. da moeda 2
179
+ segmento_p << ''.rjust(10, '0') # uso exclusivo 10
180
+ segmento_p << ' ' # uso exclusivo 1
179
181
  segmento_p
180
182
  end
181
183
 
@@ -191,32 +193,68 @@ module Brcobranca
191
193
  # @return [String]
192
194
  #
193
195
  def monta_segmento_q(pagamento, nro_lote, sequencial)
194
- segmento_q = '' # CAMPO TAMANHO
195
- segmento_q << cod_banco # codigo banco 3
196
- segmento_q << nro_lote.to_s.rjust(4, '0') # lote de servico 4
197
- segmento_q << '3' # tipo de registro 1
198
- segmento_q << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
199
- segmento_q << 'Q' # cod. segmento 1
200
- segmento_q << ' ' # uso exclusivo 1
201
- segmento_q << '01' # cod. movimento remessa 2
202
- segmento_q << pagamento.identificacao_sacado(false) # tipo insc. sacado 1
203
- segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0') # documento sacado 14
204
- segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40
205
- segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40
206
- segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15
207
- segmento_q << pagamento.cep_sacado[0..4] # cep 5
208
- segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3
209
- segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15
210
- segmento_q << pagamento.uf_sacado # uf 2
211
- segmento_q << pagamento.identificacao_avalista(false) # identificacao do sacador 1
212
- segmento_q << pagamento.documento_avalista.to_s.rjust(15, '0') # documento sacador 15
213
- segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40
214
- segmento_q << ''.rjust(3, '0') # cod. banco correspondente 3
215
- segmento_q << ''.rjust(20, ' ') # nosso numero banco correspondente 20
216
- segmento_q << ''.rjust(8, ' ') # uso exclusivo 8
196
+ segmento_q = '' # CAMPO TAMANHO
197
+ segmento_q << cod_banco # codigo banco 3
198
+ segmento_q << nro_lote.to_s.rjust(4, '0') # lote de servico 4
199
+ segmento_q << '3' # tipo de registro 1
200
+ segmento_q << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
201
+ segmento_q << 'Q' # cod. segmento 1
202
+ segmento_q << ' ' # uso exclusivo 1
203
+ segmento_q << pagamento.identificacao_ocorrencia # cod. movimento remessa 2
204
+ segmento_q << pagamento.identificacao_sacado(false) # tipo insc. sacado 1
205
+ segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0') # documento sacado 14
206
+ segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40
207
+ segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40
208
+ segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15
209
+ segmento_q << pagamento.cep_sacado[0..4] # cep 5
210
+ segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3
211
+ segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15
212
+ segmento_q << pagamento.uf_sacado # uf 2
213
+ segmento_q << pagamento.identificacao_avalista(false) # identificacao do sacador 1
214
+ segmento_q << pagamento.documento_avalista.to_s.rjust(15, '0')# documento sacador 15
215
+ segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40
216
+ segmento_q << ''.rjust(3, '0') # cod. banco correspondente 3
217
+ segmento_q << ''.rjust(20, ' ') # nosso numero banco correspondente 20
218
+ segmento_q << ''.rjust(8, ' ') # uso exclusivo 8
217
219
  segmento_q
218
220
  end
219
221
 
222
+ # Monta o registro segmento R do arquivo
223
+ #
224
+ # @param pagamento [Brcobranca::Remessa::Pagamento]
225
+ # objeto contendo os detalhes do boleto (valor, vencimento, sacado, etc)
226
+ # @param nro_lote [Integer]
227
+ # numero do lote que o segmento esta inserido
228
+ # @param sequencial [Integer]
229
+ # numero sequencial do registro no lote
230
+ #
231
+ # @return [String]
232
+ #
233
+ def monta_segmento_r(pagamento, nro_lote, sequencial)
234
+ segmento_r = '' # CAMPO TAMANHO
235
+ segmento_r << cod_banco # codigo banco 3
236
+ segmento_r << nro_lote.to_s.rjust(4, '0') # lote de servico 4
237
+ segmento_r << '3' # tipo do registro 1
238
+ segmento_r << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
239
+ segmento_r << 'R' # cod. segmento 1
240
+ segmento_r << ' ' # uso exclusivo 1
241
+ segmento_r << pagamento.identificacao_ocorrencia # cod. movimento remessa 2
242
+ segmento_r << "0" # cod. desconto 2 1
243
+ segmento_r << "".rjust(8, '0') # data desconto 2 8
244
+ segmento_r << "".rjust(15, '0') # valor desconto 2 15
245
+ segmento_r << "0" # cod. desconto 3 1
246
+ segmento_r << "".rjust(8, '0') # data desconto 3 8
247
+ segmento_r << "".rjust(15, '0') # valor desconto 3 15
248
+ segmento_r << pagamento.codigo_multa # codigo multa 1
249
+ segmento_r << data_multa(pagamento) # data multa 8
250
+ segmento_r << pagamento.formata_percentual_multa(15) # valor multa 15
251
+ segmento_r << ''.rjust(10, ' ') # info pagador 10
252
+ segmento_r << ''.rjust(40, ' ') # mensagem 3 40
253
+ segmento_r << ''.rjust(40, ' ') # mensagem 4 40
254
+ segmento_r << complemento_r # complemento de acordo com o banco 61
255
+ segmento_r
256
+ end
257
+
220
258
  # Monta o registro trailer do lote
221
259
  #
222
260
  # @param nro_lote [Integer]
@@ -228,13 +266,13 @@ module Brcobranca
228
266
  # @return [String]
229
267
  #
230
268
  def monta_trailer_lote(nro_lote, nro_registros)
231
- trailer_lote = '' # CAMPO # TAMANHO
232
- trailer_lote << cod_banco # codigo banco 3
233
- trailer_lote << nro_lote.to_s.rjust(4, '0') # lote de servico 4
234
- trailer_lote << '5' # tipo de servico 1
235
- trailer_lote << ''.rjust(9, ' ') # uso exclusivo 9
236
- trailer_lote << nro_registros.to_s.rjust(6, '0') # qtde de registros lote 6
237
- trailer_lote << complemento_trailer # uso exclusivo 217
269
+ trailer_lote = '' # CAMPO # TAMANHO
270
+ trailer_lote << cod_banco # codigo banco 3
271
+ trailer_lote << nro_lote.to_s.rjust(4, '0') # lote de servico 4
272
+ trailer_lote << '5' # tipo de servico 1
273
+ trailer_lote << ''.rjust(9, ' ') # uso exclusivo 9
274
+ trailer_lote << nro_registros.to_s.rjust(6, '0') # qtde de registros lote 6
275
+ trailer_lote << complemento_trailer # uso exclusivo 217
238
276
  trailer_lote
239
277
  end
240
278
 
@@ -271,7 +309,7 @@ module Brcobranca
271
309
  #
272
310
  def monta_lote(nro_lote)
273
311
  # contador dos registros do lote
274
- contador = 1 # header
312
+ contador = 1 #header
275
313
 
276
314
  lote = [monta_header_lote(nro_lote)]
277
315
 
@@ -282,8 +320,16 @@ module Brcobranca
282
320
  contador += 1
283
321
  lote << monta_segmento_q(pagamento, nro_lote, contador)
284
322
  contador += 1
323
+ if self.respond_to?(:monta_segmento_r)
324
+ seg_r = monta_segmento_r(pagamento, nro_lote, contador)
325
+
326
+ if seg_r.present?
327
+ lote << seg_r
328
+ contador += 1
329
+ end
330
+ end
285
331
  end
286
- contador += 1 # trailer
332
+ contador += 1 #trailer
287
333
 
288
334
  lote << monta_trailer_lote(nro_lote, contador)
289
335
 
@@ -303,13 +349,23 @@ module Brcobranca
303
349
  contador = 1
304
350
  arquivo.push monta_lote(contador)
305
351
 
306
- arquivo << monta_trailer_arquivo(contador, ((pagamentos.size * 2) + (contador * 2) + 2))
352
+ total_linhas = (total_segmentos(pagamentos) + (contador * 2) + 2)
353
+
354
+ arquivo << monta_trailer_arquivo(contador, total_linhas)
307
355
 
308
- remittance = arquivo.join("\n").to_ascii.upcase
356
+ remittance = arquivo.join("\r\n").to_ascii.upcase
309
357
  remittance << "\n"
310
358
  remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding, crlf_newline: true)
311
359
  end
312
360
 
361
+ def total_segmentos(pagamentos)
362
+ if self.respond_to?(:monta_segmento_r)
363
+ pagamentos.size * 3
364
+ else
365
+ pagamentos.size * 2
366
+ end
367
+ end
368
+
313
369
  # Complemento do registro
314
370
  #
315
371
  # Este metodo deve ser sobrescrevido na classe do banco
@@ -334,6 +390,21 @@ module Brcobranca
334
390
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
335
391
  end
336
392
 
393
+ # Densidade de gravacao do arquivo
394
+ def densidade_gravacao
395
+ '00000'
396
+ end
397
+
398
+ # Uso exclusivo do Banco
399
+ def uso_exclusivo_banco
400
+ ''.rjust(20, '0')
401
+ end
402
+
403
+ # Uso exclusivo da Empresa
404
+ def uso_exclusivo_empresa
405
+ ''.rjust(20, '0')
406
+ end
407
+
337
408
  # Informacoes do convenio para o lote
338
409
  #
339
410
  # Este metodo deve ser sobrescrevido na classe do banco
@@ -373,6 +444,68 @@ module Brcobranca
373
444
  def codigo_convenio
374
445
  raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
375
446
  end
447
+
448
+ # Complemento do Segmento R
449
+ #
450
+ # Sobreescreva caso necessário
451
+ def complemento_r
452
+ segmento_r = ''
453
+ segmento_r << ''.rjust(20, ' ') # Exclusivo FEBRABAN 20
454
+ segmento_r << ''.rjust(8, '0') # Cod. Ocor do Pagador 8
455
+ segmento_r << ''.rjust(3, '0') # Cod. do Banco conta débito 3
456
+ segmento_r << ''.rjust(5, '0') # Cod. da Agencia do débito 5
457
+ segmento_r << ' ' # Cod. verificador da agencia 1
458
+ segmento_r << ''.rjust(12, '0') # Conta corrente para débito 12
459
+ segmento_r << ' ' # Cod. verificador da conta 1
460
+ segmento_r << ' ' # Cod. verificador da Ag/Conta 1
461
+ segmento_r << '0' # Aviso débito automático 1
462
+ segmento_r << ''.rjust(9, ' ') # Uso FEBRABAN 9
463
+ segmento_r
464
+ end
465
+
466
+ def data_multa(pagamento)
467
+ return ''.rjust(8, '0') if pagamento.codigo_multa == '0'
468
+ pagamento.data_vencimento.strftime('%d%m%Y')
469
+ end
470
+
471
+ def data_mora(pagamento)
472
+ return "".rjust(8, "0") unless %w( 1 2 ).include? pagamento.tipo_mora
473
+ pagamento.data_vencimento.strftime("%d%m%Y")
474
+ end
475
+
476
+ def codigo_desconto(pagamento)
477
+ pagamento.cod_desconto
478
+ end
479
+
480
+ def codigo_baixa(pagamento)
481
+ pagamento.codigo_baixa
482
+ end
483
+
484
+ def dias_baixa(pagamento)
485
+ pagamento.dias_baixa.to_s.rjust(3, "0")
486
+ end
487
+
488
+ # Identificacao do titulo da empresa
489
+ #
490
+ # Sobreescreva caso necessário
491
+ def numero(pagamento)
492
+ pagamento.formata_documento_ou_numero(15, '0')
493
+ end
494
+
495
+ def identificacao_titulo_empresa(pagamento)
496
+ pagamento.formata_documento_ou_numero
497
+ end
498
+
499
+ # Campo exclusivo para serviço
500
+ #
501
+ # Sobreescreva caso necessário
502
+ def exclusivo_servico
503
+ "".rjust(2, " ")
504
+ end
505
+
506
+ def dv_agencia_cobradora
507
+ '0'
508
+ end
376
509
  end
377
510
  end
378
511
  end