br_boleto 2.0.1 → 2.1.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 +2 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +2 -2
- data/br_boleto.gemspec +2 -3
- data/lib/br_boleto/association/have_conta.rb +27 -25
- data/lib/br_boleto/association/have_pagador.rb +2 -0
- data/lib/br_boleto/boleto/base.rb +0 -4
- data/lib/br_boleto/boleto/bradesco.rb +80 -0
- data/lib/br_boleto/boleto/caixa.rb +10 -12
- data/lib/br_boleto/boleto/cecred.rb +76 -0
- data/lib/br_boleto/boleto/itau.rb +114 -0
- data/lib/br_boleto/boleto/sicredi.rb +101 -0
- data/lib/br_boleto/boleto/unicred.rb +21 -0
- data/lib/br_boleto/conta/base.rb +28 -3
- data/lib/br_boleto/conta/bradesco.rb +120 -0
- data/lib/br_boleto/conta/caixa.rb +22 -12
- data/lib/br_boleto/conta/cecred.rb +67 -0
- data/lib/br_boleto/conta/itau.rb +199 -0
- data/lib/br_boleto/conta/sicoob.rb +40 -11
- data/lib/br_boleto/conta/sicredi.rb +171 -0
- data/lib/br_boleto/conta/unicred.rb +38 -0
- data/lib/br_boleto/helper/default_codes.rb +535 -26
- data/lib/br_boleto/pagador.rb +4 -0
- data/lib/br_boleto/remessa/base.rb +2 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
- data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
- data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
- data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
- data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
- data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
- data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
- data/lib/br_boleto/remessa/pagamento.rb +93 -43
- data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
- data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
- data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
- data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
- data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
- data/lib/br_boleto/retorno/pagamento.rb +18 -4
- data/lib/br_boleto/version.rb +2 -2
- data/lib/br_boleto.rb +28 -0
- data/lib/config/locales/br-boleto-en.yml +1 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
- data/test/br_boleto/association/have_pagador_test.rb +24 -0
- data/test/br_boleto/boleto/bradesco_test.rb +125 -0
- data/test/br_boleto/boleto/caixa_test.rb +18 -18
- data/test/br_boleto/boleto/cecred_test.rb +115 -0
- data/test/br_boleto/boleto/itau_test.rb +160 -0
- data/test/br_boleto/boleto/sicredi_test.rb +136 -0
- data/test/br_boleto/boleto/unicred_test.rb +128 -0
- data/test/br_boleto/conta/base_test.rb +298 -3
- data/test/br_boleto/conta/bradesco_test.rb +142 -0
- data/test/br_boleto/conta/caixa_test.rb +7 -6
- data/test/br_boleto/conta/cecred_test.rb +119 -0
- data/test/br_boleto/conta/itau_test.rb +189 -0
- data/test/br_boleto/conta/sicoob_test.rb +32 -2
- data/test/br_boleto/conta/sicredi_test.rb +180 -0
- data/test/br_boleto/conta/unicred_test.rb +154 -0
- data/test/br_boleto/pagador_test.rb +22 -2
- data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
- data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
- data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
- data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
- data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
- data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
- data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
- data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
- data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
- data/test/br_boleto/retorno/pagamento_test.rb +7 -0
- data/test/factories/boleto/boleto_bradesco.rb +18 -0
- data/test/factories/boleto/boleto_cecred.rb +18 -0
- data/test/factories/boleto/boleto_itau.rb +18 -0
- data/test/factories/boleto/boleto_sicredi.rb +18 -0
- data/test/factories/boleto/boleto_unicred.rb +18 -0
- data/test/factories/conta/bradesco.rb +16 -0
- data/test/factories/conta/caixa.rb +2 -1
- data/test/factories/conta/cecred.rb +15 -0
- data/test/factories/conta/itau.rb +15 -0
- data/test/factories/conta/sicoob.rb +2 -1
- data/test/factories/conta/sicredi.rb +15 -0
- data/test/factories/conta/unicred.rb +15 -0
- data/test/factories/remessa/cnab240/bradesco.rb +9 -0
- data/test/factories/remessa/cnab240/cecred.rb +9 -0
- data/test/factories/remessa/cnab240/itau.rb +9 -0
- data/test/factories/remessa/cnab240/sicredi.rb +9 -0
- data/test/factories/remessa/cnab240/unicred.rb +9 -0
- data/test/factories/remessa/cnab400/bradesco.rb +8 -0
- data/test/factories/remessa/cnab400/itau.rb +8 -0
- data/test/factories/remessa/cnab400/sicredi.rb +8 -0
- data/test/factories/remessa/cnab400/unicred.rb +8 -0
- data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
- data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
- data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
- data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
- data/test/fixtures/retorno/cnab400/itau.ret +54 -0
- metadata +138 -3
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
|
|
4
|
+
describe BrBoleto::Boleto::Itau do
|
|
5
|
+
subject { FactoryGirl.build(:boleto_itau, conta: conta) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_itau) }
|
|
7
|
+
|
|
8
|
+
context "on validations" do
|
|
9
|
+
it { must validate_length_of(:numero_documento).is_at_most(8).with_message(:custom_length_maximum) }
|
|
10
|
+
|
|
11
|
+
context '#conta.carteira' do
|
|
12
|
+
it { subject.valid_carteira_inclusion.must_equal ['104', '105', '107', '108', '109', '112', '113', '116', '117', '119', '121', '122', '126', '131', '134', '135', '136', '142', '143', '146', '147', '150', '168', '169', '174', '175', '180', '191', '196', '198'] }
|
|
13
|
+
it "validação da carteira da conta" do
|
|
14
|
+
subject.conta.carteira = '4'
|
|
15
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '104, 105, 107, 108, 109, 112, 113, 116, 117, 119, 121, 122, 126, 131, 134, 135, 136, 142, 143, 146, 147, 150, 168, 169, 174, 175, 180, 191, 196, 198'})
|
|
16
|
+
subject.conta.carteira = '109'
|
|
17
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '104, 105, 107, 108, 109, 112, 113, 116, 117, 119, 121, 122, 126, 131, 134, 135, 136, 142, 143, 146, 147, 150, 168, 169, 174, 175, 180, 191, 196, 198'})
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
22
|
+
it { subject.valid_convenio_maximum.must_equal 5 }
|
|
23
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
24
|
+
|
|
25
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
26
|
+
subject.conta.codigo_cedente = ''
|
|
27
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
28
|
+
subject.conta.codigo_cedente = '123456'
|
|
29
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
36
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Itau.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
37
|
+
end
|
|
38
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
39
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Itau.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "#default_values" do
|
|
44
|
+
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
45
|
+
BrBoleto::Boleto::Itau.new.local_pagamento.must_equal 'PAGÁVEL EM QUALQUER BANCO OU CORRESPONDENTE ATÉ O VENCIMENTO.'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "#digito_verificador_nosso_numero" do
|
|
50
|
+
it "Se for uma carteiras_especiais_nosso_numero_dv (126 131 146 150 168) deve calcular pelo Modulo10 com o carteira e numero do documento" do
|
|
51
|
+
subject.conta.carteira = 126
|
|
52
|
+
subject.numero_documento = 111
|
|
53
|
+
BrBoleto::Calculos::Modulo10.expects(:new).with("12600000111").returns("meu_resultado")
|
|
54
|
+
subject.digito_verificador_nosso_numero.must_equal "meu_resultado"
|
|
55
|
+
end
|
|
56
|
+
it "Demais carteiras deve calcular pelo Modulo10 com o agencia, conta_corrente, carteira e numero do documento" do
|
|
57
|
+
subject.conta.agencia = 1234
|
|
58
|
+
subject.conta.conta_corrente = 12345
|
|
59
|
+
subject.conta.carteira = 109
|
|
60
|
+
subject.numero_documento = 111
|
|
61
|
+
BrBoleto::Calculos::Modulo10.expects(:new).with("12341234510900000111").returns("meu_resultado")
|
|
62
|
+
subject.digito_verificador_nosso_numero.must_equal "meu_resultado"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe "#nosso_numero" do
|
|
67
|
+
subject { FactoryGirl.build(:boleto_itau, numero_documento: '68315') }
|
|
68
|
+
|
|
69
|
+
it "deve retornar o numero do documento com o digito_verificador_nosso_numero" do
|
|
70
|
+
subject.stubs(:digito_verificador_nosso_numero).returns('9')
|
|
71
|
+
subject.numero_documento = '3646'
|
|
72
|
+
subject.nosso_numero.must_equal "109/00003646-9"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "#codigo_de_barras_do_banco (com as carteiras especiais de cobrança 107, 122, 142, 143, 196 e 198)" do
|
|
77
|
+
subject do
|
|
78
|
+
FactoryGirl.build(:boleto_itau, conta: {
|
|
79
|
+
carteira: '122',
|
|
80
|
+
agencia: '78',
|
|
81
|
+
conta_corrente: '668',
|
|
82
|
+
convenio: '12345',
|
|
83
|
+
},
|
|
84
|
+
numero_documento: '395'
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
88
|
+
subject.stubs(:nosso_numero).returns('122/00000395-9')
|
|
89
|
+
result = subject.codigo_de_barras_do_banco
|
|
90
|
+
result.size.must_equal 25
|
|
91
|
+
|
|
92
|
+
result[0..2].must_equal '122' # Carteira
|
|
93
|
+
result[3..10].must_equal '00000395' # Numero documento
|
|
94
|
+
result[11..17].must_equal '0000039' # Seu número
|
|
95
|
+
result[18..22].must_equal '12345' # Código cedente
|
|
96
|
+
result[23].must_equal '6' # DV codigo de barras
|
|
97
|
+
result[24].must_equal '0' # Zero
|
|
98
|
+
|
|
99
|
+
subject.codigo_de_barras_do_banco.must_equal '1220000039500000391234560'
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe "#codigo_de_barras_do_banco (para as demais carteiras)" do
|
|
104
|
+
subject do
|
|
105
|
+
FactoryGirl.build(:boleto_itau, conta: {
|
|
106
|
+
carteira: '109',
|
|
107
|
+
agencia: '78',
|
|
108
|
+
conta_corrente: '668',
|
|
109
|
+
conta_corrente_dv: '5',
|
|
110
|
+
},
|
|
111
|
+
numero_documento: '395'
|
|
112
|
+
)
|
|
113
|
+
end
|
|
114
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
115
|
+
subject.stubs(:nosso_numero).returns('109/00000395-2')
|
|
116
|
+
result = subject.codigo_de_barras_do_banco
|
|
117
|
+
result.size.must_equal 25
|
|
118
|
+
|
|
119
|
+
result[0..2].must_equal '109' # Carteira
|
|
120
|
+
result[3..10].must_equal '00000395' # Numero documento
|
|
121
|
+
result[11].must_equal '2' # Nosso numero DV
|
|
122
|
+
result[12..15].must_equal '0078' # Agencia
|
|
123
|
+
result[16..20].must_equal '00668' # Conta Corrente
|
|
124
|
+
result[21].must_equal '5' # Conta Corrente DV
|
|
125
|
+
result[22..24].must_equal '000' # Zeros
|
|
126
|
+
|
|
127
|
+
subject.codigo_de_barras_do_banco.must_equal '1090000039520078006685000'
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe "#codigo_de_barras" do
|
|
132
|
+
subject do
|
|
133
|
+
FactoryGirl.build(:boleto_itau) do |itau|
|
|
134
|
+
itau.conta.agencia = 3069
|
|
135
|
+
itau.conta.codigo_cedente = 828_19 # Para o itau é o código do cliente
|
|
136
|
+
itau.conta.codigo_cedente_dv = '0' # Para o itau é o código do cliente
|
|
137
|
+
itau.conta.carteira = '106'
|
|
138
|
+
itau.numero_documento = 100_10
|
|
139
|
+
itau.valor_documento = 93015.78
|
|
140
|
+
itau.data_vencimento = Date.parse('2020-02-17')
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it { subject.codigo_de_barras.must_equal '34199816800093015781060001001043069897558000' }
|
|
145
|
+
it { subject.linha_digitavel.must_equal '34191.06004 01001.043064 98975.580006 9 81680009301578' }
|
|
146
|
+
|
|
147
|
+
it "codigo de barras de um boleto de exemplo" do
|
|
148
|
+
subject.conta.agencia = 3069
|
|
149
|
+
subject.conta.codigo_cedente = 82819 # Para o itau é o código do cliente
|
|
150
|
+
subject.conta.codigo_cedente_dv = 0 # Para o itau é o código do cliente
|
|
151
|
+
subject.conta.carteira = '175'
|
|
152
|
+
subject.numero_documento = 15_679
|
|
153
|
+
subject.valor_documento = 408.50
|
|
154
|
+
subject.data_vencimento = Date.parse('2016-09-01')
|
|
155
|
+
|
|
156
|
+
subject.linha_digitavel.must_equal '34191.75009 01567.963069 98975.580006 2 69040000040850'
|
|
157
|
+
subject.codigo_de_barras.must_equal '34192690400000408501750001567963069897558000'
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
|
|
4
|
+
describe BrBoleto::Boleto::Sicredi do
|
|
5
|
+
subject { FactoryGirl.build(:boleto_sicredi, conta: conta) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_sicredi) }
|
|
7
|
+
|
|
8
|
+
context "on validations" do
|
|
9
|
+
it { must validate_length_of(:numero_documento).is_at_most(5).with_message(:custom_length_maximum) }
|
|
10
|
+
|
|
11
|
+
context '#conta.carteira' do
|
|
12
|
+
it { subject.valid_carteira_inclusion.must_equal ['1','3'] }
|
|
13
|
+
it "validação da carteira da conta" do
|
|
14
|
+
subject.conta.carteira = '4'
|
|
15
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '1, 3'})
|
|
16
|
+
subject.conta.carteira = '1'
|
|
17
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '1, 3'})
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
22
|
+
it { subject.valid_convenio_maximum.must_equal 5 }
|
|
23
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
24
|
+
|
|
25
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
26
|
+
subject.conta.codigo_cedente = ''
|
|
27
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
28
|
+
subject.conta.codigo_cedente = '123456'
|
|
29
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
36
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Sicredi.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
37
|
+
end
|
|
38
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
39
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Sicredi.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "#default_values" do
|
|
44
|
+
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
45
|
+
BrBoleto::Boleto::Sicredi.new.local_pagamento.must_equal 'PAGÁVEL PREFERENCIALMENTE NAS COOPERATIVAS DE CRÉDITO DO SICREDI'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "#digito_verificador_nosso_numero" do
|
|
50
|
+
it "deve utilizar o Modulo11FatorDe2a9RestoZero para calcular o digito passando a agencia, posto, conta_corrente, ano, byte_id e numero_documento" do
|
|
51
|
+
subject.stubs(:ano).returns('16')
|
|
52
|
+
subject.assign_attributes(conta: {agencia: '4697', posto: '02', conta_corrente: '55825', byte_id: '3'}, numero_documento: '77445')
|
|
53
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with("4697025582516377445").returns('8')
|
|
54
|
+
|
|
55
|
+
subject.digito_verificador_nosso_numero.must_equal '8'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
describe "#nosso_numero" do
|
|
60
|
+
subject { FactoryGirl.build(:boleto_sicredi, numero_documento: '68315') }
|
|
61
|
+
|
|
62
|
+
it "deve retornar o numero do documento com o digito_verificador_nosso_numero" do
|
|
63
|
+
subject.stubs(:ano).returns('15')
|
|
64
|
+
subject.conta.byte_id = '7'
|
|
65
|
+
subject.numero_documento = '3646'
|
|
66
|
+
subject.stubs(:digito_verificador_nosso_numero).returns('9')
|
|
67
|
+
subject.nosso_numero.must_equal "15/703646-9"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe "#codigo_de_barras_do_banco" do
|
|
72
|
+
subject do
|
|
73
|
+
FactoryGirl.build(:boleto_sicredi, conta: {
|
|
74
|
+
carteira: '3',
|
|
75
|
+
codigo_carteira: '1',
|
|
76
|
+
agencia: '7832',
|
|
77
|
+
conta_corrente: '668',
|
|
78
|
+
posto: '22',
|
|
79
|
+
},
|
|
80
|
+
numero_documento: '395'
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
84
|
+
subject.stubs(:nosso_numero).returns('15/703646-9')
|
|
85
|
+
subject.stubs(:nosso_numero_codigo_de_barras).returns('152003952')
|
|
86
|
+
|
|
87
|
+
result = subject.codigo_de_barras_do_banco
|
|
88
|
+
result.size.must_equal 25
|
|
89
|
+
|
|
90
|
+
result[0].must_equal '3' # Carteira
|
|
91
|
+
result[1].must_equal '1' # Cod. Carteira
|
|
92
|
+
result[2..10].must_equal '152003952' # Nosso número com o DV
|
|
93
|
+
result[11..14].must_equal '7832' # Agência
|
|
94
|
+
result[15..16].must_equal '22' # Posto
|
|
95
|
+
result[17..21].must_equal '00668' # Conta Corrente
|
|
96
|
+
result[22].must_equal '1'
|
|
97
|
+
result[23].must_equal '0'
|
|
98
|
+
result[24].must_equal '5' # DV Campo Livre
|
|
99
|
+
subject.codigo_de_barras_do_banco.must_equal '3115200395278322200668105'
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe "#codigo_de_barras" do
|
|
104
|
+
subject do
|
|
105
|
+
FactoryGirl.build(:boleto_sicredi) do |sicredi|
|
|
106
|
+
sicredi.conta.agencia = 3069
|
|
107
|
+
sicredi.conta.posto = 66
|
|
108
|
+
sicredi.conta.codigo_cedente = 828_19 # Para o sicredi é o código do cliente
|
|
109
|
+
sicredi.conta.codigo_cedente_dv = '0' # Para o sicredi é o código do cliente
|
|
110
|
+
sicredi.conta.carteira = '1'
|
|
111
|
+
sicredi.conta.codigo_carteira = '1'
|
|
112
|
+
sicredi.numero_documento = 100_10
|
|
113
|
+
sicredi.valor_documento = 93015.78
|
|
114
|
+
sicredi.data_vencimento = Date.parse('2020-02-17')
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it { subject.codigo_de_barras.must_equal '74898816800093015781116210010830696689755104' }
|
|
119
|
+
it { subject.linha_digitavel.must_equal '74891.11620 10010.830692 66897.551041 8 81680009301578' }
|
|
120
|
+
|
|
121
|
+
it "codigo de barras de um boleto de exemplo" do
|
|
122
|
+
subject.conta.agencia = 3069
|
|
123
|
+
subject.conta.posto = 66
|
|
124
|
+
subject.conta.codigo_cedente = 82819 # Para o sicredi é o código do cliente
|
|
125
|
+
subject.conta.codigo_cedente_dv = 0 # Para o sicredi é o código do cliente
|
|
126
|
+
subject.conta.carteira = '1'
|
|
127
|
+
subject.conta.codigo_carteira = '1'
|
|
128
|
+
subject.numero_documento = 15_679
|
|
129
|
+
subject.valor_documento = 408.50
|
|
130
|
+
subject.data_vencimento = Date.parse('2016-09-01')
|
|
131
|
+
|
|
132
|
+
subject.linha_digitavel.must_equal '74891.11620 15679.030690 66897.551066 9 69040000040850'
|
|
133
|
+
subject.codigo_de_barras.must_equal '74899690400000408501116215679030696689755106'
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
|
|
4
|
+
describe BrBoleto::Boleto::Unicred do
|
|
5
|
+
subject { FactoryGirl.build(:boleto_unicred, conta: conta) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_unicred) }
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
context "on validations" do
|
|
10
|
+
it { must validate_length_of(:numero_documento).is_at_most(11).with_message(:custom_length_maximum) }
|
|
11
|
+
|
|
12
|
+
context '#conta.carteira' do
|
|
13
|
+
it { subject.valid_carteira_inclusion.must_equal ['06','09','19','21','22'] }
|
|
14
|
+
it "validação da carteira da conta" do
|
|
15
|
+
subject.conta.carteira = '4'
|
|
16
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '06, 09, 19, 21, 22'})
|
|
17
|
+
subject.conta.carteira = '06'
|
|
18
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '06, 09, 19, 21, 22'})
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
23
|
+
it { subject.valid_convenio_maximum.must_equal 7 }
|
|
24
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
25
|
+
|
|
26
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
27
|
+
subject.conta.codigo_cedente = ''
|
|
28
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
29
|
+
subject.conta.codigo_cedente = '123456'
|
|
30
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "#valid_avalista_required" do
|
|
35
|
+
it { subject.valid_avalista_required.must_equal true }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
41
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Unicred.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
42
|
+
end
|
|
43
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
44
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Unicred.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "#default_values" do
|
|
49
|
+
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
50
|
+
BrBoleto::Boleto::Unicred.new.local_pagamento.must_equal 'PAGÁVEL PREFERENCIALMENTE NA REDE BRADESCO OU NO BRADESCO EXPRESSO'
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "#digito_verificador_nosso_numero" do
|
|
55
|
+
it "deve calcular pelo Modulo11Fator3197" do
|
|
56
|
+
# subject.carteira = 09
|
|
57
|
+
subject.numero_documento = 111
|
|
58
|
+
BrBoleto::Calculos::Modulo11FatorDe2a7.expects(:new).with("0900000000111").returns("meu_resultado")
|
|
59
|
+
subject.digito_verificador_nosso_numero.must_equal "meu_resultado"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "#nosso_numero" do
|
|
64
|
+
subject { FactoryGirl.build(:boleto_unicred, numero_documento: '68315') }
|
|
65
|
+
|
|
66
|
+
it "deve retornar o numero do documento com o digito_verificador_nosso_numero" do
|
|
67
|
+
subject.stubs(:digito_verificador_nosso_numero).returns('9')
|
|
68
|
+
subject.numero_documento = '3646'
|
|
69
|
+
subject.nosso_numero.must_equal "09/00000003646-9"
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe "#codigo_de_barras_do_banco" do
|
|
74
|
+
subject do
|
|
75
|
+
FactoryGirl.build(:boleto_unicred, conta: {
|
|
76
|
+
carteira: '09',
|
|
77
|
+
agencia: '78',
|
|
78
|
+
conta_corrente: '668',
|
|
79
|
+
},
|
|
80
|
+
numero_documento: '395'
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
84
|
+
subject.stubs(:nosso_numero).returns('09/00000003646-9')
|
|
85
|
+
|
|
86
|
+
result = subject.codigo_de_barras_do_banco
|
|
87
|
+
result.size.must_equal 25
|
|
88
|
+
|
|
89
|
+
result[0..3].must_equal '0078' # Agencia
|
|
90
|
+
result[4..5].must_equal '09' # Carteira
|
|
91
|
+
result[6..16].must_equal '00000000395' # Numero documento
|
|
92
|
+
result[17..23].must_equal '0000668' # Conta Corrente
|
|
93
|
+
result[24].must_equal '0' # Zero
|
|
94
|
+
|
|
95
|
+
subject.codigo_de_barras_do_banco.must_equal '0078090000000039500006680'
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "#codigo_de_barras" do
|
|
100
|
+
subject do
|
|
101
|
+
FactoryGirl.build(:boleto_unicred) do |unicred|
|
|
102
|
+
unicred.conta.agencia = 3069
|
|
103
|
+
unicred.conta.codigo_cedente = 828_19 # Para o unicred é o código do cliente
|
|
104
|
+
unicred.conta.codigo_cedente_dv = '0' # Para o unicred é o código do cliente
|
|
105
|
+
unicred.conta.carteira = '09'
|
|
106
|
+
unicred.numero_documento = 100_10
|
|
107
|
+
unicred.valor_documento = 93015.78
|
|
108
|
+
unicred.data_vencimento = Date.parse('2020-02-17')
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it { subject.codigo_de_barras.must_equal '23795816800093015783069090000001001000897550' }
|
|
113
|
+
it { subject.linha_digitavel.must_equal '23793.06901 90000.001009 10008.975509 5 81680009301578' }
|
|
114
|
+
|
|
115
|
+
it "codigo de barras de um boleto de exemplo" do
|
|
116
|
+
subject.conta.agencia = 3069
|
|
117
|
+
subject.conta.codigo_cedente = 82819 # Para o unicred é o código do cliente
|
|
118
|
+
subject.conta.codigo_cedente_dv = 0 # Para o unicred é o código do cliente
|
|
119
|
+
subject.conta.carteira = '09'
|
|
120
|
+
subject.numero_documento = 15_679
|
|
121
|
+
subject.valor_documento = 408.50
|
|
122
|
+
subject.data_vencimento = Date.parse('2016-09-01')
|
|
123
|
+
|
|
124
|
+
subject.linha_digitavel.must_equal '23793.06901 90000.001561 79008.975504 3 69040000040850'
|
|
125
|
+
subject.codigo_de_barras.must_equal '23793690400000408503069090000001567900897550'
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|