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 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