brcobranca 6.0.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -1
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +4 -4
  5. data/README.md +5 -3
  6. data/lib/brcobranca/formatacao_string.rb +5 -2
  7. data/lib/brcobranca/remessa/base.rb +0 -1
  8. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +120 -2
  9. data/lib/brcobranca/remessa/cnab240/base.rb +108 -108
  10. data/lib/brcobranca/remessa/cnab400/base.rb +1 -1
  11. data/lib/brcobranca/remessa/cnab400/bradesco.rb +3 -3
  12. data/lib/brcobranca/remessa/cnab400/citibank.rb +1 -1
  13. data/lib/brcobranca/remessa/cnab400/santander.rb +2 -2
  14. data/lib/brcobranca/version.rb +1 -1
  15. data/spec/brcobranca/formatacao_string_spec.rb +25 -0
  16. data/spec/brcobranca/remessa/base_spec.rb +10 -16
  17. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +13 -6
  18. data/spec/brcobranca/remessa/cnab240/base_spec.rb +5 -5
  19. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +24 -17
  20. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +7 -7
  21. data/spec/brcobranca/remessa/cnab400/base_spec.rb +10 -10
  22. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +59 -52
  23. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +43 -36
  24. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +61 -54
  25. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +43 -36
  26. data/spec/brcobranca/remessa/pagamento_spec.rb +9 -9
  27. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +6 -0
  28. data/spec/fixtures/remessa/{remessa-bancoob.rem → remessa-bancoob-cnab240.rem} +3 -3
  29. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
  30. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +6 -0
  31. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
  32. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +3 -0
  33. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
  34. data/spec/support/shared_examples/cnab240.rb +87 -85
  35. data/spec/support/shared_examples/cnab400.rb +17 -16
  36. metadata +18 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9250f5cd1a28ffe8eb9f5052e02c13f3c229e3f
4
- data.tar.gz: 50ea4fb2fa9b0a0ba00b48c5ae2aa5e9c73af28c
3
+ metadata.gz: b384bcf7d962c4f96859abe802b0c887bb4d94e5
4
+ data.tar.gz: ceaba8715d7ba0eb68a41bd029a1af148408ae8f
5
5
  SHA512:
6
- metadata.gz: a7fa8a1e10aec4aae8295ae1a6fd91bf6a6db209a0bac223546c2849b08207125b8342d5e9ebb4516b6af8a9b28062851938ca3616aba3ae0488fb880b9cb007
7
- data.tar.gz: 1ccc44696b6c7cf8f82bcdb8939971df437522afdaec2c5e2dbb893aab3ca63626e35ac9e631191e4fdfc33444b808809af58b87e15b54cffb9fda5546eb3b4f
6
+ metadata.gz: 78e3c4faf9ecaf690196bb15ce8ef59f351587af7c65405cd6603afbe173e46618690b8272045c92f46f32072d739e76f14a58307eed32c9abe35abb77daa9f7
7
+ data.tar.gz: 2599dbb5f47fd715a10dfd554fd2db079e7be66b145ae4a552b3cca58488343047582c9995fd38c1736cc6ced2b6399b3df61b9c02479c1a6d45303a2136d1b4
data/CHANGELOG.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 6.1.0.beta
3
+ ## 6.1.0
4
4
  - Adicionado Banestes
5
+ - Limpeza e formatação de strings de acordo com o tamanho permitido por cada banco
6
+ - Homologação de cnab240 do Banco do Brazil
5
7
 
6
8
  ## 6.0.0
7
9
 
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gemspec
5
5
 
6
6
  group :development do
7
7
  gem 'pry', '~> 0.10.0'
8
- gem 'rubocop', '~> 0.34.1'
8
+ gem 'rubocop', '~> 0.34.2'
9
9
  gem 'rubocop-rspec', '~> 1.3.0'
10
10
  end
11
11
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- brcobranca (6.0.1)
4
+ brcobranca (6.1.0)
5
5
  activemodel (>= 3)
6
6
  parseline (~> 1.0.3)
7
7
  rghost (= 0.9.5)
@@ -43,7 +43,7 @@ GEM
43
43
  i18n (0.7.0)
44
44
  json (1.8.3)
45
45
  method_source (0.8.2)
46
- mime-types (2.6.1)
46
+ mime-types (2.6.2)
47
47
  minitest (5.8.0)
48
48
  netrc (0.10.3)
49
49
  parseline (1.0.3)
@@ -85,7 +85,7 @@ GEM
85
85
  diff-lcs (>= 1.2.0, < 2.0)
