brcobranca 3.1.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ == 3.1.1 08-09-2012
2
+
3
+ * adicionado boletos do Santader by Ronaldo Araujo
4
+
1
5
  == 3.0.0 14-04-2011
2
6
 
3
7
  * Múltiplos boletos em lote com RGhost
data/README.rdoc CHANGED
@@ -13,9 +13,6 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros
13
13
 
14
14
  == Bancos Disponíveis
15
15
 
16
- * Banco Banespa
17
- * COB
18
-
19
16
  * Banco do Brasil
20
17
  * TODAS AS CARTEIRAS PRESENTES NA DOCUMENTAÇÃO
21
18
 
@@ -41,6 +38,10 @@ Gem para emissão de bloquetos de cobrança para bancos brasileiros
41
38
 
42
39
  * Banco SICREDI
43
40
 
41
+ * Banco Santander by Ronaldo Araujo - https://github.com/ronaldoaraujo
42
+ * Sem registro
43
+ * Com registro
44
+
44
45
  == Retornos Disponíveis
45
46
 
46
47
  * CBR643
data/lib/brcobranca.rb CHANGED
@@ -103,7 +103,8 @@ module Brcobranca
103
103
  autoload :Bradesco, 'brcobranca/boleto/bradesco'
104
104
  autoload :Unibanco, 'brcobranca/boleto/unibanco'
105
105
  autoload :Caixa, 'brcobranca/boleto/caixa'
106
- autoload :Sicredi, 'brcobranca/boleto/sicredi'
106
+ autoload :Sicredi, 'brcobranca/boleto/sicredi'
107
+ autoload :Santander, 'brcobranca/boleto/santander'
107
108
 
108
109
  # Módulos para classes de template
109
110
  module Template
@@ -46,7 +46,7 @@ module Brcobranca
46
46
  #
47
47
  # @return [String] 2 caracteres numéricos.
48
48
  def carteira=(valor)
49
- @carteira = valor.to_s.rjust(2,'0') unless valor.nil?
49
+ @carteira = valor.to_s.rjust(2,'0') if valor
50
50
  end
51
51
 
52
52
  # Dígito verificador do banco
@@ -66,7 +66,7 @@ module Brcobranca
66
66
  # Conta corrente
67
67
  # @return [String] 8 caracteres numéricos.
68
68
  def conta_corrente=(valor)
69
- @conta_corrente = valor.to_s.rjust(8,'0') unless valor.nil?
69
+ @conta_corrente = valor.to_s.rjust(8,'0') if valor
70
70
  end
71
71
 
72
72
  # Dígito verificador da conta corrente
@@ -108,7 +108,7 @@ module Brcobranca
108
108
  # Código da agencia
109
109
  # @return [String] 4 caracteres numéricos.
110
110
  def agencia=(valor)
111
- @agencia = valor.to_s.rjust(4,'0') unless valor.nil?
111
+ @agencia = valor.to_s.rjust(4,'0') if valor
112
112
  end
113
113
 
114
114
  # Dígito verificador da agência
@@ -142,7 +142,7 @@ module Brcobranca
142
142
  # Valor total do documento: <b>quantidate * valor</b>
143
143
  # @return [Float]
144
144
  def valor_documento
145
- self.quantidade.to_f * self.valor.to_f
145
+ '%.2f' % (self.quantidade.to_f * self.valor.to_f)
146
146
  end
147
147
 
148
148
  # Data de vencimento baseado na <b>data_documento + dias_vencimento</b>
@@ -164,7 +164,7 @@ module Brcobranca
164
164
  # Número da conta corrente
165
165
  # @return [String] 7 caracteres numéricos.
166
166
  def conta_corrente=(valor)
167
- @conta_corrente = valor.to_s.rjust(7,'0') unless valor.nil?
167
+ @conta_corrente = valor.to_s.rjust(7,'0') if valor
168
168
  end
169
169
 
170
170
  # Codigo de barras do boleto
@@ -26,13 +26,13 @@ module Brcobranca
26
26
  #
27
27
  # @return [String] 2 caracteres numéricos.
28
28
  def carteira=(valor)
29
- @carteira = valor.to_s.rjust(2,'0') unless valor.nil?
29
+ @carteira = valor.to_s.rjust(2,'0') if valor
30
30
  end
31
31
 
32
32
  # Número seqüencial utilizado para identificar o boleto.
