brcobranca 3.1.0 → 3.1.1

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