86
86
  rspec-support (~> 3.3.0)
87
87
  rspec-support (3.3.0)
88
- rubocop (0.34.1)
88
+ rubocop (0.34.2)
89
89
  astrolabe (~> 1.3)
90
90
  parser (>= 2.2.2.5, < 3.0)
91
91
  powerpack (~> 0.1)
@@ -125,7 +125,7 @@ DEPENDENCIES
125
125
  pry (~> 0.10.0)
126
126
  rake
127
127
  rspec
128
- rubocop (~> 0.34.1)
128
+ rubocop (~> 0.34.2)
129
129
  rubocop-rspec (~> 1.3.0)
130
130
  timecop
131
131
 
data/README.md CHANGED
@@ -23,8 +23,9 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
23
23
  | Bancos | Carteiras | Documentações |
24
24
  |-----------------------|-------------------|----------------|
25
25
  | 001 - Banco do Brasil | Todas as carteiras presentes na documentação | [pdf](http://www.bb.com.br/docs/pub/emp/empl/dwn/Doc5175Bloqueto.pdf) |
26
- | 033 - Santander | Sem registro, Com registro - [Ronaldo Araujo](https://github.com/ronaldoaraujo) | [pdf](http://177.69.143.161:81/Treinamento/SisMoura/Documentação%20Boleto%20Remessa/Documentacao_SANTANDER/Layout%20de%20Cobrança%20-%20Código%20de%20Barras%20Santander%20Setembro%202012%20v%202%203.pdf) |
27
- | 104 - Caixa | Sem registro - [Túlio Ornelas](https://github.com/tulios) | [pdf](http://downloads.caixa.gov.br/_arquivos/cobranca_caixa_sigcb/manuais/CODIGO_BARRAS_SIGCB.PDF) |
26
+ | 021 - Banestes | Todas as carteiras presentes na documentação | |
27
+ | 033 - Santander | Todas as carteiras presentes na documentação - [Ronaldo Araujo](https://github.com/ronaldoaraujo) | [pdf](http://177.69.143.161:81/Treinamento/SisMoura/Documentação%20Boleto%20Remessa/Documentacao_SANTANDER/Layout%20de%20Cobrança%20-%20Código%20de%20Barras%20Santander%20Setembro%202012%20v%202%203.pdf) |
28
+ | 104 - Caixa | Todas as carteiras presentes na documentação - [Túlio Ornelas](https://github.com/tulios) | [pdf](http://downloads.caixa.gov.br/_arquivos/cobranca_caixa_sigcb/manuais/CODIGO_BARRAS_SIGCB.PDF) |
28
29
  | 237 - Bradesco | Todas as carteiras presentes na documentação | [pdf](http://www.bradesco.com.br/portal/PDF/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo/cobranca/4008-524-0121-08-layout-cobranca-versao-portugues.pdf) |
29
30
  | 341 - Itaú | Todas as carteiras presentes na documentação | [CNAB240](http://download.itau.com.br/bankline/cobranca_cnab240.pdf), [CNAB400](http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf) |
30
31
  | 399 - HSBC | CNR, CSB - [Rafael DL](https://github.com/rafaeldl) | |
@@ -45,6 +46,8 @@ Para CNABs do tipo 240 indico usar a gem [cnab240](https://github.com/eduardordm
45
46
  * Caixa Economica Federal (CNAB240) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
46
47
  * Bradesco (CNAB400) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
47
48
  * Itaú (CNAB400) [Isabella](https://github.com/isabellaSantos) da [Zaez](http://www.zaez.net)
49
+ * Citibank (CNAB400)
50
+ * Santander (CNAB400)
48
51
 
49
52
  ### Documentação
50
53
 
@@ -64,4 +67,3 @@ Caso queira verificar(ou adicionar) alguma documentação, acesse [nosso wiki](h
64
67
  ### Licença
65
68
 
66
69
  * BSD
67
- * Copyleft 2009 [Kivanio Barbosa](http://www.workingwithrails.com/recommendation/new/person/5679-kivanio-pereira-barbosa)
@@ -1,3 +1,6 @@
1
+ require 'active_support/core_ext/string/filters'
2
+ require 'active_support/inflector/transliterate'
3
+
1
4
  module Brcobranca
2
5
  # Métodos auxiliares de formatação de strings
3
6
  module FormatacaoString
@@ -8,9 +11,9 @@ module Brcobranca
8
11
  #
9
12
  def format_size(size)
10
13
  if self.size > size
11
- return truncate(size, omission: '')
14
+ ActiveSupport::Inflector.transliterate(truncate(size, omission: ''))
12
15
  else
13
- return ljust(size, ' ')
16
+ ActiveSupport::Inflector.transliterate(ljust(size, ' '))
14
17
  end
15
18
  end
16
19
  end
@@ -23,7 +23,6 @@ module Brcobranca
23
23
  include ActiveModel::Validations
24
24
 
25
25
  validates_presence_of :pagamentos, :empresa_mae, message: 'não pode estar em branco.'
26
- validates_length_of :empresa_mae, maximum: 30, message: 'deve ser menor ou igual a 30 caracteres.'
27
26
 
28
27
  validates_each :pagamentos do |record, attr, value|
29
28
  if value.is_a? Array
@@ -21,7 +21,8 @@ module Brcobranca
21
21
  def initialize(campos = {})
22
22
  campos = { emissao_boleto: '0',
23
23
  distribuicao_boleto: '0',
24
- especie_titulo: '02' }.merge!(campos)
24
+ especie_titulo: '02',
25
+ codigo_carteira: '7',}.merge!(campos)
25
26
  super(campos)
26
27
  end
27
28
 
@@ -80,7 +81,7 @@ module Brcobranca
80
81
  end
81
82
 
82
83
  def complemento_trailer
83
- ''.rjust(217, ' ')
84
+ ''.rjust(217, '0')
84
85
  end
85
86
 
86
87
  def complemento_p(pagamento)
@@ -120,6 +121,123 @@ module Brcobranca
120
121
  def identificador_titulo(nosso_numero)
121
122
  "#{convenio}#{formata_nosso_numero(nosso_numero)}".ljust(20, ' ')
122
123
  end
124
+
125
+ # Monta o registro segmento P do arquivo
126
+ #
127
+ # @param pagamento [Brcobranca::Remessa::Pagamento]
128
+ # objeto contendo os detalhes do boleto (valor, vencimento, sacado, etc)
129
+ # @param nro_lote [Integer]
130
+ # numero do lote que o segmento esta inserido
131
+ # @param sequencial [Integer]
132
+ # numero sequencial do registro no lote
133
+ #
134
+ # @return [String]
135
+ #
136
+ def monta_segmento_p(pagamento, nro_lote, sequencial)
137
+ # campos com * na frente nao foram implementados
138
+ # # DESCRICAO TAMANHO
139
+ segmento_p = cod_banco # codigo banco 3
140
+ segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
141
+ segmento_p << '3' # tipo de registro 1
142
+ segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
143
+ segmento_p << 'P' # cod. segmento 1
144
+ segmento_p << ' ' # uso exclusivo 1
145
+ # Códigos de Movimento para Remessa tratados pelo Banco do Brasil:
146
+ # 01 – Entrada de títulos,
147
+ # 02 – Pedido de baixa,
148
+ # 04 – Concessão de Abatimento,
149
+ # 05 – Cancelamento de Abatimento,
150
+ # 06 – Alteração de Vencimento,
151
+ # 07 – Concessão de Desconto,
152
+ # 08 – Cancelamento de Desconto,
153
+ # 09 – Protestar,
154
+ # 10 – Cancela/Sustação da Instrução de protesto,
155
+ # 30 – Recusa da Alegação do Sacado,
156
+ # 31 – Alteração de Outros Dados,
157
+ # 40 – Alteração de Modalidade.
158
+ segmento_p << '01' # cod. movimento remessa 2
159
+ segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
160
+ segmento_p << digito_agencia.to_s # dv agencia 1
161
+ segmento_p << complemento_p(pagamento) # informacoes da conta 34
162
+ # Informar:
163
+ # 1 – para carteira 11/12 na modalidade Simples;
164
+ # 2 ou 3 – para carteira 11/17 modalidade Vinculada/Caucionada e carteira 31;
165
+ # 4 – para carteira 11/17 modalidade Descontada e carteira 51;
166
+ # e 7 – para carteira 17 modalidade Simples.
167
+ segmento_p << codigo_carteira # codigo da carteira 1
168
+ segmento_p << forma_cadastramento # forma de cadastro do titulo 1
169
+ segmento_p << tipo_documento # tipo de documento 1
170
+ segmento_p << emissao_boleto # identificaco emissao 1
171
+ segmento_p << distribuicao_boleto # indentificacao entrega 1
172
+ segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
173
+ segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
174
+ segmento_p << pagamento.formata_valor(15) # valor documento 15
175
+ segmento_p << ''.rjust(5, '0') # agencia cobradora 5
176
+ segmento_p << ' ' # dv agencia cobradora 1
177
+ # Para carteira 11 e 17 modalidade Simples, pode ser usado:
178
+ # 01 – Cheque, 02 – Duplicata Mercantil,
179
+ # 04 – Duplicata de Serviço,
180
+ # 06 – Duplicata Rural,
181
+ # 07 – Letra de Câmbio,
182
+ # 12 – Nota Promissória,
183
+ # 17 - Recibo,
184
+ # 19 – Nota de Debito,
185
+ # 26 – Warrant,
186
+ # 27 – Dívida Ativa de Estado,
187
+ # 28 – Divida Ativa de Município e
188
+ # 29 – Dívida Ativa União.
189
+ # Para carteira 12 (moeda variável) pode ser usado:
190
+ # 02 – Duplicata Mercantil,
191
+ # 04 – Duplicata de Serviço,
192
+ # 07 – Letra de Câmbio,
193
+ # 12 – Nota Promissória,
194
+ # 17 – Recibo e
195
+ # 19 – Nota de Débito.
196
+ # Para carteira 15 (prêmio de seguro) pode ser usado:
197
+ # 16 – Nota de Seguro e
198
+ # 20 – Apólice de Seguro.
199
+ # Para carteira 11/17 modalidade Vinculada e carteira 31, pode ser usado:
200
+ # 02 – Duplicata Mercantil e
201
+ # 04 – Duplicata de Serviço.
202
+ # Para carteira 11/17 modalidade Descontada e carteira 51, pode ser usado:
203
+ # 02 – Duplicata Mercantil,
204
+ # 04 – Duplicata de Serviço, e
205
+ # 07 – Letra de Câmbio.
206
+ # Obs.: O Banco do Brasil encaminha para protesto os seguintes títulos:
207
+ # Duplicata Mercantil, Rural e de Serviço, Letra de Câmbio, e
208
+ # Certidão de Dívida Ativa da União, dos Estados e do Município.
209
+ segmento_p << especie_titulo # especie do titulo 2
210
+ segmento_p << aceite # aceite 1
211
+ segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
212
+ segmento_p << '0' # cod. do juros 1 *
213
+ segmento_p << ''.rjust(8, '0') # data juros 8 *
214
+ segmento_p << ''.rjust(15, '0') # valor juros 15 *
215
+ segmento_p << pagamento.cod_desconto # cod. do desconto 1
216
+ segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
217
+ segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
218
+ segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
219
+ segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
220
+ segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
221
+ # O Banco do Brasil trata somente os códigos
222
+ # '1' – Protestar dias corridos,
223
+ # '2' – Protestar dias úteis, e
224
+ # '3' – Não protestar.
225
+ # No caso de carteira 31 ou carteira 11/17 modalidade Vinculada,
226
+ # se não informado nenhum código,
227
+ # o sistema assume automaticamente Protesto em 3 dias úteis.
228
+ segmento_p << '3' # cod. para protesto 1 *
229
+ # Preencher de acordo com o código informado na posição 221.
230
+ # Para código '1' – é possível, de 6 a 29 dias, 35o, 40o, dia corrido.
231
+ # Para código '2' – é possível, 3o, 4o ou 5o dia útil.
232
+ # Para código '3' preencher com Zeros.
233
+ segmento_p << '00' # dias para protesto 2 *
234
+ segmento_p << '0' # cod. para baixa 1 *'1' = Protestar Dias Corridos, '2' = Protestar Dias Úteis, '3' = Não Protestar
235
+ segmento_p << '000' # dias para baixa 2 *
236
+ segmento_p << '09' # cod. da moeda 2
237
+ segmento_p << ''.rjust(10, '0') # uso exclusivo 10
238
+ segmento_p << ' ' # uso exclusivo 1
239
+ segmento_p.upcase
240
+ end
123
241
  end
124
242
  end
125
243
  end
@@ -67,27 +67,27 @@ module Brcobranca
67
67
  # @return [String]
68
68
  #
69
69
  def monta_header_arquivo
70
- header_arquivo = '' # CAMPO TAMANHO
71
- header_arquivo << cod_banco # codigo do banco 3
72
- header_arquivo << '0000' # lote do servico 4
73
- header_arquivo << '0' # tipo de registro 1
74
- header_arquivo << ''.rjust(9, ' ') # uso exclusivo FEBRABAN 9
70
+ header_arquivo = '' # CAMPO TAMANHO
71
+ header_arquivo << cod_banco # codigo do banco 3
72
+ header_arquivo << '0000' # lote do servico 4
73
+ header_arquivo << '0' # tipo de registro 1
74
+ header_arquivo << ''.rjust(9, ' ') # uso exclusivo FEBRABAN 9
75
75
  header_arquivo << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo inscricao 1
76
- header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao 14
77
- header_arquivo << codigo_convenio # codigo do convenio no banco 20
78
- header_arquivo << info_conta # informacoes da conta 20
79
- header_arquivo << empresa_mae.format_size(30) # nome da empresa 30
80
- header_arquivo << nome_banco.format_size(30) # nome do banco 30
81
- header_arquivo << ''.rjust(10, ' ') # uso exclusivo FEBRABAN 10
82
- header_arquivo << '1' # codigo remessa 1
83
- header_arquivo << data_geracao # data geracao 8
84
- header_arquivo << hora_geracao # hora geracao 6
85
- header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo 6
86
- header_arquivo << versao_layout_arquivo # num. versao arquivo 3
87
- header_arquivo << ''.rjust(5, '0') # densidade gravacao 5
88
- header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
89
- header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
90
- header_arquivo << complemento_header # complemento do arquivo 29
76
+ header_arquivo << documento_cedente.to_s.rjust(14, '0') # numero de inscricao 14
77
+ header_arquivo << codigo_convenio # codigo do convenio no banco 20
78
+ header_arquivo << info_conta # informacoes da conta 20
79
+ header_arquivo << empresa_mae.format_size(30) # nome da empresa 30
80
+ header_arquivo << nome_banco.format_size(30) # nome do banco 30
81
+ header_arquivo << ''.rjust(10, ' ') # uso exclusivo FEBRABAN 10
82
+ header_arquivo << '1' # codigo remessa 1
83
+ header_arquivo << data_geracao # data geracao 8
84
+ header_arquivo << hora_geracao # hora geracao 6
85
+ header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo 6
86
+ header_arquivo << versao_layout_arquivo # num. versao arquivo 3
87
+ header_arquivo << ''.rjust(5, '0') # densidade gravacao 5
88
+ header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
89
+ header_arquivo << ''.rjust(20, '0') # uso exclusivo 20
90
+ header_arquivo << complemento_header # complemento do arquivo 29
91
91
  header_arquivo.upcase
92
92
  end
93
93
 
@@ -99,26 +99,26 @@ module Brcobranca
99
99
  # @return [String]
100
100
  #
101
101
  def monta_header_lote(nro_lote)
102
- header_lote = '' # CAMPO TAMANHO
103
- header_lote << cod_banco # codigo banco 3
104
- header_lote << nro_lote.to_s.rjust(4, '0') # lote servico 4
105
- header_lote << '1' # tipo de registro 1
106
- header_lote << 'R' # tipo de operacao 1
107
- header_lote << '01' # tipo de servico 2
108
- header_lote << ' ' # uso exclusivo 2
109
- header_lote << versao_layout_lote # num.versao layout lote 3
110
- header_lote << ' ' # uso exclusivo 1
111
- header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo de inscricao 1
112
- header_lote << documento_cedente.to_s.rjust(15, '0') # inscricao cedente 15
113
- header_lote << convenio_lote # codigo do convenio 20
114
- header_lote << info_conta # informacoes conta 20
115
- header_lote << empresa_mae.ljust(30, ' ') # nome empresa 30
116
- header_lote << mensagem_1.to_s.format_size(40) # 1a mensagem 40
117
- header_lote << mensagem_2.to_s.format_size(40) # 2a mensagem 40
118
- header_lote << sequencial_remessa.to_s.rjust(8, '0') # numero remessa 8
119
- header_lote << data_geracao # data gravacao 8
120
- header_lote << ''.rjust(8, '0') # data do credito 8
121
- header_lote << ''.rjust(33, ' ') # complemento 33
102
+ header_lote = '' # CAMPO TAMANHO
103
+ header_lote << cod_banco # codigo banco 3
104
+ header_lote << nro_lote.to_s.rjust(4, '0') # lote servico 4
105
+ header_lote << '1' # tipo de registro 1
106
+ header_lote << 'R' # tipo de operacao 1
107
+ header_lote << '01' # tipo de servico 2
108
+ header_lote << ' ' # uso exclusivo 2
109
+ header_lote << versao_layout_lote # num.versao layout lote 3
110
+ header_lote << ' ' # uso exclusivo 1
111
+ header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo de inscricao 1
112
+ header_lote << documento_cedente.to_s.rjust(15, '0') # inscricao cedente 15
113
+ header_lote << convenio_lote # codigo do convenio 20
114
+ header_lote << info_conta # informacoes conta 20
115
+ header_lote << empresa_mae.format_size(30) # nome empresa 30
116
+ header_lote << mensagem_1.to_s.format_size(40) # 1a mensagem 40
117
+ header_lote << mensagem_2.to_s.format_size(40) # 2a mensagem 40
118
+ header_lote << sequencial_remessa.to_s.rjust(8, '0') # numero remessa 8
119
+ header_lote << data_geracao # data gravacao 8
120
+ header_lote << ''.rjust(8, '0') # data do credito 8
121
+ header_lote << ''.rjust(33, ' ') # complemento 33
122
122
  header_lote.upcase
123
123
  end
124
124
 
@@ -135,46 +135,46 @@ module Brcobranca
135
135
  #
136
136
  def monta_segmento_p(pagamento, nro_lote, sequencial)
137
137
  # campos com * na frente nao foram implementados
138
- # # DESCRICAO TAMANHO
139
- segmento_p = cod_banco # codigo banco 3
140
- segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
141
- segmento_p << '3' # tipo de registro 1
142
- segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
143
- segmento_p << 'P' # cod. segmento 1
144
- segmento_p << ' ' # uso exclusivo 1
145
- segmento_p << '01' # cod. movimento remessa 2
146
- segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
147
- segmento_p << digito_agencia.to_s # dv agencia 1
148
- segmento_p << complemento_p(pagamento) # informacoes da conta 34
149
- segmento_p << codigo_carteira # codigo da carteira 1
150
- segmento_p << forma_cadastramento # forma de cadastro do titulo 1
151
- segmento_p << tipo_documento # tipo de documento 1
152
- segmento_p << emissao_boleto # identificaco emissao 1
153
- segmento_p << distribuicao_boleto # indentificacao entrega 1
154
- segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
155
- segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
156
- segmento_p << pagamento.formata_valor(15) # valor documento 15
157
- segmento_p << ''.rjust(5, '0') # agencia cobradora 5
158
- segmento_p << '0' # dv agencia cobradora 1
159
- segmento_p << especie_titulo # especie do titulo 2
160
- segmento_p << aceite # aceite 1
161
- segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
162
- segmento_p << '0' # cod. do juros 1 *
163
- segmento_p << ''.rjust(8, '0') # data juros 8 *
164
- segmento_p << ''.rjust(15, '0') # valor juros 15 *
165
- segmento_p << pagamento.cod_desconto # cod. do desconto 1
166
- segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
167
- segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
168
- segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
169
- segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
170
- segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
171
- segmento_p << '0' # cod. para protesto 1 *
172
- segmento_p << '00' # dias para protesto 2 *
173
- segmento_p << '0' # cod. para baixa 1 *
174
- segmento_p << '000' # dias para baixa 2 *
175
- segmento_p << '09' # cod. da moeda 2
176
- segmento_p << ''.rjust(10, '0') # uso exclusivo 10
177
- segmento_p << ' ' # uso exclusivo 1
138
+ # # DESCRICAO TAMANHO
139
+ segmento_p = cod_banco # codigo banco 3
140
+ segmento_p << nro_lote.to_s.rjust(4, '0') # lote de servico 4
141
+ segmento_p << '3' # tipo de registro 1
142
+ segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
143
+ segmento_p << 'P' # cod. segmento 1
144
+ segmento_p << ' ' # uso exclusivo 1
145
+ segmento_p << '01' # cod. movimento remessa 2
146
+ segmento_p << agencia.to_s.rjust(5, '0') # agencia 5
147
+ segmento_p << digito_agencia.to_s # dv agencia 1
148
+ segmento_p << complemento_p(pagamento) # informacoes da conta 34
149
+ segmento_p << codigo_carteira # codigo da carteira 1
150
+ segmento_p << forma_cadastramento # forma de cadastro do titulo 1
151
+ segmento_p << tipo_documento # tipo de documento 1
152
+ segmento_p << emissao_boleto # identificaco emissao 1
153
+ segmento_p << distribuicao_boleto # indentificacao entrega 1
154
+ segmento_p << pagamento.numero_documento.to_s.rjust(15, '0') # uso exclusivo 4
155
+ segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8
156
+ segmento_p << pagamento.formata_valor(15) # valor documento 15
157
+ segmento_p << ''.rjust(5, '0') # agencia cobradora 5
158
+ segmento_p << '0' # dv agencia cobradora 1
159
+ segmento_p << especie_titulo # especie do titulo 2
160
+ segmento_p << aceite # aceite 1
161
+ segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8
162
+ segmento_p << '0' # cod. do juros 1 *
163
+ segmento_p << ''.rjust(8, '0') # data juros 8 *
164
+ segmento_p << ''.rjust(15, '0') # valor juros 15 *
165
+ segmento_p << pagamento.cod_desconto # cod. do desconto 1
166
+ segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8
167
+ segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15
168
+ segmento_p << pagamento.formata_valor_iof(15) # valor IOF 15
169
+ segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15
170
+ segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 *
171
+ segmento_p << '0' # cod. para protesto 1 *
172
+ segmento_p << '00' # dias para protesto 2 *
173
+ segmento_p << '0' # cod. para baixa 1 *
174
+ segmento_p << '000' # dias para baixa 2 *
175
+ segmento_p << '09' # cod. da moeda 2
176
+ segmento_p << ''.rjust(10, '0') # uso exclusivo 10
177
+ segmento_p << ' ' # uso exclusivo 1
178
178
  segmento_p.upcase
179
179
  end
180
180
 
@@ -190,29 +190,29 @@ module Brcobranca
190
190
  # @return [String]
191
191
  #
192
192
  def monta_segmento_q(pagamento, nro_lote, sequencial)
193
- segmento_q = '' # CAMPO TAMANHO
194
- segmento_q << cod_banco # codigo banco 3
195
- segmento_q << nro_lote.to_s.rjust(4, '0') # lote de servico 4
196
- segmento_q << '3' # tipo de registro 1
197
- segmento_q << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
198
- segmento_q << 'Q' # cod. segmento 1
199
- segmento_q << ' ' # uso exclusivo 1
200
- segmento_q << '01' # cod. movimento remessa 2
201
- segmento_q << pagamento.identificacao_sacado(false) # tipo insc. sacado 1
202
- segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0') # documento sacado 14
203
- segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40
204
- segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40
205
- segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15
206
- segmento_q << pagamento.cep_sacado[0..4] # cep 5
207
- segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3
208
- segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15
209
- segmento_q << pagamento.uf_sacado # uf 2
210
- segmento_q << pagamento.identificacao_avalista(false) # identificacao do sacador 1
193
+ segmento_q = '' # CAMPO TAMANHO
194
+ segmento_q << cod_banco # codigo banco 3
195
+ segmento_q << nro_lote.to_s.rjust(4, '0') # lote de servico 4
196
+ segmento_q << '3' # tipo de registro 1
197
+ segmento_q << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
198
+ segmento_q << 'Q' # cod. segmento 1
199
+ segmento_q << ' ' # uso exclusivo 1
200
+ segmento_q << '01' # cod. movimento remessa 2
201
+ segmento_q << pagamento.identificacao_sacado(false) # tipo insc. sacado 1
202
+ segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0') # documento sacado 14
203
+ segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40
204
+ segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40
205
+ segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15
206
+ segmento_q << pagamento.cep_sacado[0..4] # cep 5
207
+ segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3
208
+ segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15
209
+ segmento_q << pagamento.uf_sacado # uf 2
210
+ segmento_q << pagamento.identificacao_avalista(false) # identificacao do sacador 1
211
211
  segmento_q << pagamento.documento_avalista.to_s.rjust(15, '0') # documento sacador 15
212
- segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40
213
- segmento_q << ''.rjust(3, '0') # cod. banco correspondente 3
214
- segmento_q << ''.rjust(20, ' ') # nosso numero banco correspondente 20
215
- segmento_q << ''.rjust(8, ' ') # uso exclusivo 8
212
+ segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40
213
+ segmento_q << ''.rjust(3, '0') # cod. banco correspondente 3
214
+ segmento_q << ''.rjust(20, ' ') # nosso numero banco correspondente 20
215
+ segmento_q << ''.rjust(8, ' ') # uso exclusivo 8
216
216
  segmento_q.upcase
217
217
  end
218
218
 
@@ -227,13 +227,13 @@ module Brcobranca
227
227
  # @return [String]
228
228
  #
229
229
  def monta_trailer_lote(nro_lote, nro_registros)
230
- trailer_lote = '' # CAMPO # TAMANHO
231
- trailer_lote << cod_banco # codigo banco 3
232
- trailer_lote << nro_lote.to_s.rjust(4, '0') # lote de servico 4
233
- trailer_lote << '5' # tipo de servico 1
234
- trailer_lote << ''.rjust(9, ' ') # uso exclusivo 9
230
+ trailer_lote = '' # CAMPO # TAMANHO
231
+ trailer_lote << cod_banco # codigo banco 3
232
+ trailer_lote << nro_lote.to_s.rjust(4, '0') # lote de servico 4
233
+ trailer_lote << '5' # tipo de servico 1
234
+ trailer_lote << ''.rjust(9, ' ') # uso exclusivo 9
235
235
  trailer_lote << nro_registros.to_s.rjust(6, '0') # qtde de registros lote 6
236
- trailer_lote << complemento_trailer # uso exclusivo 217
236
+ trailer_lote << complemento_trailer # uso exclusivo 217
237
237
  end
238
238
 
239
239
  # Monta o registro trailer do arquivo
@@ -32,7 +32,7 @@ module Brcobranca
32
32
  # data geracao [6] formato DDMMAA
33
33
  # complemento registro [294]
34
34
  # num. sequencial [6] 000001
35
- "01REMESSA01COBRANCA #{info_conta}#{empresa_mae.to_s.ljust(30, ' ')}#{cod_banco}#{nome_banco}#{data_geracao}#{complemento}000001"
35
+ "01REMESSA01COBRANCA #{info_conta}#{empresa_mae.format_size(30)}#{cod_banco}#{nome_banco}#{data_geracao}#{complemento}000001"
36
36
  end
37
37
 
38
38
  # Trailer do arquivo remessa
@@ -69,9 +69,9 @@ module Brcobranca
69
69
  # concatenando o endereco, cidade e uf
70
70
  #
71
71
  def formata_endereco_sacado(pgto)
72
- ret = "#{pgto.endereco_sacado}, #{pgto.cidade_sacado}/#{pgto.uf_sacado}".ljust(40, ' ')
73
- return ret if ret.size == 40
74
- "#{pgto.endereco_sacado[0..19]} #{pgto.cidade_sacado[0..14]}/#{pgto.uf_sacado}".ljust(40, ' ')
72
+ endereco = "#{pgto.endereco_sacado}, #{pgto.cidade_sacado}/#{pgto.uf_sacado}"
73
+ return endereco.ljust(40, ' ') if endereco.size <= 40
74
+ "#{pgto.endereco_sacado[0..19]} #{pgto.cidade_sacado[0..14]}/#{pgto.uf_sacado}".format_size(40)
75
75
  end
76
76
 
77
77
  def monta_detalhe(pagamento, sequencial)
@@ -128,7 +128,7 @@ module Brcobranca
128
128
  # asterisco);
129
129
  # b) sem o asterisco, este campo será o nome do Sacador/Avalista, quando preenchido;
130
130
  # c) Se posição 148/149 (Tipo de Emissão) estiver com código 08 ou 09, este campo será o e-mail do sacado.
131
- detalhe << pagamento.nome_avalista.rjust(40, ' ') # Sacador/Mensagens X[40]
131
+ detalhe << pagamento.nome_avalista.format_size(40) # Sacador/Mensagens X[40]
132
132
  detalhe << ''.rjust(2, ' ') # Brancos X[06]
133
133
  detalhe << '9' # moeda 9[01] - Código 9 = REAIS Código 5 = Dólar
134
134
  detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
@@ -27,7 +27,7 @@ module Brcobranca
27
27
  end
28
28
 
29
29
  def nome_banco
30
- 'SANTANDER'.ljust(15, ' ')
30
+ 'SANTANDER'.format_size(15)
31
31
  end
32
32
 
33
33
  # Informacoes do Código de Transmissão
@@ -135,7 +135,7 @@ module Brcobranca
135
135
  detalhe << pagamento.cep_sacado # cep do pagador 9[08]
136
136
  detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
137
137
  detalhe << pagamento.uf_sacado # uf do pagador X[02]
138
- detalhe << pagamento.nome_avalista.rjust(30, ' ') # Sacador/Mensagens X[40]
138
+ detalhe << pagamento.nome_avalista.format_size(30) # Sacador/Mensagens X[30]
139
139
  detalhe << ''.rjust(1, ' ') # Brancos X[1]
140
140
  detalhe << ''.rjust(1, ' ') # Identificador do Complemento X[1]
141
141
  detalhe << ''.rjust(2, ' ') # Complemento 9[2]
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Brcobranca
4
- VERSION = '6.0.1'
4
+ VERSION = '6.1.0'
5
5
  end