33
33
  # @return [String] 11 caracteres numéricos.
34
34
  def numero_documento=(valor)
35
- @numero_documento = valor.to_s.rjust(11,'0') unless valor.nil?
35
+ @numero_documento = valor.to_s.rjust(11,'0') if valor
36
36
  end
37
37
 
38
38
  # Nosso número para exibir no boleto.
@@ -25,7 +25,7 @@ module Brcobranca
25
25
  # Número seqüencial utilizado para identificar o boleto.
26
26
  # @return [String] 13 caracteres numéricos.
27
27
  def numero_documento=(valor)
28
- @numero_documento = valor.to_s.rjust(13,'0') unless valor.nil?
28
+ @numero_documento = valor.to_s.rjust(13,'0') if valor
29
29
  end
30
30
 
31
31
  # Número seqüencial utilizado para identificar o boleto.
@@ -45,8 +45,7 @@ module Brcobranca
45
45
 
46
46
  parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
47
47
  soma = parte_1.to_i + self.conta_corrente.to_i + data.to_i
48
- numero = "#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
49
- numero
48
+ "#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
50
49
  else
51
50
  raise Brcobranca::NaoImplementado.new("Tipo de carteira não implementado.")
52
51
  # TODO - Verificar outras carteiras.
@@ -92,4 +91,4 @@ module Brcobranca
92
91
 
93
92
  end
94
93
  end
95
- end
94
+ end
@@ -29,25 +29,25 @@ module Brcobranca
29
29
  # Número do convênio/contrato do cliente junto ao banco.
30
30
  # @return [String] 5 caracteres numéricos.
31
31
  def convenio=(valor)
32
- @convenio = valor.to_s.rjust(5,'0') unless valor.nil?
32
+ @convenio = valor.to_s.rjust(5,'0') if valor
33
33
  end
34
34
 
35
35
  # Conta corrente
36
36
  # @return [String] 5 caracteres numéricos.
37
37
  def conta_corrente=(valor)
38
- @conta_corrente = valor.to_s.rjust(5,'0') unless valor.nil?
38
+ @conta_corrente = valor.to_s.rjust(5,'0') if valor
39
39
  end
40
40
 
41
41
  # Número seqüencial utilizado para identificar o boleto.
42
42
  # @return [String] 8 caracteres numéricos.
43
43
  def numero_documento=(valor)
44
- @numero_documento = valor.to_s.rjust(8,'0') unless valor.nil?
44
+ @numero_documento = valor.to_s.rjust(8,'0') if valor
45
45
  end
46
46
 
47
47
  # Número seqüencial utilizado para identificar o boleto.
48
48
  # @return [String] 7 caracteres numéricos.
49
49
  def seu_numero=(valor)
50
- @seu_numero = valor.to_s.rjust(7,'0') unless valor.nil?
50
+ @seu_numero = valor.to_s.rjust(7,'0') if valor
51
51
  end
52
52
 
53
53
  # Dígito verificador do nosso número.
