brcobranca 6.4.1 → 6.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -1
- data/README.md +1 -0
- data/lib/brcobranca.rb +2 -0
- data/lib/brcobranca/arquivos/logos/unicred.eps +0 -0
- data/lib/brcobranca/arquivos/logos/unicred_carne.eps +0 -0
- data/lib/brcobranca/boleto/hsbc.rb +1 -1
- data/lib/brcobranca/boleto/template/rghost.rb +12 -12
- data/lib/brcobranca/boleto/unicred.rb +19 -0
- data/lib/brcobranca/retorno/base.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +2 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +72 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +2 -2
- data/lib/brcobranca/version.rb +1 -1
- data/spec/arquivos/CNAB240SANTANDER.RET +26 -0
- data/spec/brcobranca/boleto/unicred_spec.rb +167 -0
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +32 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 907cfdce6c44ef1b78b3604dbafc18a8a2a49879
|
4
|
+
data.tar.gz: fa8e9b84175ae7b4b416414ef3cfd1cc031e2829
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e20b14a665c2324eae8ffe214dcf5007756dcfe5488a55dd0eaf306ca871c356608f6ed9779d94ce2022d6ebc789856b2c25f52fecdfcc16351623bf87ff2be8
|
7
|
+
data.tar.gz: 4914a11cf648f7c1d197dd719ff1957383f5454f5a4a92835c474ea3967037b498e6cd62c775f06d0153d33452218c5846ef5504180500834709140539c99846
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -32,6 +32,7 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros.
|
|
32
32
|
| 399 - HSBC | CNR, CSB - [Rafael DL](https://github.com/rafaeldl) | |
|
33
33
|
| 748 - Sicredi | C (03) | |
|
34
34
|
| 756 - Sicoob | Todas as carteiras presentes na documentação | |
|
35
|
+
| 756 - Unicred | 03 | |
|
35
36
|
|
36
37
|
### Retornos Disponíveis
|
37
38
|
|
data/lib/brcobranca.rb
CHANGED
@@ -102,6 +102,7 @@ module Brcobranca
|
|
102
102
|
autoload :Caixa, 'brcobranca/boleto/caixa'
|
103
103
|
autoload :Sicoob, 'brcobranca/boleto/sicoob'
|
104
104
|
autoload :Sicredi, 'brcobranca/boleto/sicredi'
|
105
|
+
autoload :Unicred, 'brcobranca/boleto/unicred'
|
105
106
|
autoload :Santander, 'brcobranca/boleto/santander'
|
106
107
|
autoload :Banestes, 'brcobranca/boleto/banestes'
|
107
108
|
|
@@ -134,6 +135,7 @@ module Brcobranca
|
|
134
135
|
module Cnab240
|
135
136
|
autoload :Base, 'brcobranca/retorno/cnab240/base'
|
136
137
|
autoload :Sicoob, 'brcobranca/retorno/cnab240/sicoob'
|
138
|
+
autoload :Santander, 'brcobranca/retorno/cnab240/santander'
|
137
139
|
end
|
138
140
|
end
|
139
141
|
|
Binary file
|
Binary file
|
@@ -54,7 +54,7 @@ module Brcobranca
|
|
54
54
|
soma = parte_1.to_i + conta_corrente.to_i + data.to_i
|
55
55
|
"#{parte_1}#{soma.to_s.modulo11(mapeamento: { 10 => 0 })}"
|
56
56
|
else
|
57
|
-
self.errors
|
57
|
+
self.errors.add(:data_vencimento, "não é uma data.")
|
58
58
|
fail Brcobranca::BoletoInvalido.new(self)
|
59
59
|
end
|
60
60
|
when 'CSB'
|
@@ -151,10 +151,10 @@ module Brcobranca
|
|
151
151
|
doc.show "#{boleto.documento_cedente.formata_documento}"
|
152
152
|
doc.moveto x: '12 cm', y: '22.2 cm'
|
153
153
|
doc.show boleto.data_vencimento.to_s_br
|
154
|
-
doc.moveto x: '
|
155
|
-
doc.show boleto.nosso_numero_boleto
|
156
|
-
doc.moveto x: '
|
157
|
-
doc.show boleto.valor_documento.to_currency
|
154
|
+
doc.moveto x: '20.3 cm', y: '23 cm'
|
155
|
+
doc.show boleto.nosso_numero_boleto, align: :show_right
|
156
|
+
doc.moveto x: '20.3 cm', y: '22.2 cm'
|
157
|
+
doc.show boleto.valor_documento.to_currency, align: :show_right
|
158
158
|
doc.moveto x: '1.5 cm', y: '20.9 cm'
|
159
159
|
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
|
160
160
|
doc.moveto x: '1.5 cm', y: '20.6 cm'
|
@@ -173,8 +173,8 @@ module Brcobranca
|
|
173
173
|
doc.show boleto.codigo_barras.linha_digitavel, tag: :grande
|
174
174
|
doc.moveto x: '0.7 cm', y: '16 cm'
|
175
175
|
doc.show boleto.local_pagamento
|
176
|
-
doc.moveto x: '
|
177
|
-
doc.show boleto.data_vencimento.to_s_br if boleto.data_vencimento
|
176
|
+
doc.moveto x: '20.3 cm', y: '16 cm'
|
177
|
+
doc.show boleto.data_vencimento.to_s_br, align: :show_right if boleto.data_vencimento
|
178
178
|
doc.moveto x: '0.7 cm', y: '15.2 cm'
|
179
179
|
if boleto.cedente_endereco
|
180
180
|
doc.show boleto.cedente_endereco
|
@@ -183,8 +183,8 @@ module Brcobranca
|
|
183
183
|
else
|
184
184
|
doc.show boleto.cedente
|
185
185
|
end
|
186
|
-
doc.moveto x: '
|
187
|
-
doc.show boleto.agencia_conta_boleto
|
186
|
+
doc.moveto x: '20.3 cm', y: '15.2 cm'
|
187
|
+
doc.show boleto.agencia_conta_boleto, align: :show_right
|
188
188
|
doc.moveto x: '0.7 cm', y: '14.4 cm'
|
189
189
|
doc.show boleto.data_documento.to_s_br if boleto.data_documento
|
190
190
|
doc.moveto x: '4.2 cm', y: '14.4 cm'
|
@@ -195,8 +195,8 @@ module Brcobranca
|
|
195
195
|
doc.show boleto.aceite
|
196
196
|
doc.moveto x: '13 cm', y: '14.4 cm'
|
197
197
|
doc.show boleto.data_processamento.to_s_br if boleto.data_processamento
|
198
|
-
doc.moveto x: '
|
199
|
-
doc.show boleto.nosso_numero_boleto
|
198
|
+
doc.moveto x: '20.3 cm', y: '14.4 cm'
|
199
|
+
doc.show boleto.nosso_numero_boleto, align: :show_right
|
200
200
|
doc.moveto x: '4.4 cm', y: '13.5 cm'
|
201
201
|
if boleto.variacao
|
202
202
|
doc.show "#{boleto.carteira}-#{boleto.variacao}"
|
@@ -209,8 +209,8 @@ module Brcobranca
|
|
209
209
|
# doc.show boleto.quantidade
|
210
210
|
# doc.moveto :x => '11 cm' , :y => '13.5 cm'
|
211
211
|
# doc.show boleto.valor.to_currency
|
212
|
-
doc.moveto x: '
|
213
|
-
doc.show boleto.valor_documento.to_currency
|
212
|
+
doc.moveto x: '20.3 cm', y: '13.5 cm'
|
213
|
+
doc.show boleto.valor_documento.to_currency, align: :show_right
|
214
214
|
doc.moveto x: '0.7 cm', y: '12.7 cm'
|
215
215
|
doc.show boleto.instrucao1
|
216
216
|
doc.moveto x: '0.7 cm', y: '12.3 cm'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Brcobranca
|
3
|
+
module Boleto
|
4
|
+
class Unicred < Brcobranca::Boleto::Sicredi
|
5
|
+
|
6
|
+
# Nova instancia do Unicred
|
7
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
8
|
+
def initialize(campos = {})
|
9
|
+
campos = {
|
10
|
+
carteira: '03',
|
11
|
+
especie_documento: 'DM',
|
12
|
+
local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED'
|
13
|
+
}.merge!(campos)
|
14
|
+
|
15
|
+
super(campos)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -17,6 +17,8 @@ module Brcobranca
|
|
17
17
|
Brcobranca::Retorno::Cnab240::Sicoob.load_lines(file, options)
|
18
18
|
when "104"
|
19
19
|
Brcobranca::Retorno::Cnab240::Caixa.load_lines(file, options)
|
20
|
+
when "033"
|
21
|
+
Brcobranca::Retorno::Cnab240::Santander.load_lines(file, options)
|
20
22
|
else
|
21
23
|
Brcobranca::Retorno::RetornoCnab240.load_lines(file, options)
|
22
24
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Retorno
|
5
|
+
module Cnab240
|
6
|
+
# Formato de Retorno CNAB 240
|
7
|
+
# Baseado em: http://www.wmcsistemas.com/instalar/Layouts%20-%20Boletos_Cheques_Integracoes/Layout%20Santander/Santander%20-%20CNAB%20240.pdf
|
8
|
+
class Santander < Brcobranca::Retorno::Cnab240::Base
|
9
|
+
# Regex para remoção de headers e trailers além de registros diferentes de T ou U
|
10
|
+
REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U = /^((?!^.{7}3.{5}[T|U].*$).)*$/
|
11
|
+
|
12
|
+
def self.load_lines(file, options = {})
|
13
|
+
default_options = { except: REGEX_DE_EXCLUSAO_DE_REGISTROS_NAO_T_OU_U }
|
14
|
+
options = default_options.merge!(options)
|
15
|
+
|
16
|
+
Line.load_lines(file, options).each_slice(2).reduce([]) do |retornos, cnab_lines|
|
17
|
+
retornos << generate_retorno_based_on_cnab_lines(cnab_lines)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.generate_retorno_based_on_cnab_lines(cnab_lines)
|
22
|
+
retorno = new
|
23
|
+
cnab_lines.each do |line|
|
24
|
+
if line.tipo_registro == 'T'
|
25
|
+
Line::REGISTRO_T_FIELDS.each do |attr|
|
26
|
+
retorno.send(attr + '=', line.send(attr))
|
27
|
+
end
|
28
|
+
else
|
29
|
+
Line::REGISTRO_U_FIELDS.each do |attr|
|
30
|
+
retorno.send(attr + '=', line.send(attr))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
retorno
|
35
|
+
end
|
36
|
+
|
37
|
+
class Line < Base
|
38
|
+
extend ParseLine::FixedWidth # Extendendo parseline
|
39
|
+
|
40
|
+
REGISTRO_T_FIELDS = %w(agencia_com_dv cedente_com_dv nosso_numero nosso_numero_com_dv carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa)
|
41
|
+
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito data_ocorrencia)
|
42
|
+
|
43
|
+
attr_accessor :tipo_registro
|
44
|
+
|
45
|
+
|
46
|
+
fixed_width_layout do |parse|
|
47
|
+
parse.field :tipo_registro, 13..13
|
48
|
+
parse.field :sequencial, 8..12
|
49
|
+
parse.field :agencia_com_dv, 17..22
|
50
|
+
parse.field :nosso_numero, 40..51
|
51
|
+
parse.field :nosso_numero_com_dv, 40..52
|
52
|
+
parse.field :carteira, 53..53
|
53
|
+
parse.field :data_vencimento, 69..76
|
54
|
+
parse.field :valor_titulo, 77..91
|
55
|
+
parse.field :banco_recebedor, 92..94
|
56
|
+
parse.field :agencia_recebedora_com_dv, 95..98
|
57
|
+
parse.field :data_ocorrencia, 137..144
|
58
|
+
parse.field :data_credito, 145..152
|
59
|
+
parse.field :outras_despesas, 107..121
|
60
|
+
parse.field :iof_desconto, 62..76
|
61
|
+
parse.field :valor_abatimento, 47..61
|
62
|
+
parse.field :desconto_concedito, 32..46
|
63
|
+
parse.field :valor_recebido, 77..91
|
64
|
+
parse.field :juros_mora, 17..31
|
65
|
+
parse.field :outros_recebimento, 122..136
|
66
|
+
parse.field :valor_tarifa, 193..207
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -41,7 +41,7 @@ module Brcobranca
|
|
41
41
|
extend ParseLine::FixedWidth # Extendendo parseline
|
42
42
|
|
43
43
|
REGISTRO_T_FIELDS = %w(agencia_com_dv cedente_com_dv nosso_numero carteira data_vencimento valor_titulo banco_recebedor agencia_recebedora_com_dv sequencial valor_tarifa)
|
44
|
-
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito)
|
44
|
+
REGISTRO_U_FIELDS = %w(desconto_concedito valor_abatimento iof_desconto juros_mora valor_recebido outras_despesas outros_recebimento data_credito data_ocorrencia)
|
45
45
|
|
46
46
|
attr_accessor :tipo_registro
|
47
47
|
|
@@ -56,7 +56,7 @@ module Brcobranca
|
|
56
56
|
parse.field :valor_titulo, 81..95
|
57
57
|
parse.field :banco_recebedor, 96..98
|
58
58
|
parse.field :agencia_recebedora_com_dv, 99..104
|
59
|
-
|
59
|
+
parse.field :data_ocorrencia, 137..144
|
60
60
|
parse.field :data_credito, 145..152
|
61
61
|
parse.field :outras_despesas, 107..121
|
62
62
|
parse.field :iof_desconto, 62..76
|
data/lib/brcobranca/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
03300000 2013021784000186999991234567891 007125577 XPTAVARES S.A BANCO SANTANDER (BRASIL) S/A 228042016 000000040
|
2
|
+
03308241T01 040 2013021784000186007125577 999991234567891 XPTAVARES S.A 0000000028042016
|
3
|
+
|
4
|
+
|
5
|
+
0330824300001T 02999991234567891 00000000000012 0505201600000000000102503312340 001000033806987840XUNDA 12345678910000000000002610000000000
|
6
|
+
0330824300002U 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002804201628042016000000000000000000000000000 000
|
7
|
+
|
8
|
+
0330824300003T 02999991234567891 00000000000022 0505201600000000010587703312340 002013021784000186XUNDA 12345678910000000000002610000000000
|
9
|
+
0330824300004U 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002804201628042016000000000000000000000000000 000
|
10
|
+
|
11
|
+
0330824300005T 02999991234567891 00000000000032 2804201600000000000012603312340 002013021784000186XUNDA 12345678910000000000002610000000000
|
12
|
+
0330824300006U 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002804201628042016000000000000000000000000000 000
|
13
|
+
|
14
|
+
0330824300007T 02999991234567891 00000000000042 2804201600000000000012703312340 001000033806987840XUNDA 12345678910000000000002610000000000
|
15
|
+
0330824300008U 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002804201628042016000000000000000000000000000 000
|
16
|
+
|
17
|
+
0330824300009T 06999991234567891 00000000000042 2804201600000000000012700112340 001000033806987840XUNDA 12345678910000000000000000400000000
|
18
|
+
0330824300010U 060000000000000000000000000000000000000000000000000000000000000000000000001270000000000001270000000000000000000000000000002804201629042016000000000000000000000000000 000
|
19
|
+
|
20
|
+
0330824300011T 17999991234567891 00000002896471 2804201600000000000012600112340 002000000000000000 12345678910000000000006000400000000
|
21
|
+
0330824300012U 170000000000000000000000000000000000000000000000000000000000000000000000001260000000000001260000000000000000000000000000002804201629042016000000000000000000000000000 000
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
03308245 0000120000030000000000010702800000000000000000000000000000000000000000000000000000000000000000000000000001
|
26
|
+
03308249 000001000016
|
@@ -0,0 +1,167 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
RSpec.describe Brcobranca::Boleto::Unicred do
|
5
|
+
before do
|
6
|
+
@valid_attributes = {
|
7
|
+
especie_documento: 'DM',
|
8
|
+
data_documento: Date.parse('2012-01-18'),
|
9
|
+
valor: 0.0,
|
10
|
+
cedente: 'Kivanio Barbosa',
|
11
|
+
documento_cedente: '12345678912',
|
12
|
+
sacado: 'Claudio Pozzebom',
|
13
|
+
sacado_documento: '12345678900',
|
14
|
+
agencia: '4042',
|
15
|
+
conta_corrente: '61900',
|
16
|
+
convenio: 12_387_989,
|
17
|
+
numero_documento: '00168',
|
18
|
+
posto: '1',
|
19
|
+
byte_idt: '7'
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'Criar nova instancia com atributos padrões' do
|
24
|
+
boleto_novo = described_class.new
|
25
|
+
expect(boleto_novo.banco).to eql('748')
|
26
|
+
expect(boleto_novo.especie_documento).to eql('DM')
|
27
|
+
expect(boleto_novo.especie).to eql('R$')
|
28
|
+
expect(boleto_novo.moeda).to eql('9')
|
29
|
+
expect(boleto_novo.data_documento).to eql(Date.today)
|
30
|
+
expect(boleto_novo.data_vencimento).to eql(Date.today)
|
31
|
+
expect(boleto_novo.aceite).to eql('S')
|
32
|
+
expect(boleto_novo.quantidade).to eql(1)
|
33
|
+
expect(boleto_novo.valor).to eql(0.0)
|
34
|
+
expect(boleto_novo.valor_documento).to eql(0.0)
|
35
|
+
expect(boleto_novo.local_pagamento).to eql('PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED')
|
36
|
+
expect(boleto_novo.carteira).to eql('03')
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'Criar nova instancia com atributos válidos' do
|
40
|
+
boleto_novo = described_class.new(@valid_attributes)
|
41
|
+
expect(boleto_novo.banco).to eql('748')
|
42
|
+
expect(boleto_novo.especie_documento).to eql('DM')
|
43
|
+
expect(boleto_novo.especie).to eql('R$')
|
44
|
+
expect(boleto_novo.moeda).to eql('9')
|
45
|
+
expect(boleto_novo.data_documento).to eql(Date.parse('2012-01-18'))
|
46
|
+
expect(boleto_novo.data_vencimento).to eql(Date.today)
|
47
|
+
expect(boleto_novo.aceite).to eql('S')
|
48
|
+
expect(boleto_novo.quantidade).to eql(1)
|
49
|
+
expect(boleto_novo.valor).to eql(0.0)
|
50
|
+
expect(boleto_novo.valor_documento).to eql(0.0)
|
51
|
+
expect(boleto_novo.local_pagamento).to eql('PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED')
|
52
|
+
expect(boleto_novo.cedente).to eql('Kivanio Barbosa')
|
53
|
+
expect(boleto_novo.documento_cedente).to eql('12345678912')
|
54
|
+
expect(boleto_novo.sacado).to eql('Claudio Pozzebom')
|
55
|
+
expect(boleto_novo.sacado_documento).to eql('12345678900')
|
56
|
+
expect(boleto_novo.conta_corrente).to eql('61900')
|
57
|
+
expect(boleto_novo.agencia).to eql('4042')
|
58
|
+
expect(boleto_novo.convenio).to eql(12_387_989)
|
59
|
+
expect(boleto_novo.numero_documento).to eql('00168')
|
60
|
+
expect(boleto_novo.carteira).to eql('03')
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'Montar código de barras para carteira número 03' do
|
64
|
+
@valid_attributes[:valor] = 2952.95
|
65
|
+
@valid_attributes[:data_vencimento] = Date.parse('2012-01-24')
|
66
|
+
@valid_attributes[:data_documento] = Date.parse('2012-01-19')
|
67
|
+
@valid_attributes[:numero_documento] = '13871'
|
68
|
+
@valid_attributes[:conta_corrente] = '12345'
|
69
|
+
@valid_attributes[:agencia] = '1234'
|
70
|
+
@valid_attributes[:carteira] = '03'
|
71
|
+
@valid_attributes[:posto] = '8'
|
72
|
+
@valid_attributes[:aceite] = 'N'
|
73
|
+
@valid_attributes[:byte_idt] = '2'
|
74
|
+
boleto_novo = described_class.new(@valid_attributes)
|
75
|
+
|
76
|
+
expect(boleto_novo.codigo_barras.linha_digitavel).to eql('74893.11220 13871.212349 08123.451018 3 52220000295295')
|
77
|
+
expect(boleto_novo.codigo_barras_segunda_parte).to eql('3112213871212340812345101')
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'Não permitir gerar boleto com atributos inválido' do
|
81
|
+
boleto_novo = described_class.new
|
82
|
+
expect { boleto_novo.codigo_barras }.to raise_error(Brcobranca::BoletoInvalido)
|
83
|
+
expect(boleto_novo.errors.count).to eql(4)
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'Montar nosso_numero_boleto' do
|
87
|
+
boleto_novo = described_class.new(@valid_attributes)
|
88
|
+
|
89
|
+
boleto_novo.byte_idt = '2'
|
90
|
+
boleto_novo.agencia = '1234'
|
91
|
+
boleto_novo.posto = '18'
|
92
|
+
boleto_novo.conta_corrente = '12345'
|
93
|
+
boleto_novo.numero_documento = '13871'
|
94
|
+
boleto_novo.carteira = '03'
|
95
|
+
expect(boleto_novo.nosso_numero_boleto).to eql('12/213871-5')
|
96
|
+
expect(boleto_novo.nosso_numero_dv).to eql(5)
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'Montar agencia_conta_boleto' do
|
100
|
+
boleto_novo = described_class.new(@valid_attributes)
|
101
|
+
|
102
|
+
boleto_novo.agencia = '1234'
|
103
|
+
boleto_novo.posto = '18'
|
104
|
+
boleto_novo.conta_corrente = '12345'
|
105
|
+
expect(boleto_novo.agencia_conta_boleto).to eql('1234.18.12345')
|
106
|
+
end
|
107
|
+
|
108
|
+
describe 'Busca logotipo do banco' do
|
109
|
+
it_behaves_like 'busca_logotipo'
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'Gerar boleto nos formatos válidos com método to_' do
|
113
|
+
boleto_novo = described_class.new(@valid_attributes)
|
114
|
+
|
115
|
+
%w(pdf jpg tif png).each do |format|
|
116
|
+
file_body = boleto_novo.send("to_#{format}".to_sym)
|
117
|
+
tmp_file = Tempfile.new('foobar.' << format)
|
118
|
+
tmp_file.puts file_body
|
119
|
+
tmp_file.close
|
120
|
+
expect(File.exist?(tmp_file.path)).to be_truthy
|
121
|
+
expect(File.stat(tmp_file.path).zero?).to be_falsey
|
122
|
+
expect(File.delete(tmp_file.path)).to eql(1)
|
123
|
+
expect(File.exist?(tmp_file.path)).to be_falsey
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'Gerar boleto nos formatos válidos' do
|
128
|
+
@valid_attributes[:valor] = 2952.95
|
129
|
+
@valid_attributes[:data_documento] = Date.parse('2009-04-30')
|
130
|
+
@valid_attributes[:data_vencimento] = Date.parse('2008-02-01')
|
131
|
+
@valid_attributes[:numero_documento] = '86452'
|
132
|
+
@valid_attributes[:conta_corrente] = '03005'
|
133
|
+
@valid_attributes[:agencia] = '1172'
|
134
|
+
boleto_novo = described_class.new(@valid_attributes)
|
135
|
+
|
136
|
+
%w(pdf jpg tif png).each do |format|
|
137
|
+
file_body = boleto_novo.to(format)
|
138
|
+
tmp_file = Tempfile.new('foobar.' << format)
|
139
|
+
tmp_file.puts file_body
|
140
|
+
tmp_file.close
|
141
|
+
expect(File.exist?(tmp_file.path)).to be_truthy
|
142
|
+
expect(File.stat(tmp_file.path).zero?).to be_falsey
|
143
|
+
expect(File.delete(tmp_file.path)).to eql(1)
|
144
|
+
expect(File.exist?(tmp_file.path)).to be_falsey
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
it "quando dígito verificador for 10 deve ser mapeado para 0" do
|
149
|
+
attributes = {
|
150
|
+
convenio: "2442725",
|
151
|
+
agencia: "0217",
|
152
|
+
conta_corrente: "42725",
|
153
|
+
byte_idt: 1,
|
154
|
+
posto: "24",
|
155
|
+
numero_documento: 25,
|
156
|
+
valor: 20.00,
|
157
|
+
data_documento: Date.parse("2015-01-18")
|
158
|
+
}
|
159
|
+
attributes = @valid_attributes.merge(attributes)
|
160
|
+
boleto_novo = described_class.new(attributes)
|
161
|
+
|
162
|
+
result = boleto_novo.nosso_numero_dv
|
163
|
+
|
164
|
+
expect("#{boleto_novo.agencia_posto_conta}#{boleto_novo.numero_documento_with_byte_idt}".modulo11).to eq(10)
|
165
|
+
expect(result).to eq(0)
|
166
|
+
end
|
167
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*_ encoding: utf-8 -*-
|
2
|
+
require "spec_helper"
|
3
|
+
RSpec.describe Brcobranca::Retorno::Cnab240::Santander do
|
4
|
+
before do
|
5
|
+
@arquivo = File.join(File.dirname(__FILE__), "..", "..", "..", "arquivos", "CNAB240SANTANDER.RET")
|
6
|
+
end
|
7
|
+
|
8
|
+
it "Transforma arquivo de retorno em objetos de retorno retornando somente as linhas de pagamentos de titulos sem registro" do
|
9
|
+
pagamentos = described_class.load_lines(@arquivo)
|
10
|
+
expect(pagamentos.size).to eq(6)
|
11
|
+
pagamento = pagamentos.last
|
12
|
+
expect(pagamento.agencia_com_dv).to eql("999991")
|
13
|
+
expect(pagamento.nosso_numero_com_dv).to eql("0000000289647")
|
14
|
+
expect(pagamento.nosso_numero).to eql("000000028964")
|
15
|
+
expect(pagamento.carteira).to eql("1")
|
16
|
+
expect(pagamento.data_vencimento).to eql("28042016")
|
17
|
+
expect(pagamento.valor_titulo).to eql("000000000000126")
|
18
|
+
expect(pagamento.banco_recebedor).to eql("001")
|
19
|
+
expect(pagamento.agencia_recebedora_com_dv).to eql("1234")
|
20
|
+
expect(pagamento.data_credito).to eql("29042016")
|
21
|
+
expect(pagamento.outras_despesas).to eql("000000000000000")
|
22
|
+
expect(pagamento.iof_desconto).to eql("000000000000000")
|
23
|
+
expect(pagamento.valor_abatimento).to eql("000000000000000")
|
24
|
+
expect(pagamento.desconto_concedito).to eql("000000000000000")
|
25
|
+
expect(pagamento.valor_recebido).to eql("000000000000126")
|
26
|
+
expect(pagamento.juros_mora).to eql("000000000000000")
|
27
|
+
expect(pagamento.outros_recebimento).to eql("000000000000000")
|
28
|
+
expect(pagamento.sequencial).to eql("00011")
|
29
|
+
expect(pagamento.valor_tarifa).to eql("000000000000600")
|
30
|
+
expect(pagamento.data_ocorrencia).to eql("28042016")
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brcobranca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kivanio Barbosa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rghost
|
@@ -121,6 +121,8 @@ files:
|
|
121
121
|
- lib/brcobranca/arquivos/logos/sicoob_carne.eps
|
122
122
|
- lib/brcobranca/arquivos/logos/sicredi.eps
|
123
123
|
- lib/brcobranca/arquivos/logos/sicredi_carne.eps
|
124
|
+
- lib/brcobranca/arquivos/logos/unicred.eps
|
125
|
+
- lib/brcobranca/arquivos/logos/unicred_carne.eps
|
124
126
|
- lib/brcobranca/arquivos/templates/modelo_carne.eps
|
125
127
|
- lib/brcobranca/arquivos/templates/modelo_generico.eps
|
126
128
|
- lib/brcobranca/boleto/banco_brasil.rb
|
@@ -136,6 +138,7 @@ files:
|
|
136
138
|
- lib/brcobranca/boleto/template/base.rb
|
137
139
|
- lib/brcobranca/boleto/template/rghost.rb
|
138
140
|
- lib/brcobranca/boleto/template/rghost_carne.rb
|
141
|
+
- lib/brcobranca/boleto/unicred.rb
|
139
142
|
- lib/brcobranca/calculo.rb
|
140
143
|
- lib/brcobranca/calculo_data.rb
|
141
144
|
- lib/brcobranca/currency.rb
|
@@ -157,6 +160,7 @@ files:
|
|
157
160
|
- lib/brcobranca/retorno/base.rb
|
158
161
|
- lib/brcobranca/retorno/cnab240/base.rb
|
159
162
|
- lib/brcobranca/retorno/cnab240/caixa.rb
|
163
|
+
- lib/brcobranca/retorno/cnab240/santander.rb
|
160
164
|
- lib/brcobranca/retorno/cnab240/sicoob.rb
|
161
165
|
- lib/brcobranca/retorno/cnab400/base.rb
|
162
166
|
- lib/brcobranca/retorno/cnab400/bradesco.rb
|
@@ -168,6 +172,7 @@ files:
|
|
168
172
|
- lib/brcobranca/version.rb
|
169
173
|
- spec/arquivos/CBR64310.RET
|
170
174
|
- spec/arquivos/CNAB240.RET
|
175
|
+
- spec/arquivos/CNAB240SANTANDER.RET
|
171
176
|
- spec/arquivos/CNAB240SICOOB.RET
|
172
177
|
- spec/arquivos/CNAB400.RET
|
173
178
|
- spec/arquivos/CNAB400BRADESCO.RET
|
@@ -182,6 +187,7 @@ files:
|
|
182
187
|
- spec/brcobranca/boleto/santander_spec.rb
|
183
188
|
- spec/brcobranca/boleto/sicoob_spec.rb
|
184
189
|
- spec/brcobranca/boleto/sicredi_spec.rb
|
190
|
+
- spec/brcobranca/boleto/unicred_spec.rb
|
185
191
|
- spec/brcobranca/boletos_em_lote_spec.rb
|
186
192
|
- spec/brcobranca/calculo_data_spec.rb
|
187
193
|
- spec/brcobranca/calculo_spec.rb
|
@@ -202,6 +208,7 @@ files:
|
|
202
208
|
- spec/brcobranca/remessa/cnab400/sicoob_spec.rb
|
203
209
|
- spec/brcobranca/remessa/pagamento_spec.rb
|
204
210
|
- spec/brcobranca/retorno/cnab240/base_spec.rb
|
211
|
+
- spec/brcobranca/retorno/cnab240/santander_spec.rb
|
205
212
|
- spec/brcobranca/retorno/cnab240/sicoob_spec.rb
|
206
213
|
- spec/brcobranca/retorno/cnab400/base_spec.rb
|
207
214
|
- spec/brcobranca/retorno/cnab400/bradesco_spec.rb
|
@@ -254,6 +261,7 @@ summary: Gem que permite trabalhar com bloquetos de cobranca para bancos brasile
|
|
254
261
|
test_files:
|
255
262
|
- spec/arquivos/CBR64310.RET
|
256
263
|
- spec/arquivos/CNAB240.RET
|
264
|
+
- spec/arquivos/CNAB240SANTANDER.RET
|
257
265
|
- spec/arquivos/CNAB240SICOOB.RET
|
258
266
|
- spec/arquivos/CNAB400.RET
|
259
267
|
- spec/arquivos/CNAB400BRADESCO.RET
|
@@ -268,6 +276,7 @@ test_files:
|
|
268
276
|
- spec/brcobranca/boleto/santander_spec.rb
|
269
277
|
- spec/brcobranca/boleto/sicoob_spec.rb
|
270
278
|
- spec/brcobranca/boleto/sicredi_spec.rb
|
279
|
+
- spec/brcobranca/boleto/unicred_spec.rb
|
271
280
|
- spec/brcobranca/boletos_em_lote_spec.rb
|
272
281
|
- spec/brcobranca/calculo_data_spec.rb
|
273
282
|
- spec/brcobranca/calculo_spec.rb
|
@@ -288,6 +297,7 @@ test_files:
|
|
288
297
|
- spec/brcobranca/remessa/cnab400/sicoob_spec.rb
|
289
298
|
- spec/brcobranca/remessa/pagamento_spec.rb
|
290
299
|
- spec/brcobranca/retorno/cnab240/base_spec.rb
|
300
|
+
- spec/brcobranca/retorno/cnab240/santander_spec.rb
|
291
301
|
- spec/brcobranca/retorno/cnab240/sicoob_spec.rb
|
292
302
|
- spec/brcobranca/retorno/cnab400/base_spec.rb
|
293
303
|
- spec/brcobranca/retorno/cnab400/bradesco_spec.rb
|