br_boleto 1.2.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +278 -98
- data/br_boleto.gemspec +5 -3
- data/lib/br_boleto/active_model_base.rb +1 -1
- data/lib/br_boleto/association/have_conta.rb +109 -0
- data/lib/br_boleto/association/have_pagador.rb +38 -0
- data/lib/br_boleto/association/have_pagamentos.rb +44 -0
- data/lib/br_boleto/boleto/base.rb +50 -379
- data/lib/br_boleto/boleto/caixa.rb +28 -143
- data/lib/br_boleto/boleto/sicoob.rb +24 -144
- data/lib/br_boleto/conta/base.rb +288 -0
- data/lib/br_boleto/conta/caixa.rb +109 -0
- data/lib/br_boleto/conta/sicoob.rb +64 -0
- data/lib/br_boleto/helper/default_codes.rb +33 -0
- data/lib/br_boleto/helper/format_value.rb +1 -0
- data/lib/br_boleto/helper/number.rb +30 -0
- data/lib/br_boleto/pagador.rb +82 -0
- data/lib/br_boleto/remessa/base.rb +28 -50
- data/lib/br_boleto/remessa/cnab240/base.rb +22 -131
- data/lib/br_boleto/remessa/cnab240/caixa.rb +16 -62
- data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +7 -7
- data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +6 -6
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +22 -22
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +16 -16
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/helper/trailer_lote.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +36 -73
- data/lib/br_boleto/remessa/cnab400/base.rb +95 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +136 -0
- data/lib/br_boleto/remessa/cnab400/helper/header.rb +114 -0
- data/lib/br_boleto/remessa/cnab400/helper/trailer.rb +50 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +249 -0
- data/lib/br_boleto/remessa/lote.rb +1 -23
- data/lib/br_boleto/remessa/pagamento.rb +188 -51
- data/lib/br_boleto/retorno/base.rb +9 -0
- data/lib/br_boleto/retorno/cnab240/base.rb +2 -10
- data/lib/br_boleto/retorno/cnab400/base.rb +48 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +42 -0
- data/lib/br_boleto/retorno/pagamento.rb +12 -6
- data/lib/br_boleto/string_methods.rb +8 -2
- data/lib/br_boleto/validations.rb +19 -0
- data/lib/br_boleto/version.rb +3 -3
- data/lib/br_boleto.rb +38 -8
- data/lib/config/locales/br-boleto-en.yml +89 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +89 -0
- data/test/br_boleto/association/have_conta_test.rb +319 -0
- data/test/br_boleto/association/have_pagador_test.rb +110 -0
- data/test/br_boleto/association/have_pagamentos_test.rb +113 -0
- data/test/br_boleto/boleto/base_test.rb +127 -201
- data/test/br_boleto/boleto/caixa_test.rb +58 -72
- data/test/br_boleto/boleto/sicoob_test.rb +88 -147
- data/test/br_boleto/conta/base_test.rb +490 -0
- data/test/br_boleto/conta/caixa_test.rb +154 -0
- data/test/br_boleto/conta/sicoob_test.rb +144 -0
- data/test/br_boleto/helper/number_test.rb +29 -0
- data/test/br_boleto/pagador_test.rb +158 -0
- data/test/br_boleto/remessa/base_test.rb +37 -62
- data/test/br_boleto/remessa/cnab240/base_test.rb +75 -95
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +61 -96
- data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +11 -11
- data/test/br_boleto/remessa/cnab240/helper/header_lote_test.rb +8 -8
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +17 -15
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +13 -13
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +2 -2
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +3 -3
- data/test/br_boleto/remessa/cnab240/helper/trailer_arquivo_test.rb +1 -1
- data/test/br_boleto/remessa/cnab240/helper/trailer_lote_test.rb +1 -1
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +136 -131
- data/test/br_boleto/remessa/cnab400/base_test.rb +263 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +179 -0
- data/test/br_boleto/remessa/lote_test.rb +2 -41
- data/test/br_boleto/remessa/pagamento_test.rb +186 -188
- data/test/br_boleto/retorno/base_test.rb +0 -1
- data/test/br_boleto/retorno/cnab240/base_test.rb +12 -11
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +11 -11
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +11 -11
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +227 -0
- data/test/br_boleto/retorno/pagamento_test.rb +6 -6
- data/test/factories/boleto/base.rb +9 -7
- data/test/factories/boleto/boleto_caixa.rb +2 -9
- data/test/factories/boleto/boleto_sicoob.rb +10 -8
- data/test/factories/conta/base.rb +10 -0
- data/test/factories/conta/caixa.rb +15 -0
- data/test/factories/conta/sicoob.rb +16 -0
- data/test/factories/pagador.rb +15 -0
- data/test/factories/remessa/base.rb +0 -6
- data/test/factories/remessa/cnab240/base.rb +0 -10
- data/test/factories/remessa/cnab240/caixa.rb +1 -6
- data/test/factories/remessa/cnab240/sicoob.rb +1 -10
- data/test/factories/remessa/cnab400/base.rb +8 -0
- data/test/factories/remessa/cnab400/sicoob.rb +8 -0
- data/test/factories/remessa/pagamento.rb +8 -7
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -0
- data/test/{files → fixtures}/retorno/cnab240/caixa.ret +0 -0
- data/test/{files → fixtures}/retorno/cnab240/padrao240.ret +0 -0
- data/test/fixtures/retorno/cnab400/sicoob.ret +7 -0
- data/test/inheritance/boleto_test.rb +4 -1
- data/test/inheritance/sicoob_test.rb +23 -7
- data/test/test_helper.rb +70 -0
- metadata +63 -6
|
@@ -4,60 +4,65 @@ require 'test_helper'
|
|
|
4
4
|
describe BrBoleto::Boleto::Caixa do
|
|
5
5
|
subject { FactoryGirl.build(:boleto_caixa) }
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
context "on validations" do
|
|
8
|
+
it { must validate_length_of(:numero_documento).is_at_most(15).with_message(:custom_length_maximum) }
|
|
9
|
+
|
|
10
|
+
context '#conta.carteira' do
|
|
11
|
+
it { subject.valid_carteira_inclusion.must_equal ['14','24'] }
|
|
12
|
+
it 'carteira deve ter 2 digitos' do
|
|
13
|
+
subject.valid_carteira_length.must_equal 2
|
|
14
|
+
subject.conta.carteira = '1'
|
|
15
|
+
conta_must_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
16
|
+
subject.conta.carteira = '123'
|
|
17
|
+
conta_must_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
18
|
+
subject.conta.carteira = '12'
|
|
19
|
+
conta_wont_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
20
|
+
end
|
|
21
|
+
it "validação da carteira da conta" do
|
|
22
|
+
subject.conta.carteira = '5'
|
|
23
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '14, 24'})
|
|
24
|
+
subject.conta.carteira = '24'
|
|
25
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '14, 24'})
|
|
26
|
+
end
|
|
27
|
+
end
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
30
|
+
it { subject.valid_convenio_maximum.must_equal 6 }
|
|
31
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
32
|
+
|
|
33
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
34
|
+
subject.conta.codigo_cedente = ''
|
|
35
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
36
|
+
subject.conta.codigo_cedente = '123456'
|
|
37
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
38
|
+
end
|
|
39
|
+
it "validação tamaho maximo do codigo_cedente da conta" do
|
|
40
|
+
subject.conta.codigo_cedente = '1234567'
|
|
41
|
+
conta_must_be_msg_error(:convenio, :custom_length_maximum, {count: 6})
|
|
42
|
+
subject.conta.codigo_cedente = '123456'
|
|
43
|
+
conta_wont_be_msg_error(:convenio, :custom_length_maximum, {count: 6})
|
|
44
|
+
end
|
|
45
|
+
end
|
|
29
46
|
|
|
30
|
-
|
|
31
|
-
it { subject.digito_codigo_banco.must_equal '0' }
|
|
32
|
-
end
|
|
47
|
+
private
|
|
33
48
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
49
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
50
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Sicoob.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
51
|
+
end
|
|
52
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
53
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Sicoob.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
54
|
+
end
|
|
39
55
|
end
|
|
40
|
-
end
|
|
41
56
|
|
|
42
|
-
describe "#
|
|
43
|
-
it "deve
|
|
44
|
-
|
|
45
|
-
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with('999999').returns('5')
|
|
46
|
-
|
|
47
|
-
subject.digito_verificador_codigo_cedente.must_equal '5'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
describe "#digito_verificador_codigo_beneficiario" do
|
|
51
|
-
it "deve retornar o mesmo valor de #digito_verificador_codigo_cedente" do
|
|
52
|
-
subject.expects(:digito_verificador_codigo_cedente).returns('valor')
|
|
53
|
-
subject.digito_verificador_codigo_beneficiario.must_equal 'valor'
|
|
54
|
-
end
|
|
57
|
+
describe "#default_values" do
|
|
58
|
+
it "deve setar um valor padrão de local_pagamento com o valor descrito na documentação" do
|
|
59
|
+
BrBoleto::Boleto::Caixa.new.local_pagamento.must_equal 'PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE'
|
|
55
60
|
end
|
|
56
61
|
end
|
|
57
62
|
|
|
58
63
|
describe "#digito_verificador_nosso_numero " do
|
|
59
64
|
it "deve utilizar o Modulo11FatorDe2a9RestoZero para calcular o digito passando a carteira e numero_documento" do
|
|
60
|
-
subject.assign_attributes(carteira: '14', numero_documento: '77445')
|
|
65
|
+
subject.assign_attributes(conta: {carteira: '14'}, numero_documento: '77445')
|
|
61
66
|
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with("14000000000077445").returns('8')
|
|
62
67
|
|
|
63
68
|
subject.digito_verificador_nosso_numero.must_equal '8'
|
|
@@ -67,7 +72,7 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
67
72
|
describe "#nosso_numero " do
|
|
68
73
|
it "deve utilizar a carteira, numero_documento e o DV do nosso_numero" do
|
|
69
74
|
subject.expects(:digito_verificador_nosso_numero).returns('7')
|
|
70
|
-
subject.assign_attributes(carteira: '24', numero_documento: '789')
|
|
75
|
+
subject.assign_attributes(conta: {carteira: '24'}, numero_documento: '789')
|
|
71
76
|
subject.nosso_numero.must_equal('24000000000000789-7')
|
|
72
77
|
end
|
|
73
78
|
end
|
|
@@ -95,50 +100,31 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
95
100
|
|
|
96
101
|
describe "#tipo_cobranca" do
|
|
97
102
|
it "deve pegar o primeiro caracter da carteira se houver valor na carteira" do
|
|
98
|
-
subject.carteira = 'X7'
|
|
103
|
+
subject.conta.carteira = 'X7'
|
|
99
104
|
subject.tipo_cobranca.must_equal 'X'
|
|
100
|
-
subject.carteira = 'A7'
|
|
105
|
+
subject.conta.carteira = 'A7'
|
|
101
106
|
subject.tipo_cobranca.must_equal 'A'
|
|
102
107
|
end
|
|
103
108
|
it "se carteira for nil não deve dar erro" do
|
|
104
|
-
subject.carteira = nil
|
|
109
|
+
subject.conta.carteira = nil
|
|
105
110
|
subject.tipo_cobranca.must_be_nil
|
|
106
111
|
end
|
|
107
|
-
|
|
108
|
-
describe "#modalidade_cobranca" do
|
|
109
|
-
it "deve simplemente pegar o valor do tipo_cobranca" do
|
|
110
|
-
subject.expects(:tipo_cobranca).returns(:valor)
|
|
111
|
-
subject.modalidade_cobranca.must_equal :valor
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
112
|
end
|
|
115
113
|
|
|
116
114
|
describe "#identificador_de_emissao" do
|
|
117
115
|
it "deve retornar o ultimo caractere da carteira" do
|
|
118
|
-
subject.carteira = 'X71'
|
|
116
|
+
subject.conta.carteira = 'X71'
|
|
119
117
|
subject.identificador_de_emissao.must_equal '1'
|
|
120
|
-
subject.carteira = 'A2'
|
|
118
|
+
subject.conta.carteira = 'A2'
|
|
121
119
|
subject.identificador_de_emissao.must_equal '2'
|
|
122
120
|
end
|
|
123
121
|
end
|
|
124
122
|
|
|
125
|
-
describe "#carteira_formatada - Conforme o manual da caixa deve retornar RG para carteira com registro e SR para carteira sem registro" do
|
|
126
|
-
it "para a carteira 14 deve retornar RG" do
|
|
127
|
-
subject.carteira = '14'
|
|
128
|
-
subject.carteira_formatada.must_equal 'RG'
|
|
129
|
-
end
|
|
130
|
-
it "para a carteira 24 deve retornar SR" do
|
|
131
|
-
subject.carteira = '24'
|
|
132
|
-
subject.carteira_formatada.must_equal 'SR'
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
|
|
137
123
|
describe "#composicao_codigo_barras" do
|
|
138
124
|
before do
|
|
139
|
-
subject.codigo_beneficiario = '123456'
|
|
140
|
-
subject.agencia = '2391'
|
|
141
|
-
subject.carteira = '14'
|
|
125
|
+
subject.conta.codigo_beneficiario = '123456'
|
|
126
|
+
subject.conta.agencia = '2391'
|
|
127
|
+
subject.conta.carteira = '14'
|
|
142
128
|
subject.numero_documento = 'ABCDEFGHIJKLMNO'
|
|
143
129
|
end
|
|
144
130
|
|
|
@@ -2,100 +2,72 @@
|
|
|
2
2
|
require 'test_helper'
|
|
3
3
|
|
|
4
4
|
describe BrBoleto::Boleto::Sicoob do
|
|
5
|
-
subject { FactoryGirl.build(:boleto_sicoob) }
|
|
6
|
-
|
|
7
|
-
it { must validate_length_of(:agencia).is_at_most(4) }
|
|
5
|
+
subject { FactoryGirl.build(:boleto_sicoob, conta: conta) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_sicoob) }
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
it { wont allow_value(5).for(:modalidade_cobranca) }
|
|
20
|
-
|
|
21
|
-
it { must validate_numericality_of(:valor_documento).is_less_than_or_equal_to(99999999.99) }
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
describe "#default_values" do
|
|
26
|
-
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
27
|
-
BrBoleto::Boleto::Sicoob.new.local_pagamento.must_equal 'PREFERENCIALMENTE COOPERATIVAS DA REDE SICOOB'
|
|
8
|
+
context "on validations" do
|
|
9
|
+
it { must validate_length_of(:numero_documento).is_at_most(7).with_message(:custom_length_maximum) }
|
|
10
|
+
context '#conta.modalidade' do
|
|
11
|
+
it { subject.valid_modalidade_inclusion.must_equal ['01','02','03'] }
|
|
12
|
+
it "validação da modalidade da conta" do
|
|
13
|
+
subject.conta.modalidade = '04'
|
|
14
|
+
conta_must_be_msg_error(:modalidade, :custom_inclusion, {list: '01, 02, 03'})
|
|
15
|
+
subject.conta.modalidade = '01'
|
|
16
|
+
conta_wont_be_msg_error(:modalidade, :custom_inclusion, {list: '01, 02, 03'})
|
|
17
|
+
end
|
|
28
18
|
end
|
|
29
|
-
end
|
|
30
19
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
subject.agencia.must_be_nil
|
|
20
|
+
context '#conta.carteira' do
|
|
21
|
+
it { subject.valid_carteira_inclusion.must_equal ['1','3'] }
|
|
22
|
+
it "validação da carteira da conta" do
|
|
23
|
+
subject.conta.carteira = '4'
|
|
24
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '1, 3'})
|
|
25
|
+
subject.conta.carteira = '1'
|
|
26
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '1, 3'})
|
|
27
|
+
end
|
|
40
28
|
end
|
|
41
|
-
end
|
|
42
29
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
subject.
|
|
46
|
-
|
|
30
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
31
|
+
it { subject.valid_convenio_maximum.must_equal 6 }
|
|
32
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
33
|
+
|
|
34
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
35
|
+
subject.conta.codigo_cedente = ''
|
|
36
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
37
|
+
subject.conta.codigo_cedente = '123456'
|
|
38
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
39
|
+
end
|
|
40
|
+
it "validação tamaho maximo do codigo_cedente da conta" do
|
|
41
|
+
subject.conta.codigo_cedente = '1234567'
|
|
42
|
+
conta_must_be_msg_error(:convenio, :custom_length_maximum, {count: 6})
|
|
43
|
+
subject.conta.codigo_cedente = '123456'
|
|
44
|
+
conta_wont_be_msg_error(:convenio, :custom_length_maximum, {count: 6})
|
|
45
|
+
end
|
|
47
46
|
end
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
subject.codigo_cedente = nil
|
|
51
|
-
subject.codigo_cedente.must_be_nil
|
|
52
|
-
end
|
|
53
|
-
end
|
|
48
|
+
private
|
|
54
49
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
subject.numero_documento = '1'
|
|
58
|
-
subject.numero_documento.must_equal '0000001'
|
|
50
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
51
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Sicoob.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
59
52
|
end
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
subject.numero_documento = nil
|
|
63
|
-
subject.numero_documento.must_be_nil
|
|
53
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
54
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Sicoob.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
64
55
|
end
|
|
65
56
|
end
|
|
66
|
-
describe "#carteira" do
|
|
67
|
-
it "when have a value" do
|
|
68
|
-
subject.carteira = '1'
|
|
69
|
-
|
|
70
|
-
subject.carteira.must_equal '1'
|
|
71
|
-
end
|
|
72
57
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
58
|
+
describe "#default_values" do
|
|
59
|
+
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
60
|
+
BrBoleto::Boleto::Sicoob.new.local_pagamento.must_equal 'PREFERENCIALMENTE COOPERATIVAS DA REDE SICOOB'
|
|
76
61
|
end
|
|
77
62
|
end
|
|
78
63
|
|
|
79
|
-
describe "#codigo_banco" do
|
|
80
|
-
it{ subject.codigo_banco.must_equal '756' }
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
describe "#digito_codigo_banco" do
|
|
84
|
-
it { subject.digito_codigo_banco.must_equal '0' }
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
describe "#agencia_codigo_beneficiario" do
|
|
88
|
-
subject { FactoryGirl.build(:boleto_sicoob, agencia: 48, codigo_cedente: '7368') }
|
|
89
|
-
|
|
90
|
-
it { subject.agencia_codigo_cedente.must_equal '0048 / 0007368' }
|
|
91
|
-
end
|
|
92
|
-
|
|
93
64
|
describe "#digito_verificador_nosso_numero" do
|
|
94
65
|
it "deve calcular pelo Modulo11Fator3197" do
|
|
95
|
-
subject.agencia = 1
|
|
96
|
-
subject.codigo_cedente = 33
|
|
66
|
+
subject.conta.agencia = 1
|
|
67
|
+
subject.conta.codigo_cedente = 33
|
|
68
|
+
subject.conta.codigo_cedente_dv = 4
|
|
97
69
|
subject.numero_documento = 111
|
|
98
|
-
BrBoleto::Calculos::Modulo11Fator3197.expects(:new).with("
|
|
70
|
+
BrBoleto::Calculos::Modulo11Fator3197.expects(:new).with("000100000003340000111").returns("meu_resultado")
|
|
99
71
|
subject.digito_verificador_nosso_numero.must_equal "meu_resultado"
|
|
100
72
|
end
|
|
101
73
|
end
|
|
@@ -112,92 +84,61 @@ describe BrBoleto::Boleto::Sicoob do
|
|
|
112
84
|
|
|
113
85
|
describe "#codigo_de_barras_do_banco" do
|
|
114
86
|
subject do
|
|
115
|
-
FactoryGirl.build(:boleto_sicoob,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
87
|
+
FactoryGirl.build(:boleto_sicoob, conta: {
|
|
88
|
+
carteira: '1',
|
|
89
|
+
agencia: '78',
|
|
90
|
+
codigo_cedente: '668',
|
|
91
|
+
codigo_cedente_dv: '3',
|
|
92
|
+
modalidade: '02'
|
|
93
|
+
},
|
|
94
|
+
parcelas: '3'
|
|
121
95
|
)
|
|
122
96
|
end
|
|
123
|
-
it "
|
|
124
|
-
subject.stubs(:nosso_numero).returns('
|
|
125
|
-
subject.codigo_de_barras_do_banco.must_equal "1007801000006612345678001"
|
|
126
|
-
end
|
|
127
|
-
end
|
|
97
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
98
|
+
subject.stubs(:nosso_numero).returns('0234567-8')
|
|
128
99
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
subject.class.new().modalidade_cobranca.must_equal "01"
|
|
132
|
-
end
|
|
133
|
-
it "posso modificar a modalidade de cobranca" do
|
|
134
|
-
subject.modalidade_cobranca = 2
|
|
135
|
-
subject.modalidade_cobranca.must_equal "02"
|
|
136
|
-
end
|
|
137
|
-
end
|
|
100
|
+
result = subject.codigo_de_barras_do_banco
|
|
101
|
+
result.size.must_equal 25
|
|
138
102
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
103
|
+
|
|
104
|
+
result[0].must_equal '1' # Carteira
|
|
105
|
+
result[1..4].must_equal '0078' # Agencia
|
|
106
|
+
result[5..6].must_equal '02' # modalidade
|
|
107
|
+
result[7..13].must_equal '0006683' # codigo cedente
|
|
108
|
+
result[14..21].must_equal '02345678' # Nosso numero
|
|
109
|
+
result[22..24].must_equal '003' # Parcela
|
|
146
110
|
end
|
|
147
111
|
end
|
|
148
|
-
|
|
112
|
+
|
|
149
113
|
describe "#codigo_de_barras" do
|
|
150
114
|
subject do
|
|
151
115
|
FactoryGirl.build(:boleto_sicoob) do |sicoob|
|
|
152
|
-
sicoob.agencia
|
|
153
|
-
sicoob.codigo_cedente
|
|
154
|
-
sicoob.
|
|
155
|
-
sicoob.carteira
|
|
156
|
-
sicoob.
|
|
157
|
-
sicoob.
|
|
116
|
+
sicoob.conta.agencia = 3069
|
|
117
|
+
sicoob.conta.codigo_cedente = 828_19 # Para o sicoob é o código do cliente
|
|
118
|
+
sicoob.conta.codigo_cedente_dv = '0' # Para o sicoob é o código do cliente
|
|
119
|
+
sicoob.conta.carteira = '1'
|
|
120
|
+
sicoob.conta.modalidade = '01'
|
|
121
|
+
sicoob.numero_documento = 100_10
|
|
122
|
+
sicoob.valor_documento = 93015.78
|
|
123
|
+
sicoob.data_vencimento = Date.parse('2020-02-17')
|
|
158
124
|
end
|
|
159
125
|
end
|
|
160
126
|
|
|
161
127
|
it { subject.codigo_de_barras.must_equal '75699816800093015781306901082819000100107001' }
|
|
162
128
|
it { subject.linha_digitavel.must_equal '75691.30698 01082.819002 01001.070018 9 81680009301578' }
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
describe "#carteiras_suportadas" do
|
|
166
|
-
it { subject.class.carteiras_suportadas.must_equal ["1","3"] }
|
|
167
|
-
end
|
|
168
129
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
subject.
|
|
172
|
-
subject.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
subject.
|
|
176
|
-
subject.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
subject.
|
|
180
|
-
subject.
|
|
181
|
-
end
|
|
182
|
-
it "deve ser :sem_registro se modalidade_cobranca for 2" do
|
|
183
|
-
subject.modalidade_cobranca = 2
|
|
184
|
-
subject.tipo_cobranca_formatada.must_equal :sem_registro
|
|
185
|
-
end
|
|
186
|
-
it "deve ser :caucionada se modalidade_cobranca for 03" do
|
|
187
|
-
subject.modalidade_cobranca = '03'
|
|
188
|
-
subject.tipo_cobranca_formatada.must_equal :caucionada
|
|
189
|
-
end
|
|
190
|
-
it "deve ser :caucionada se modalidade_cobranca for 3" do
|
|
191
|
-
subject.modalidade_cobranca = 3
|
|
192
|
-
subject.tipo_cobranca_formatada.must_equal :caucionada
|
|
193
|
-
end
|
|
194
|
-
it "deve ser nil se modalidade_cobranca for outro numero" do
|
|
195
|
-
subject.modalidade_cobranca = 4
|
|
196
|
-
subject.tipo_cobranca_formatada.must_be_nil
|
|
197
|
-
end
|
|
198
|
-
it "deve ser com_registro se modalidade_cobranca for nil, pois o defaul de modalidade_cobranca é 01" do
|
|
199
|
-
subject.modalidade_cobranca = nil
|
|
200
|
-
subject.tipo_cobranca_formatada.must_equal :com_registro
|
|
130
|
+
it "codigo de barras de um boleto de exemplo" do
|
|
131
|
+
subject.conta.agencia = 3069
|
|
132
|
+
subject.conta.codigo_cedente = 82819 # Para o sicoob é o código do cliente
|
|
133
|
+
subject.conta.codigo_cedente_dv = 0 # Para o sicoob é o código do cliente
|
|
134
|
+
subject.conta.carteira = '1'
|
|
135
|
+
subject.conta.modalidade = '01'
|
|
136
|
+
subject.numero_documento = 15_679
|
|
137
|
+
subject.valor_documento = 408.50
|
|
138
|
+
subject.data_vencimento = Date.parse('2016-09-01')
|
|
139
|
+
|
|
140
|
+
subject.linha_digitavel.must_equal '75691.30698 01082.819002 01567.900012 4 69040000040850'
|
|
141
|
+
subject.codigo_de_barras.must_equal '75694690400000408501306901082819000156790001'
|
|
201
142
|
end
|
|
202
143
|
end
|
|
203
144
|
end
|