@@ -0,0 +1,94 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # @author Kivanio Barbosa
3
+ # @author Ronaldo Araujo
4
+ module Brcobranca
5
+ module Boleto
6
+ class Santander < Base # Banco Santander
7
+
8
+ # Usado somente em carteiras especiais com registro para complementar o número do cocumento
9
+ attr_reader :seu_numero
10
+
11
+ validates_length_of :agencia, :maximum => 4, :message => "deve ser menor ou igual a 4 dígitos."
12
+ validates_length_of :convenio, :maximum => 7, :message => "deve ser menor ou igual a 7 dígitos."
13
+ validates_length_of :numero_documento, :maximum => 8, :message => "deve ser menor ou igual a 8 dígitos."
14
+ validates_length_of :conta_corrente, :maximum => 5, :message => "deve ser menor ou igual a 5 dígitos."
15
+ validates_length_of :seu_numero, :maximum => 7, :message => "deve ser menor ou igual a 7 dígitos."
16
+
17
+ # Nova instancia do Santander
18
+ # @param (see Brcobranca::Boleto::Base#initialize)
19
+ def initialize(campos={})
20
+ campos = {:carteira => "102"}.merge!(campos)
21
+ super(campos)
22
+ end
23
+
24
+ # Codigo do banco emissor (3 dígitos sempre)
25
+ #
26
+ # @return [String] 3 caracteres numéricos.
27
+ def banco
28
+ "033"
29
+ end
30
+
31
+ # Número do convênio/contrato do cliente junto ao banco.
32
+ # @return [String] 5 caracteres numéricos.
33
+ def convenio=(valor)
34
+ @convenio = valor.to_s.rjust(5,'0') if valor
35
+ end
36
+
37
+ # Conta corrente
38
+ # @return [String] 5 caracteres numéricos.
39
+ def conta_corrente=(valor)
40
+ @conta_corrente = valor.to_s.rjust(5,'0') if valor
41
+ end
42
+
43
+ # Número seqüencial utilizado para identificar o boleto.
44
+ # @return [String] 8 caracteres numéricos.
45
+ def numero_documento=(valor)
46
+ @numero_documento = valor.to_s.rjust(8,'0') if valor
47
+ end
48
+
49
+ # Número seqüencial utilizado para identificar o boleto.
50
+ # @return [String] 7 caracteres numéricos.
51
+ def seu_numero=(valor)
52
+ @seu_numero = valor.to_s.rjust(7,'0') if valor
53
+ end
54
+
55
+ # Dígito verificador do nosso número.
56
+ # @return [String] 1 caracteres numéricos.
57
+ def nosso_numero_dv
58
+ nosso_numero = self.numero_documento.to_s.rjust(12,'0') unless self.numero_documento.nil?
59
+ nosso_numero.modulo11_2to9
60
+ end
61
+
62
+ # Nosso número para exibir no boleto.
63
+ # @return [String]
64
+ # @example
65
+ # boleto.nosso_numero_boleto #=> "000090002720-7"
66
+ def nosso_numero_boleto
67
+ nosso_numero = self.numero_documento.to_s.rjust(12,'0') unless self.numero_documento.nil?
68
+ "#{nosso_numero}-#{self.nosso_numero_dv}"
69
+ end
70
+
71
+ # Agência + codigo do cedente do cliente para exibir no boleto.
72
+ # @return [String]
73
+ # @example
74
+ # boleto.agencia_conta_boleto #=> "0059/1899775"
75
+ def agencia_conta_boleto
76
+ "#{self.agencia}/#{self.convenio}"
77
+ end
78
+
79
+ # Segunda parte do código de barras.
80
+ # 9(01) | Fixo 9 <br/>
81
+ # 9(07) | Convenio <br/>
82
+ # 9(05) | Fixo 00000<br/>
83
+ # 9(08) | Nosso Numero<br/>
84
+ # 9(01) | IOF<br/>
85
+ # 9(03) | Carteira de cobrança<br/>
86
+ #
87
+ # @return [String] 25 caracteres numéricos.
88
+ def codigo_barras_segunda_parte
89
+ "9#{self.convenio}00000#{self.numero_documento}0#{self.carteira}"
90
+ end
91
+
92
+ end
93
+ end
94
+ end
@@ -31,20 +31,20 @@ module Brcobranca
31
31
  #
32
32
  # @return [String] 2 caracteres numéricos.
33
33
  def carteira=(valor)
34
- @carteira = valor.to_s.rjust(2,'0') unless valor.nil?
34
+ @carteira = valor.to_s.rjust(2,'0') if valor
35
35
  end
36
36
 
37
37
  # Posto
38
38
  #
39
39
  # @return [String] 2 caracteres numéricos.
40
40
  def posto=(valor)
41
- @posto = valor.to_s.rjust(2, '0') unless valor.nil?
41
+ @posto = valor.to_s.rjust(2, '0') if valor
42
42
  end
43
43
 
44
44
  # Número da conta corrente
45
45
  # @return [String] 5 caracteres numéricos.
46
46
  def conta_corrente=(valor)
47
- @conta_corrente = valor.to_s.rjust(5,'0') unless valor.nil?
47
+ @conta_corrente = valor.to_s.rjust(5,'0') if valor
48
48
  end
49
49
 
50
50
  # Dígito verificador do banco
@@ -68,7 +68,7 @@ module Brcobranca
68
68
  # Número seqüencial utilizado para identificar o boleto.
69
69
  # @return [String] 5 caracteres numéricos.
70
70
  def numero_documento=(valor)
71
- @numero_documento = valor.to_s.rjust(5,'0') unless valor.nil?
71
+ @numero_documento = valor.to_s.rjust(5,'0') if valor
72
72
  end
