brcobranca 6.0.1 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +4 -4
- data/README.md +5 -3
- data/lib/brcobranca/formatacao_string.rb +5 -2
- data/lib/brcobranca/remessa/base.rb +0 -1
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +120 -2
- data/lib/brcobranca/remessa/cnab240/base.rb +108 -108
- data/lib/brcobranca/remessa/cnab400/base.rb +1 -1
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +3 -3
- data/lib/brcobranca/remessa/cnab400/citibank.rb +1 -1
- data/lib/brcobranca/remessa/cnab400/santander.rb +2 -2
- data/lib/brcobranca/version.rb +1 -1
- data/spec/brcobranca/formatacao_string_spec.rb +25 -0
- data/spec/brcobranca/remessa/base_spec.rb +10 -16
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +13 -6
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +5 -5
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +24 -17
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +7 -7
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +10 -10
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +59 -52
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +43 -36
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +61 -54
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +43 -36
- data/spec/brcobranca/remessa/pagamento_spec.rb +9 -9
- data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +6 -0
- data/spec/fixtures/remessa/{remessa-bancoob.rem → remessa-bancoob-cnab240.rem} +3 -3
- data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +6 -0
- data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-itau-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
- data/spec/support/shared_examples/cnab240.rb +87 -85
- data/spec/support/shared_examples/cnab400.rb +17 -16
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b384bcf7d962c4f96859abe802b0c887bb4d94e5
|
4
|
+
data.tar.gz: ceaba8715d7ba0eb68a41bd029a1af148408ae8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78e3c4faf9ecaf690196bb15ce8ef59f351587af7c65405cd6603afbe173e46618690b8272045c92f46f32072d739e76f14a58307eed32c9abe35abb77daa9f7
|
7
|
+
data.tar.gz: 2599dbb5f47fd715a10dfd554fd2db079e7be66b145ae4a552b3cca58488343047582c9995fd38c1736cc6ced2b6399b3df61b9c02479c1a6d45303a2136d1b4
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
brcobranca (6.0
|
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.
|
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.
|
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.
|
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
|
-
|
|
27
|
-
|
|
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
|
-
|
14
|
+
ActiveSupport::Inflector.transliterate(truncate(size, omission: ''))
|
12
15
|
else
|
13
|
-
|
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'
|
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 = ''
|
71
|
-
header_arquivo << cod_banco
|
72
|
-
header_arquivo << '0000'
|
73
|
-
header_arquivo << '0'
|
74
|
-
header_arquivo << ''.rjust(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')
|
77
|
-
header_arquivo << codigo_convenio
|
78
|
-
header_arquivo << info_conta
|
79
|
-
header_arquivo << empresa_mae.format_size(30)
|
80
|
-
header_arquivo << nome_banco.format_size(30)
|
81
|
-
header_arquivo << ''.rjust(10, ' ')
|
82
|
-
header_arquivo << '1'
|
83
|
-
header_arquivo << data_geracao
|
84
|
-
header_arquivo << hora_geracao
|
85
|
-
header_arquivo << sequencial_remessa.to_s.rjust(6, '0')
|
86
|
-
header_arquivo << versao_layout_arquivo
|
87
|
-
header_arquivo << ''.rjust(5, '0')
|
88
|
-
header_arquivo << ''.rjust(20, '0')
|
89
|
-
header_arquivo << ''.rjust(20, '0')
|
90
|
-
header_arquivo << complemento_header
|
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 = ''
|
103
|
-
header_lote << cod_banco
|
104
|
-
header_lote << nro_lote.to_s.rjust(4, '0')
|
105
|
-
header_lote << '1'
|
106
|
-
header_lote << 'R'
|
107
|
-
header_lote << '01'
|
108
|
-
header_lote << ' '
|
109
|
-
header_lote << versao_layout_lote
|
110
|
-
header_lote << ' '
|
111
|
-
header_lote << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo
|
112
|
-
header_lote << documento_cedente.to_s.rjust(15, '0')
|
113
|
-
header_lote << convenio_lote
|
114
|
-
header_lote << info_conta
|
115
|
-
header_lote << empresa_mae.
|
116
|
-
header_lote << mensagem_1.to_s.format_size(40)
|
117
|
-
header_lote << mensagem_2.to_s.format_size(40)
|
118
|
-
header_lote << sequencial_remessa.to_s.rjust(8, '0')
|
119
|
-
header_lote << data_geracao
|
120
|
-
header_lote << ''.rjust(8, '0')
|
121
|
-
header_lote << ''.rjust(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
|
-
#
|
139
|
-
segmento_p = cod_banco
|
140
|
-
segmento_p << nro_lote.to_s.rjust(4, '0')
|
141
|
-
segmento_p << '3'
|
142
|
-
segmento_p << sequencial.to_s.rjust(5, '0')
|
143
|
-
segmento_p << 'P'
|
144
|
-
segmento_p << ' '
|
145
|
-
segmento_p << '01'
|
146
|
-
segmento_p << agencia.to_s.rjust(5, '0')
|
147
|
-
segmento_p << digito_agencia.to_s
|
148
|
-
segmento_p << complemento_p(pagamento)
|
149
|
-
segmento_p << codigo_carteira
|
150
|
-
segmento_p << forma_cadastramento
|
151
|
-
segmento_p << tipo_documento
|
152
|
-
segmento_p << emissao_boleto
|
153
|
-
segmento_p << distribuicao_boleto
|
154
|
-
segmento_p << pagamento.numero_documento.to_s.rjust(15, '0')
|
155
|
-
segmento_p << pagamento.data_vencimento.strftime('%d%m%Y')
|
156
|
-
segmento_p << pagamento.formata_valor(15)
|
157
|
-
segmento_p << ''.rjust(5, '0')
|
158
|
-
segmento_p << '0'
|
159
|
-
segmento_p << especie_titulo
|
160
|
-
segmento_p << aceite
|
161
|
-
segmento_p << pagamento.data_emissao.strftime('%d%m%Y')
|
162
|
-
segmento_p << '0'
|
163
|
-
segmento_p << ''.rjust(8, '0')
|
164
|
-
segmento_p << ''.rjust(15, '0')
|
165
|
-
segmento_p << pagamento.cod_desconto
|
166
|
-
segmento_p << pagamento.formata_data_desconto('%d%m%Y')
|
167
|
-
segmento_p << pagamento.formata_valor_desconto(15)
|
168
|
-
segmento_p << pagamento.formata_valor_iof(15)
|
169
|
-
segmento_p << pagamento.formata_valor_abatimento(15)
|
170
|
-
segmento_p << ''.rjust(25, ' ')
|
171
|
-
segmento_p << '0'
|
172
|
-
segmento_p << '00'
|
173
|
-
segmento_p << '0'
|
174
|
-
segmento_p << '000'
|
175
|
-
segmento_p << '09'
|
176
|
-
segmento_p << ''.rjust(10, '0')
|
177
|
-
segmento_p << ' '
|
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 = ''
|
194
|
-
segmento_q << cod_banco
|
195
|
-
segmento_q << nro_lote.to_s.rjust(4, '0')
|
196
|
-
segmento_q << '3'
|
197
|
-
segmento_q << sequencial.to_s.rjust(5, '0')
|
198
|
-
segmento_q << 'Q'
|
199
|
-
segmento_q << ' '
|
200
|
-
segmento_q << '01'
|
201
|
-
segmento_q << pagamento.identificacao_sacado(false)
|
202
|
-
segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0')
|
203
|
-
segmento_q << pagamento.nome_sacado.format_size(40)
|
204
|
-
segmento_q << pagamento.endereco_sacado.format_size(40)
|
205
|
-
segmento_q << pagamento.bairro_sacado.format_size(15)
|
206
|
-
segmento_q << pagamento.cep_sacado[0..4]
|
207
|
-
segmento_q << pagamento.cep_sacado[5..7]
|
208
|
-
segmento_q << pagamento.cidade_sacado.format_size(15)
|
209
|
-
segmento_q << pagamento.uf_sacado
|
210
|
-
segmento_q << pagamento.identificacao_avalista(false)
|
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)
|
213
|
-
segmento_q << ''.rjust(3, '0')
|
214
|
-
segmento_q << ''.rjust(20, ' ')
|
215
|
-
segmento_q << ''.rjust(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 = ''
|
231
|
-
trailer_lote << cod_banco
|
232
|
-
trailer_lote << nro_lote.to_s.rjust(4, '0')
|
233
|
-
trailer_lote << '5'
|
234
|
-
trailer_lote << ''.rjust(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
|
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.
|
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
|
-
|
73
|
-
return
|
74
|
-
"#{pgto.endereco_sacado[0..19]} #{pgto.cidade_sacado[0..14]}/#{pgto.uf_sacado}".
|
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.
|
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'.
|
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.
|
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]
|
data/lib/brcobranca/version.rb
CHANGED