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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5a43c935455c7b61ec04dc199fabf5909cba8e44
4
- data.tar.gz: d6da66172c2c81c0891491c7361f1a8384ac259a
3
+ metadata.gz: 907cfdce6c44ef1b78b3604dbafc18a8a2a49879
4
+ data.tar.gz: fa8e9b84175ae7b4b416414ef3cfd1cc031e2829
5
5
  SHA512:
6
- metadata.gz: 2eeb4fead4948e171e9efff4841e2e846305faeec867a32deb59fa202d6b49dcd7c480acefe6add636371ac646554b8e920f8e995facd24da44a06f62f8dc40e
7
- data.tar.gz: 165181b485a31718d71ce94e957b4c7bd89daea332255d98d2496d79c1ddc5d3b725decce6df94a85c5dad5a476571f81b41aaf485c499b90e7a89a70d035a13
6
+ metadata.gz: e20b14a665c2324eae8ffe214dcf5007756dcfe5488a55dd0eaf306ca871c356608f6ed9779d94ce2022d6ebc789856b2c25f52fecdfcc16351623bf87ff2be8
7
+ data.tar.gz: 4914a11cf648f7c1d197dd719ff1957383f5454f5a4a92835c474ea3967037b498e6cd62c775f06d0153d33452218c5846ef5504180500834709140539c99846
@@ -3,7 +3,6 @@ sudo: false
3
3
  rvm:
4
4
  - '2.3.0'
5
5
  - '2.2.3'
6
- - '1.9.3'
7
6
  - 'jruby'
8
7
  - 'rbx'
9
8
  branches:
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
 
@@ -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
 
@@ -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[:data_vencimento] = 'não é uma data.'
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: '16.5 cm', y: '23 cm'
155
- doc.show boleto.nosso_numero_boleto
156
- doc.moveto x: '16.5 cm', y: '22.2 cm'
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: '16.5 cm', y: '16 cm'
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: '16.5 cm', y: '15.2 cm'
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: '16.5 cm', y: '14.4 cm'
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: '16.5 cm', y: '13.5 cm'
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
@@ -8,6 +8,7 @@ module Brcobranca
8
8
  attr_accessor :cedente_com_dv
9
9
  attr_accessor :convenio
10
10
  attr_accessor :nosso_numero
11
+ attr_accessor :nosso_numero_com_dv
11
12
  attr_accessor :cod_de_ocorrencia
12
13
  attr_accessor :tipo_cobranca
13
14
  attr_accessor :tipo_cobranca_anterior
@@ -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
- # parse.field :data_ocorrencia, 137..144
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
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module Brcobranca
4
- VERSION = '6.4.1'
4
+ VERSION = '6.5.0'
5
5
  end
@@ -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.1
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-05-27 00:00:00.000000000 Z
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