73
73
 
74
74
  # Codigo referente ao tipo de cobrança
@@ -32,7 +32,7 @@ module Brcobranca
32
32
  # Número do convênio/contrato do cliente junto ao banco.
33
33
  # @return [String] 7 caracteres numéricos.
34
34
  def convenio=(valor)
35
- @convenio = valor.to_s.rjust(7,'0') unless valor.nil?
35
+ @convenio = valor.to_s.rjust(7,'0') if valor
36
36
  end
37
37
 
38
38
  # Número seqüencial utilizado para identificar o boleto.
@@ -57,7 +57,7 @@ module Brcobranca #:nodoc:[all]
57
57
  end
58
58
  end
59
59
 
60
- [ Numeric].each do |klass|
60
+ [ Numeric, String].each do |klass|
61
61
  klass.class_eval { include Brcobranca::Currency::Number }
62
62
  end
63
63
 
@@ -14,6 +14,6 @@ module Brcobranca
14
14
  end
15
15
  end
16
16
 
17
- [ Float ].each do |klass|
17
+ [ Float, String ].each do |klass|
18
18
  klass.class_eval { include Brcobranca::Limpeza }
19
19
  end
@@ -1,3 +1,3 @@
1
1
  module Brcobranca
2
- VERSION = "3.1.0"
2
+ VERSION = "3.1.1"
3
3
  end
@@ -35,7 +35,7 @@ describe Brcobranca::Boleto::Bradesco do
35
35
  boleto_novo.aceite.should eql("S")
36
36
  boleto_novo.quantidade.should eql(1)
37
37
  boleto_novo.valor.should eql(0.0)
38
- boleto_novo.valor_documento.should eql(0.0)
38
+ boleto_novo.valor_documento.should eql("0.00")
39
39
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
40
40
  boleto_novo.carteira.should eql("06")
41
41
 
@@ -53,7 +53,7 @@ describe Brcobranca::Boleto::Bradesco do
53
53
  boleto_novo.aceite.should eql("S")
54
54
  boleto_novo.quantidade.should eql(1)
55
55
  boleto_novo.valor.should eql(0.0)
56
- boleto_novo.valor_documento.should eql(0.0)
56
+ boleto_novo.valor_documento.should eql("0.00")
57
57
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
58
58
  boleto_novo.cedente.should eql("Kivanio Barbosa")
59
59
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -36,7 +36,7 @@ describe Brcobranca::Boleto::BancoBrasil do #:nodoc:[all]
36
36
  boleto_novo.aceite.should eql("S")
37
37
  boleto_novo.quantidade.should eql(1)
38
38
  boleto_novo.valor.should eql(0.0)
39
- boleto_novo.valor_documento.should eql(0.0)
39
+ boleto_novo.valor_documento.should eql("0.00")
40
40
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
41
41
  boleto_novo.carteira.should eql("18")
42
42
  boleto_novo.codigo_servico.should be_false
@@ -54,7 +54,7 @@ describe Brcobranca::Boleto::BancoBrasil do #:nodoc:[all]
54
54
  boleto_novo.aceite.should eql("S")
55
55
  boleto_novo.quantidade.should eql(1)
56
56
  boleto_novo.valor.should eql(0.0)
57
- boleto_novo.valor_documento.should eql(0.0)
57
+ boleto_novo.valor_documento.should eql("0.00")
58
58
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
59
59
  boleto_novo.cedente.should eql("Kivanio Barbosa")
60
60
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -37,7 +37,7 @@ describe Brcobranca::Boleto::Caixa do #:nodoc:[all]
37
37
  boleto_novo.aceite.should eql('S')
38
38
  boleto_novo.quantidade.should eql(1)
39
39
  boleto_novo.valor.should eql(0.0)
40
- boleto_novo.valor_documento.should eql(0.0)
40
+ boleto_novo.valor_documento.should eql("0.00")
41
41
  boleto_novo.local_pagamento.should eql('QUALQUER BANCO ATÉ O VENCIMENTO')
42
42
  boleto_novo.codigo_servico.should be_false
43
43
  carteira = "#{Brcobranca::Boleto::Caixa::MODALIDADE_COBRANCA[:sem_registro]}" <<
@@ -37,7 +37,7 @@ describe Brcobranca::Boleto::Hsbc do
37
37
  boleto_novo.aceite.should eql("S")
