brcobranca 6.4.1 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|