38
38
  boleto_novo.quantidade.should eql(1)
39
39
  boleto_novo.valor.should eql(0.0)
40
- boleto_novo.valor_documento.should eql(0.0)
40
+ boleto_novo.valor_documento.should eql("0.00")
41
41
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
42
42
  boleto_novo.carteira.should eql("CNR")
43
43
 
@@ -55,7 +55,7 @@ describe Brcobranca::Boleto::Hsbc do
55
55
  boleto_novo.aceite.should eql("S")
56
56
  boleto_novo.quantidade.should eql(1)
57
57
  boleto_novo.valor.should eql(0.0)
58
- boleto_novo.valor_documento.should eql(0.0)
58
+ boleto_novo.valor_documento.should eql("0.00")
59
59
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
60
60
  boleto_novo.cedente.should eql("Kivanio Barbosa")
61
61
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -35,7 +35,7 @@ describe Brcobranca::Boleto::Real do
35
35
  boleto_novo.aceite.should eql("S")
36
36
  boleto_novo.quantidade.should eql(1)
37
37
  boleto_novo.valor.should eql(0.0)
38
- boleto_novo.valor_documento.should eql(0.0)
38
+ boleto_novo.valor_documento.should eql("0.00")
39
39
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
40
40
  boleto_novo.carteira.should eql("57")
41
41
 
@@ -53,7 +53,7 @@ describe Brcobranca::Boleto::Real do
53
53
  boleto_novo.aceite.should eql("S")
54
54
  boleto_novo.quantidade.should eql(1)
55
55
  boleto_novo.valor.should eql(0.0)
56
- boleto_novo.valor_documento.should eql(0.0)
56
+ boleto_novo.valor_documento.should eql("0.00")
57
57
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
58
58
  boleto_novo.cedente.should eql("Kivanio Barbosa")
59
59
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -37,7 +37,7 @@ describe Brcobranca::Boleto::Sicredi do
37
37
  boleto_novo.aceite.should eql("S")
38
38
  boleto_novo.quantidade.should eql(1)
39
39
  boleto_novo.valor.should eql(0.0)
40
- boleto_novo.valor_documento.should eql(0.0)
40
+ boleto_novo.valor_documento.should eql("0.00")
41
41
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
42
42
  boleto_novo.carteira.should eql("03")
43
43
 
@@ -55,7 +55,7 @@ describe Brcobranca::Boleto::Sicredi do
55
55
  boleto_novo.aceite.should eql("S")
56
56
  boleto_novo.quantidade.should eql(1)
57
57
  boleto_novo.valor.should eql(0.0)
58
- boleto_novo.valor_documento.should eql(0.0)
58
+ boleto_novo.valor_documento.should eql("0.00")
59
59
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
60
60
  boleto_novo.cedente.should eql("Kivanio Barbosa")
61
61
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -35,7 +35,7 @@ describe Brcobranca::Boleto::Unibanco do
35
35
  boleto_novo.aceite.should eql("S")
36
36
  boleto_novo.quantidade.should eql(1)
37
37
  boleto_novo.valor.should eql(0.0)
38
- boleto_novo.valor_documento.should eql(0.0)
38
+ boleto_novo.valor_documento.should eql("0.00")
39
39
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
40
40
  boleto_novo.carteira.should eql("5")
41
41
 
@@ -53,7 +53,7 @@ describe Brcobranca::Boleto::Unibanco do
53
53
  boleto_novo.aceite.should eql("S")
54
54
  boleto_novo.quantidade.should eql(1)
55
55
  boleto_novo.valor.should eql(0.0)
56
- boleto_novo.valor_documento.should eql(0.0)
56
+ boleto_novo.valor_documento.should eql("0.00")
57
57
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
58
58
  boleto_novo.cedente.should eql("Kivanio Barbosa")
59
59
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -36,7 +36,7 @@ module Brcobranca #:nodoc:[all]
36
36
  boleto_novo.aceite.should eql("S")
37
37
  boleto_novo.quantidade.should eql(1)
38
38
  boleto_novo.valor.should eql(0.0)
39
- boleto_novo.valor_documento.should eql(0.0)
39
+ boleto_novo.valor_documento.should eql("0.00")
40
40
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
41
41
  boleto_novo.valid?.should be_false
42
42
  end
@@ -52,7 +52,7 @@ module Brcobranca #:nodoc:[all]
52
52
  boleto_novo.aceite.should eql("S")
53
53
  boleto_novo.quantidade.should eql(1)
54
54
  boleto_novo.valor.should eql(0.0)
55
- boleto_novo.valor_documento.should eql(0.0)
55
+ boleto_novo.valor_documento.should eql("0.00")
56
56
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
57
57
  boleto_novo.cedente.should eql("Kivanio Barbosa")
58
58
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -125,22 +125,22 @@ module Brcobranca #:nodoc:[all]
125
125
  boleto_novo = Brcobranca::Boleto::Base.new(@valid_attributes)
126
126
  boleto_novo.quantidade = 1
127
127
  boleto_novo.valor = 1
128
- boleto_novo.valor_documento.should eql(1.0)
128
+ boleto_novo.valor_documento.should eql("1.00")
129
129
  boleto_novo.quantidade = 1
130
130
  boleto_novo.valor = 1.0
131
- boleto_novo.valor_documento.should eql(1.0)
131
+ boleto_novo.valor_documento.should eql("1.00")
132
132
  boleto_novo.quantidade = 100
133
133
  boleto_novo.valor = 1
134
- boleto_novo.valor_documento.should eql(100.0)
134
+ boleto_novo.valor_documento.should eql("100.00")
135
135
  boleto_novo.quantidade = 1
136
136
  boleto_novo.valor = 1.2
137
- boleto_novo.valor_documento.should eql(1.2)
137
+ boleto_novo.valor_documento.should eql("1.20")
138
138
  boleto_novo.quantidade = 1
139
139
  boleto_novo.valor = 135.43
140
- boleto_novo.valor_documento.should eql(135.43)
140
+ boleto_novo.valor_documento.should eql("135.43")
141
141
  boleto_novo.quantidade = "gh"
142
142
  boleto_novo.valor = 135.43
143
- boleto_novo.valor_documento.should eql(0.0)
143
+ boleto_novo.valor_documento.should eql("0.00")
144
144
  end
145
145
 
146
146
  it "Calcula data_vencimento" do
@@ -35,7 +35,7 @@ describe Brcobranca::Boleto::Itau do
35
35
  boleto_novo.aceite.should eql("S")
36
36
  boleto_novo.quantidade.should eql(1)
37
37
  boleto_novo.valor.should eql(0.0)
38
- boleto_novo.valor_documento.should eql(0.0)
38
+ boleto_novo.valor_documento.should eql("0.00")
39
39
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
40
40
  boleto_novo.carteira.should eql("175")
41
41
  end
@@ -52,7 +52,7 @@ describe Brcobranca::Boleto::Itau do
52
52
  boleto_novo.aceite.should eql("S")
53
53
  boleto_novo.quantidade.should eql(1)
54
54
  boleto_novo.valor.should eql(0.0)
55
- boleto_novo.valor_documento.should eql(0.0)
55
+ boleto_novo.valor_documento.should eql("0.00")
56
56
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
57
57
  boleto_novo.cedente.should eql("Kivanio Barbosa")
58
58
  boleto_novo.documento_cedente.should eql("12345678912")
@@ -0,0 +1,153 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
+
4
+ describe Brcobranca::Boleto::Santander do
5
+ before(:each) do
6
+ @valid_attributes = {
7
+ :especie_documento => "DS",
8
+ :moeda => "9",
9
+ :data_documento => Date.today,
10
+ :dias_vencimento => 1,
11
+ :aceite => "N",
12
+ :quantidade => 1,
13
+ :valor => 25.0,
14
+ :local_pagamento => "QUALQUER BANCO ATÉ O VENCIMENTO",
15
+ :cedente => "Kivanio Barbosa",
16
+ :documento_cedente => "12345678912",
17
+ :sacado => "Claudio Pozzebom",
18
+ :sacado_documento => "12345678900",
19
+ :agencia => "0059",
20
+ :conta_corrente => "53678",
21
+ :convenio => 1899775,
22
+ :numero_documento => "90000267"
23
+ }
24
+ end
25
+
26
+ it "Criar nova instancia com atributos padrões" do
27
+ boleto_novo = Brcobranca::Boleto::Santander.new
28
+ boleto_novo.banco.should eql("033")
29
+ boleto_novo.especie_documento.should eql("DM")
30
+ boleto_novo.especie.should eql("R$")
31
+ boleto_novo.moeda.should eql("9")
32
+ boleto_novo.data_documento.should eql(Date.today)
33
+ boleto_novo.dias_vencimento.should eql(1)
34
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
35
+ boleto_novo.aceite.should eql("S")
36
+ boleto_novo.quantidade.should eql(1)
37
+ boleto_novo.valor.should eql(0.0)
38
+ boleto_novo.valor_documento.should eql("0.00")
39
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
40
+ boleto_novo.carteira.should eql("102")
41
+ end
42
+
43
+ it "Criar nova instancia com atributos válidos" do
44
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
45
+ boleto_novo.banco.should eql("033")
46
+ boleto_novo.especie_documento.should eql("DS")
47
+ boleto_novo.especie.should eql("R$")
48
+ boleto_novo.moeda.should eql("9")
49
+ boleto_novo.data_documento.should eql(Date.today)
50
+ boleto_novo.dias_vencimento.should eql(1)
51
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
52
+ boleto_novo.aceite.should eql("N")
53
+ boleto_novo.quantidade.should eql(1)
54
+ boleto_novo.valor.should eql(25.0)
55
+ boleto_novo.valor_documento.should eql("25.00")
56
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
57
+ boleto_novo.cedente.should eql("Kivanio Barbosa")
58
+ boleto_novo.documento_cedente.should eql("12345678912")
59
+ boleto_novo.sacado.should eql("Claudio Pozzebom")
60
+ boleto_novo.sacado_documento.should eql("12345678900")
61
+ boleto_novo.conta_corrente.should eql("53678")
62
+ boleto_novo.agencia.should eql("0059")
63
+ boleto_novo.convenio.should eql("1899775")
64
+ boleto_novo.numero_documento.should eql("90000267")
65
+ boleto_novo.carteira.should eql("102")
66
+ end
67
+
68
+ it "Gerar boleto" do
69
+ @valid_attributes[:data_documento] = Date.parse("2011/10/08")
70
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
71
+ boleto_novo.codigo_barras_segunda_parte.should eql("9189977500000900002670102")
72
+ boleto_novo.codigo_barras.should eql("03391511500000025009189977500000900002670102")
73
+ boleto_novo.codigo_barras.linha_digitavel.should eql("03399.18997 77500.000904 00026.701029 1 51150000002500")
74
+
75
+ @valid_attributes[:valor] = 54.00
76
+ @valid_attributes[:numero_documento] = "90002720"
77
+ @valid_attributes[:data_documento] = Date.parse("2012/09/07")
78
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
79
+ boleto_novo.codigo_barras_segunda_parte.should eql("9189977500000900027200102")
80
+ boleto_novo.codigo_barras.should eql("03391545000000054009189977500000900027200102")
81
+ boleto_novo.codigo_barras.linha_digitavel.should eql("03399.18997 77500.000904 00272.001025 1 54500000005400")
82
+ end
83
+
84
+ it "Não permitir gerar boleto com atributos inválido" do
85
+ boleto_novo = Brcobranca::Boleto::Santander.new
86
+ lambda { boleto_novo.codigo_barras }.should raise_error(Brcobranca::BoletoInvalido)
87
+ boleto_novo.errors.count.should eql(3)
88
+ end
89
+
90
+ it "Montar agencia_conta_corrente_dv" do
91
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
92
+ boleto_novo.agencia_conta_boleto.should eql("0059/1899775")
93
+ end
94
+
95
+ it "Montar nosso_numero_dv" do
96
+ @valid_attributes[:numero_documento] = "566612457800"
97
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
98
+ boleto_novo.nosso_numero_dv.should eql(2)
99
+
100
+ @valid_attributes[:numero_documento] = "90002720"
101
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
102
+ boleto_novo.nosso_numero_dv.should eql(7)
103
+ end
104
+
105
+ it "Montar nosso_numero_boleto" do
106
+ @valid_attributes[:numero_documento] = "566612457800"
107
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
108
+ boleto_novo.nosso_numero_boleto.should eql("566612457800-2")
109
+
110
+ @valid_attributes[:numero_documento] = "90002720"
111
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
112
+ boleto_novo.nosso_numero_boleto.should eql("000090002720-7")
113
+ end
114
+
115
+ it "Busca logotipo do banco" do
116
+ boleto_novo = Brcobranca::Boleto::Santander.new
117
+ File.exist?(boleto_novo.logotipo).should be_true
118
+ File.stat(boleto_novo.logotipo).zero?.should be_false
119
+ end
120
+
121
+ it "Gerar boleto nos formatos válidos com método to_" do
122
+ @valid_attributes[:data_documento] = Date.parse("2009/08/13")
123
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
124
+
125
+ %w| pdf jpg tif png ps |.each do |format|
126
+ file_body=boleto_novo.send("to_#{format}".to_sym)
127
+ tmp_file=Tempfile.new("foobar." << format)
128
+ tmp_file.puts file_body
129
+ tmp_file.close
130
+ File.exist?(tmp_file.path).should be_true
131
+ File.stat(tmp_file.path).zero?.should be_false
132
+ File.delete(tmp_file.path).should eql(1)
133
+ File.exist?(tmp_file.path).should be_false
134
+ end
135
+ end
136
+
137
+ it "Gerar boleto nos formatos válidos" do
138
+ @valid_attributes[:data_documento] = Date.parse("2009/08/13")
139
+ boleto_novo = Brcobranca::Boleto::Santander.new(@valid_attributes)
140
+
141
+ %w| pdf jpg tif png ps |.each do |format|
142
+ file_body=boleto_novo.to(format)
143
+ tmp_file=Tempfile.new("foobar." << format)
144
+ tmp_file.puts file_body
145
+ tmp_file.close
146
+ File.exist?(tmp_file.path).should be_true
147
+ File.stat(tmp_file.path).zero?.should be_false
148
+ File.delete(tmp_file.path).should eql(1)
149
+ File.exist?(tmp_file.path).should be_false
150
+ end
151
+ end
152
+
153
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brcobranca
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 1
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 0
10
- version: 3.1.0
9
+ - 1
10
+ version: 3.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kivanio Barbosa
@@ -104,6 +104,7 @@ files:
104
104
  - lib/brcobranca/arquivos/logos/hsbc.jpg
105
105
  - lib/brcobranca/arquivos/logos/itau.jpg
106
106
  - lib/brcobranca/arquivos/logos/real.jpg
107
+ - lib/brcobranca/arquivos/logos/santander.jpg
107
108
  - lib/brcobranca/arquivos/logos/sicredi.jpg
108
109
  - lib/brcobranca/arquivos/logos/unibanco.jpg
109
110
  - lib/brcobranca/arquivos/templates/modelo_generico.eps
@@ -114,6 +115,7 @@ files:
114
115
  - lib/brcobranca/boleto/hsbc.rb
115
116
  - lib/brcobranca/boleto/itau.rb
116
117
  - lib/brcobranca/boleto/real.rb
118
+ - lib/brcobranca/boleto/santander.rb
117
119
  - lib/brcobranca/boleto/sicredi.rb
118
120
  - lib/brcobranca/boleto/template/base.rb
119
121
  - lib/brcobranca/boleto/template/rghost.rb
@@ -144,6 +146,7 @@ files:
144
146
  - spec/brcobranca/retorno_cbr643_spec.rb
145
147
  - spec/brcobranca/retorno_cnab_240_spec.rb
146
148
  - spec/brcobranca/rghost_spec.rb
149
+ - spec/brcobranca/santander_spec.rb
147
150
  - spec/brcobranca_spec.rb
148
151
  - spec/spec_helper.rb
149
152
  homepage: http://rubygems.org/gems/brcobranca
@@ -175,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
178
  requirements:
176
179
  - "GhostScript > 8.0, para gear PDF e c\xC3\xB3digo de Barras"
177
180
  rubyforge_project: brcobranca
178
- rubygems_version: 1.8.11
181
+ rubygems_version: 1.8.24
179
182
  signing_key:
180
183
  specification_version: 3
181
184
  summary: "Gem que permite trabalhar com bloquetos de cobran\xC3\xA7a para bancos brasileiros."
@@ -197,5 +200,6 @@ test_files:
197
200
  - spec/brcobranca/retorno_cbr643_spec.rb
198
201
  - spec/brcobranca/retorno_cnab_240_spec.rb
199
202
  - spec/brcobranca/rghost_spec.rb
203
+ - spec/brcobranca/santander_spec.rb
200
204
  - spec/brcobranca_spec.rb
201
205
  - spec/spec_helper.rb