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,250 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrBoleto::Remessa::Cnab240::Unicred do
|
|
4
|
+
subject { FactoryGirl.build(:remessa_cnab240_unicred, lotes: lote) }
|
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, valor_documento: 879.66) }
|
|
6
|
+
let(:lote) { FactoryGirl.build(:remessa_lote, pagamentos: pagamento) }
|
|
7
|
+
|
|
8
|
+
it "deve herdar da class Bradesco" do
|
|
9
|
+
subject.class.superclass.must_equal BrBoleto::Remessa::Cnab240::Bradesco
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context "validations" do
|
|
13
|
+
describe 'Validações personalizadas da conta' do
|
|
14
|
+
it 'valid_carteira_required' do
|
|
15
|
+
# subject.send(:valid_carteira_required).must_equal true
|
|
16
|
+
subject.conta.carteira = ''
|
|
17
|
+
conta_must_be_msg_error(:carteira, :blank)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'valid_carteira_length' do
|
|
21
|
+
# subject.send(:valid_carteira_length).must_equal 2
|
|
22
|
+
subject.conta.carteira = '1234567890123456'
|
|
23
|
+
conta_must_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it 'valid_convenio_required' do
|
|
27
|
+
# subject.send(:valid_convenio_required).must_equal true
|
|
28
|
+
subject.conta.convenio = ''
|
|
29
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'valid_convenio_length' do
|
|
33
|
+
# subject.send(:valid_convenio_length).must_equal 2
|
|
34
|
+
subject.conta.convenio = '1234567890123456'
|
|
35
|
+
conta_must_be_msg_error(:convenio, :custom_length_maximum, {count: 7})
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'agencia_required' do
|
|
39
|
+
# subject.send(:agencia_required).must_equal true
|
|
40
|
+
subject.conta.agencia = ''
|
|
41
|
+
conta_must_be_msg_error(:agencia, :blank)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'agencia_length' do
|
|
45
|
+
# subject.send(:agencia_length).must_equal 2
|
|
46
|
+
subject.conta.agencia = '1234567890123456'
|
|
47
|
+
conta_must_be_msg_error(:agencia, :custom_length_is, {count: 4})
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
53
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Unicred.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
describe "#convenio_lote" do
|
|
60
|
+
it "as 7 primeiras posições deve ser o valor do convenio ajustado com zeros a esquerda" do
|
|
61
|
+
subject.conta.codigo_cedente = '88'
|
|
62
|
+
subject.convenio_lote(lote).must_equal '00000000000000000088'
|
|
63
|
+
|
|
64
|
+
subject.conta.convenio = '7374'
|
|
65
|
+
subject.convenio_lote(lote).must_equal '00000000000000007374'
|
|
66
|
+
end
|
|
67
|
+
it "deve ter 20 caracteres" do
|
|
68
|
+
subject.convenio_lote(lote).size.must_equal 20
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
describe "#informacoes_da_conta" do
|
|
73
|
+
it "deve ter 20 posições" do
|
|
74
|
+
subject.informacoes_da_conta.size.must_equal 20
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "1 - Primeira parte = agencia 5 posicoes - ajustados com zeros a esquerda" do
|
|
78
|
+
subject.conta.agencia = '47'
|
|
79
|
+
subject.informacoes_da_conta[0..4].must_equal '00047'
|
|
80
|
+
|
|
81
|
+
subject.conta.agencia = '1234'
|
|
82
|
+
subject.informacoes_da_conta[0..4].must_equal '01234'
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "2 - Segunda parte = agencia_dv" do
|
|
86
|
+
subject.conta.agencia_dv = '7'
|
|
87
|
+
subject.informacoes_da_conta[5].must_equal "7"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "3 - Terceira parte = conta_corrente 12 posicoes - ajustados com zeros a esquerda" do
|
|
91
|
+
subject.conta.conta_corrente = '89755'
|
|
92
|
+
subject.informacoes_da_conta[6..17].must_equal '000000089755'
|
|
93
|
+
|
|
94
|
+
subject.conta.conta_corrente = '1234567890'
|
|
95
|
+
subject.informacoes_da_conta[6..17].must_equal '001234567890'
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "4 - Quarta parte = Conta Corrente DV" do
|
|
99
|
+
subject.conta.conta_corrente_dv = '8'
|
|
100
|
+
subject.informacoes_da_conta[18..18].must_equal('8')
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "5 - Quinta parte = Se o conta_corrente_dv não for 2 digitos deve ter 1 espaço em branco" do
|
|
104
|
+
subject.informacoes_da_conta[19].must_equal(' ')
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe "#complemento_header_arquivo" do
|
|
109
|
+
it "deve ter 29 posições" do
|
|
110
|
+
subject.complemento_header_arquivo.size.must_equal 29
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "2 - Segunda parte = USO FEBRABAN com 25 posições em branco" do
|
|
114
|
+
subject.complemento_header_arquivo[4..28].must_equal ' ' * 25
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "#complemento_p" do
|
|
119
|
+
|
|
120
|
+
it "deve ter 34 posições" do
|
|
121
|
+
subject.complemento_p(pagamento).size.must_equal 34
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "1 - Primeira parte = conta_corrente com 12 posicoes - ajustados com zeros a esquerda" do
|
|
125
|
+
subject.conta.conta_corrente = '1234'
|
|
126
|
+
subject.complemento_p(pagamento)[0..11].must_equal '000000001234'
|
|
127
|
+
|
|
128
|
+
subject.conta.conta_corrente = '264631'
|
|
129
|
+
subject.complemento_p(pagamento)[0..11].must_equal '000000264631'
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "2 - Seguna parte = Conta Corrente DV - 1 posicao" do
|
|
133
|
+
subject.conta.conta_corrente_dv = '7'
|
|
134
|
+
subject.complemento_p(pagamento)[12..12].must_equal '7'
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "3 - Terceira parte = Se o conta_corrente_dv não for 2 digitos deve ter 1 espaço em branco" do
|
|
138
|
+
subject.complemento_p(pagamento)[13..13].must_equal ' '
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "4 - Quarta parte = Numero documento com 11 posicoes" do
|
|
142
|
+
pagamento.numero_documento = '89378'
|
|
143
|
+
subject.complemento_p(pagamento)[14..24].must_equal '00000089378'
|
|
144
|
+
|
|
145
|
+
pagamento.numero_documento = '12345678901'
|
|
146
|
+
subject.complemento_p(pagamento)[14..24].must_equal '12345678901'
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "5 - Quinta parte = numero_documento DV com 1 posicao - Deve ser o ultimo digito do nosso numero" do
|
|
150
|
+
pagamento.nosso_numero = '99/99999999999-9'
|
|
151
|
+
subject.complemento_p(pagamento)[25..25].must_equal '9'
|
|
152
|
+
|
|
153
|
+
pagamento.nosso_numero = '99/99999999999-0'
|
|
154
|
+
subject.complemento_p(pagamento)[25..25].must_equal '0'
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "6 - Sexta parte = Exclusivo Banco com 8 posicoes preenchidas com zeros" do
|
|
158
|
+
subject.complemento_p(pagamento)[26..33].must_equal ' ' * 8
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
describe "#segmento_p_numero_do_documento" do
|
|
164
|
+
it "deve ter 15 posições" do
|
|
165
|
+
subject.segmento_p_numero_do_documento(pagamento).size.must_equal 15
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it "deve conter o numero do documento 15 posicoes - ajustados com zeros a esquerda" do
|
|
169
|
+
pagamento.expects(:numero_documento).returns("977897")
|
|
170
|
+
subject.segmento_p_numero_do_documento(pagamento).must_equal '000000000977897'
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
describe "#complemento_trailer_lote" do
|
|
175
|
+
it "deve ter 217 posições" do
|
|
176
|
+
subject.complemento_trailer_lote(lote, 5).size.must_equal 217
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
it "1 - Primeira parte = 92 posições todas preenchidas com zeros (VALORES UTILIZADOS APENAS PARA ARQUIVO DE RETORNO)" do
|
|
180
|
+
subject.complemento_trailer_lote(lote, 5)[0..91].must_equal '0' * 92
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it "2 - Segunda parte = 8 posições todas preenchidas com zeros (Nr. do aviso de lançamento do crédito referente aos títulos de cobrança)" do
|
|
184
|
+
subject.complemento_trailer_lote(lote, 5)[92..99].must_equal ('0' * 8)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
it "3 - Terceira parte = EXCLUSIVO FEBRABAN com 117 posicoes em branco" do
|
|
188
|
+
subject.complemento_trailer_lote(lote, 5)[100..216].must_equal (' ' * 117)
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
describe "usa_segmento_S?" do
|
|
193
|
+
it "deve retornar false como padrão para o UNICRED" do
|
|
194
|
+
subject.usa_segmento_S?.must_equal false
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
describe 'Geração do arquivo' do
|
|
199
|
+
let(:conta) do
|
|
200
|
+
{
|
|
201
|
+
razao_social: 'EMPRESA EMITENTE',
|
|
202
|
+
cpf_cnpj: '33.486.451/0001-30',
|
|
203
|
+
carteira: '09',
|
|
204
|
+
agencia: '7506',
|
|
205
|
+
codigo_cedente: '82819',
|
|
206
|
+
conta_corrente: '1354843'
|
|
207
|
+
}
|
|
208
|
+
end
|
|
209
|
+
let(:pagador) {
|
|
210
|
+
{
|
|
211
|
+
nome: 'Benjamin Francisco Marcos Vinicius Fernandes',
|
|
212
|
+
cpf_cnpj: '787.933.211-12',
|
|
213
|
+
endereco: 'Rua Principal s/n 881',
|
|
214
|
+
bairro: 'Centro',
|
|
215
|
+
cep: '79210-972',
|
|
216
|
+
cidade: 'Anastácio',
|
|
217
|
+
uf: 'MS',
|
|
218
|
+
nome_avalista: 'EMPRESA EMITENTE',
|
|
219
|
+
documento_avalista: '33486451000130'
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
let(:pagamento) {
|
|
223
|
+
BrBoleto::Remessa::Pagamento.new({
|
|
224
|
+
nosso_numero: '09000000000011',
|
|
225
|
+
numero_documento: '00000000001',
|
|
226
|
+
data_vencimento: Date.parse('13/12/2016'),
|
|
227
|
+
valor_documento: 50.00,
|
|
228
|
+
pagador: pagador,
|
|
229
|
+
especie_titulo: '02',
|
|
230
|
+
codigo_juros: '0',
|
|
231
|
+
data_juros: Date.parse('15/12/2016'),
|
|
232
|
+
valor_juros: 0.00,
|
|
233
|
+
codigo_multa: '0',
|
|
234
|
+
data_multa: Date.parse('14/12/2016'),
|
|
235
|
+
valor_multa: 0.00,
|
|
236
|
+
data_emissao: Date.parse('10/11/2016'),
|
|
237
|
+
})
|
|
238
|
+
}
|
|
239
|
+
let(:lote) { BrBoleto::Remessa::Lote.new(pagamentos: pagamento) }
|
|
240
|
+
it "deve gerar o arquivo de remessa corretamente com as informações passadas" do
|
|
241
|
+
remessa = BrBoleto::Remessa::Cnab240::Unicred.new({
|
|
242
|
+
data_hora_arquivo: Time.parse('10/11/2016 09:27:45'),
|
|
243
|
+
sequencial_remessa: 1,
|
|
244
|
+
conta: conta,
|
|
245
|
+
lotes: [lote],
|
|
246
|
+
})
|
|
247
|
+
remessa.dados_do_arquivo.must_equal read_fixture('remessa/cnab240/unicred.rem')
|
|
248
|
+
end
|
|
249
|
+
end
|
|
250
|
+
end
|
|
@@ -156,7 +156,7 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
|
156
156
|
|
|
157
157
|
it '#detalhe_posicao_002_003 - deve retornar o tipo do cnpj da conta' do
|
|
158
158
|
conta.expects(:tipo_cpf_cnpj).returns('5')
|
|
159
|
-
subject.detalhe_posicao_002_003.must_equal '5'
|
|
159
|
+
subject.detalhe_posicao_002_003(pagamento).must_equal '5'
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
it '#detalhe_posicao_004_017 - deve retornar o cnpj da conta ajustado para 14 digitos' do
|
|
@@ -171,7 +171,7 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
|
171
171
|
end
|
|
172
172
|
|
|
173
173
|
it '#detalhe_posicao_038_062 - deve retornar 25 caracteres vazios' do
|
|
174
|
-
subject.detalhe_posicao_038_062.must_equal ''.rjust(25, ' ')
|
|
174
|
+
subject.detalhe_posicao_038_062(pagamento).must_equal ''.rjust(25, ' ')
|
|
175
175
|
|
|
176
176
|
end
|
|
177
177
|
|
|
@@ -188,8 +188,8 @@ describe BrBoleto::Remessa::Cnab400::Base do
|
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
it '#detalhe_posicao_109_110 - deve retornar a identificacao da ocorrencia ajustando o tamanho para 2' do # (pagamento, sequencial)
|
|
191
|
-
pagamento.expects(:identificacao_ocorrencia).returns('
|
|
192
|
-
subject.detalhe_posicao_109_110(pagamento, 1).must_equal '
|
|
191
|
+
pagamento.expects(:identificacao_ocorrencia).returns('5')
|
|
192
|
+
subject.detalhe_posicao_109_110(pagamento, 1).must_equal '05'
|
|
193
193
|
end
|
|
194
194
|
|
|
195
195
|
it '#detalhe_posicao_111_120 - deve retornar o numero do documento do pagamento' do # (pagamento, sequencial)
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
4
|
+
subject { FactoryGirl.build(:remessa_cnab400_bradesco, pagamentos: pagamento, conta: conta) }
|
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, pagador: pagador) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_bradesco) }
|
|
7
|
+
let(:pagador) { FactoryGirl.build(:pagador) }
|
|
8
|
+
|
|
9
|
+
it "deve ter a class para a conta do bradesco" do
|
|
10
|
+
BrBoleto::Remessa::Cnab400::Bradesco.new.conta_class.must_equal BrBoleto::Conta::Bradesco
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "deve herdar de Cnab400::Base" do
|
|
14
|
+
subject.class.superclass.must_equal BrBoleto::Remessa::Cnab400::Base
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#informacoes_da_conta' do
|
|
18
|
+
it "deve retornar com 20 caracteres" do
|
|
19
|
+
subject.informacoes_da_conta(:header).size.must_equal 20
|
|
20
|
+
end
|
|
21
|
+
it "deve trazer as informações em suas posições quando o parametro for :header" do
|
|
22
|
+
conta.codigo_empresa = 39321235
|
|
23
|
+
result = subject.informacoes_da_conta(:header)
|
|
24
|
+
|
|
25
|
+
result[0..20].must_equal '00000000000039321235' # Codigo Empresa
|
|
26
|
+
end
|
|
27
|
+
it "deve retornar com 20 caracteres" do
|
|
28
|
+
subject.informacoes_da_conta(:detalhe).size.must_equal 20
|
|
29
|
+
end
|
|
30
|
+
it "deve trazer as informações em suas posições quando o parametro for :detalhe" do
|
|
31
|
+
conta.agencia = 1234
|
|
32
|
+
conta.agencia_dv = 1
|
|
33
|
+
conta.conta_corrente = 89755
|
|
34
|
+
conta.conta_corrente_dv = 7
|
|
35
|
+
conta.carteira = 21
|
|
36
|
+
result = subject.informacoes_da_conta(:detalhe)
|
|
37
|
+
|
|
38
|
+
result[0..2].must_equal ' '
|
|
39
|
+
result[3].must_equal '0'
|
|
40
|
+
result[4..6].must_equal '021'
|
|
41
|
+
result[7..11].must_equal '01234' # Agencia
|
|
42
|
+
result[12..18].must_equal '0089755' # Conta Corrente
|
|
43
|
+
result[19].must_equal '7' # Conta Corrente DV
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe '#complemento_registro' do
|
|
48
|
+
it "deve retornar o sequencial da remessa com 12 posições e mais 277 brancos" do
|
|
49
|
+
subject.sequencial_remessa = 4758
|
|
50
|
+
|
|
51
|
+
subject.complemento_registro[0..7].must_equal ' '
|
|
52
|
+
subject.complemento_registro[8..9].must_equal 'MX'
|
|
53
|
+
subject.complemento_registro[10..16].must_equal '0004758'
|
|
54
|
+
subject.complemento_registro[17..293].must_equal ''.rjust(277)
|
|
55
|
+
|
|
56
|
+
subject.complemento_registro.size.must_equal 294
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
describe '#detalhe_posicao_063_108' do
|
|
62
|
+
it "deve ter o tamanho de 46 digitos" do
|
|
63
|
+
subject.detalhe_posicao_063_108(pagamento).size.must_equal 46
|
|
64
|
+
end
|
|
65
|
+
it "deve conter as informações nas posições corretas" do
|
|
66
|
+
pagamento.assign_attributes(tipo_emissao: 2)
|
|
67
|
+
result = subject.detalhe_posicao_063_108(pagamento)
|
|
68
|
+
|
|
69
|
+
result[0..2].must_equal '000'
|
|
70
|
+
result[3].must_equal '0' # Identificativos de Multa
|
|
71
|
+
result[4..7].must_equal '0000' # Percentual de Multa por Atraso
|
|
72
|
+
result[8..18].must_equal '00000977897' # Identificação do Título no Banco
|
|
73
|
+
result[19].must_equal '6' # Nosso numero DV
|
|
74
|
+
result[20..29].must_equal '0000000000' # Desconto Bonificação por dia
|
|
75
|
+
result[30].must_equal '2' # Condição para Emissão da Papeleta de Cobrança
|
|
76
|
+
result[31..45].must_equal ''.rjust(15) # Preencher com Branco
|
|
77
|
+
|
|
78
|
+
result.size.must_equal 46
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe '#informacoes_do_pagamento' do
|
|
83
|
+
it "deve ter o tamanho de 40 digitos" do
|
|
84
|
+
subject.informacoes_do_pagamento(pagamento, 1).size.must_equal 40
|
|
85
|
+
end
|
|
86
|
+
it "deve conter as informações nas posições corretas" do
|
|
87
|
+
conta.agencia = 4587
|
|
88
|
+
conta.agencia_dv = 45 # Vai retornar apenas o 4
|
|
89
|
+
pagamento.data_vencimento = Date.parse('05/08/2029')
|
|
90
|
+
pagamento.valor_documento = 47.56
|
|
91
|
+
pagamento.especie_titulo = "12"
|
|
92
|
+
pagamento.aceite = true
|
|
93
|
+
pagamento.data_emissao = Date.parse('15/09/2017')
|
|
94
|
+
result = subject.informacoes_do_pagamento(pagamento, 4)
|
|
95
|
+
result.size.must_equal 40
|
|
96
|
+
|
|
97
|
+
result[00..05].must_equal '050829' # "Data Vencimento: Formato DDMMAA Normal ""DDMMAA"" A vista = ""888888"" Contra Apresentação = ""999999"""
|
|
98
|
+
result[06..18].must_equal '0000000004756' # Valor do Titulo
|
|
99
|
+
result[19..21].must_equal '000' # 000 ou Número Banco
|
|
100
|
+
result[22..26].must_equal "00000" # 000000 ou Agencia
|
|
101
|
+
result[27..28].must_equal "02" # Espécie do Título
|
|
102
|
+
result[ 29 ].must_equal "N" # dentificação (Sempre 'N')
|
|
103
|
+
result[30..35].must_equal '150917' # Data de Emissão do Título: formato ddmmaa
|
|
104
|
+
result[36..37].must_equal '00' # Primeira instrução codificada
|
|
105
|
+
result[38..39].must_equal '00' # Segunda instrução
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe '#detalhe_multas_e_juros_do_pagamento' do
|
|
110
|
+
it "deve ter o tamanho de 58 digitos" do
|
|
111
|
+
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
|
112
|
+
end
|
|
113
|
+
it "deve conter as informações nas posições corretas" do
|
|
114
|
+
pagamento.valor_mora = '0.39'
|
|
115
|
+
pagamento.valor_iof = '2.7'
|
|
116
|
+
pagamento.data_desconto = Date.parse('21/03/2018')
|
|
117
|
+
pagamento.valor_desconto = 4.3
|
|
118
|
+
pagamento.valor_abatimento = 56.47
|
|
119
|
+
|
|
120
|
+
result = subject.detalhe_multas_e_juros_do_pagamento(pagamento, 4)
|
|
121
|
+
result.size.must_equal 58
|
|
122
|
+
|
|
123
|
+
result[00..12].must_equal '0000000000039'
|
|
124
|
+
result[13..18].must_equal "210318"
|
|
125
|
+
result[19..31].must_equal '0000000000430'
|
|
126
|
+
result[32..44].must_equal '0000000000270'
|
|
127
|
+
result[45..57].must_equal '0000000005647'
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe '#informacoes_do_sacado' do
|
|
132
|
+
it "deve ter o tamanho de 176 digitos" do
|
|
133
|
+
subject.informacoes_do_sacado(pagamento, 2).size.must_equal 176
|
|
134
|
+
end
|
|
135
|
+
it "deve conter as informações nas posições corretas" do
|
|
136
|
+
# pagador.tipo_cpf_cnpj = '1'
|
|
137
|
+
pagador.cpf_cnpj = '12345678901'
|
|
138
|
+
pagador.nome = 'nome pagador'
|
|
139
|
+
pagador.endereco = 'rua do pagador'
|
|
140
|
+
pagador.bairro = 'bairro do pagador'
|
|
141
|
+
pagador.cidade = 'Chapecó'
|
|
142
|
+
pagador.uf = 'SC'
|
|
143
|
+
pagador.cep = '89885-001'
|
|
144
|
+
pagador.nome_avalista = 'Avalista'
|
|
145
|
+
pagador.documento_avalista = '840.106.990-43'
|
|
146
|
+
|
|
147
|
+
result = subject.informacoes_do_sacado(pagamento, 2)
|
|
148
|
+
result.size.must_equal 176
|
|
149
|
+
|
|
150
|
+
result[00..01].must_equal "01" # Tipo de Inscrição do Pagador: "01" = CPF / "02" = CNPJ
|
|
151
|
+
result[02..15].must_equal '00012345678901' # Número do CNPJ ou CPF do Pagador
|
|
152
|
+
result[16..55].must_equal 'nome pagador'.adjust_size_to(40) # Nome do Pagador
|
|
153
|
+
|
|
154
|
+
result[56..73].must_equal 'rua do pagador'.adjust_size_to(18) # Endereço do Pagador
|
|
155
|
+
result[74..83].must_equal 'bairro do pagador'.adjust_size_to(10) # Endereço do Pagador
|
|
156
|
+
result[84..93].must_equal 'Chapecó'.adjust_size_to(10) # Endereço do Pagador
|
|
157
|
+
result[94..95].must_equal 'SC'.adjust_size_to(2) # Endereço do Pagador
|
|
158
|
+
result[108..115].must_equal '89885001' # CEP do Pagador
|
|
159
|
+
|
|
160
|
+
result[116..129].must_equal '84010699043'.adjust_size_to(14) # Observações/Mensagem ou Sacador/Avalista
|
|
161
|
+
result[130..175].must_equal 'Avalista'.adjust_size_to(46) # Observações/Mensagem ou Sacador/Avalista
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrBoleto::Remessa::Cnab400::Itau do
|
|
4
|
+
subject { FactoryGirl.build(:remessa_cnab400_itau, pagamentos: pagamento, conta: conta) }
|
|
5
|
+
let(:pagamento) { FactoryGirl.build(:remessa_pagamento, pagador: pagador) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_itau) }
|
|
7
|
+
let(:pagador) { FactoryGirl.build(:pagador) }
|
|
8
|
+
|
|
9
|
+
it "deve ter a class para a conta do itau" do
|
|
10
|
+
BrBoleto::Remessa::Cnab400::Itau.new.conta_class.must_equal BrBoleto::Conta::Itau
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "deve herdar de Cnab400::Base" do
|
|
14
|
+
subject.class.superclass.must_equal BrBoleto::Remessa::Cnab400::Base
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe '#informacoes_da_conta' do
|
|
18
|
+
it "deve retornar com 20 caracteres" do
|
|
19
|
+
subject.informacoes_da_conta(:header).size.must_equal 20
|
|
20
|
+
end
|
|
21
|
+
it "deve trazer as informações em suas posições quando o parametro for :header" do
|
|
22
|
+
conta.agencia = 1234
|
|
23
|
+
conta.agencia_dv = 1
|
|
24
|
+
conta.conta_corrente = 89755
|
|
25
|
+
conta.conta_corrente_dv = 7
|
|
26
|
+
|
|
27
|
+
result = subject.informacoes_da_conta(:header)
|
|
28
|
+
|
|
29
|
+
result[0..3].must_equal '1234' # Agencia
|
|
30
|
+
result[4..5].must_equal '00'
|
|
31
|
+
result[6..10].must_equal '89755' # Conta Corrente
|
|
32
|
+
result[11].must_equal '7' # Conta Corrente DV
|
|
33
|
+
result[12..19].must_equal ' ' * 8
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
it "deve retornar com 20 caracteres" do
|
|
38
|
+
subject.informacoes_da_conta(:detalhe).size.must_equal 20
|
|
39
|
+
end
|
|
40
|
+
it "deve trazer as informações em suas posições quando o parametro for :detalhe" do
|
|
41
|
+
conta.agencia = 1234
|
|
42
|
+
conta.agencia_dv = 1
|
|
43
|
+
conta.conta_corrente = 89755
|
|
44
|
+
conta.conta_corrente_dv = 7
|
|
45
|
+
|
|
46
|
+
result = subject.informacoes_da_conta(:detalhe)
|
|
47
|
+
|
|
48
|
+
result[0..3].must_equal '1234' # Agencia
|
|
49
|
+
result[4..5].must_equal '00'
|
|
50
|
+
result[6..10].must_equal '89755' # Conta Corrente
|
|
51
|
+
result[11].must_equal '7' # Conta Corrente DV
|
|
52
|
+
result[12..15].must_equal ' '
|
|
53
|
+
result[16..19].must_equal '0000'
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe '#complemento_registro' do
|
|
59
|
+
it "deve retornar 294 brancos" do
|
|
60
|
+
subject.complemento_registro[0..293].must_equal ''.rjust(294)
|
|
61
|
+
subject.complemento_registro.size.must_equal 294
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
describe '#detalhe_posicao_063_108' do
|
|
67
|
+
it "deve ter o tamanho de 46 digitos" do
|
|
68
|
+
subject.detalhe_posicao_063_108(pagamento).size.must_equal 46
|
|
69
|
+
end
|
|
70
|
+
it "deve conter as informações nas posições corretas" do
|
|
71
|
+
conta.carteira = 123
|
|
72
|
+
pagamento.assign_attributes(tipo_emissao: 2)
|
|
73
|
+
pagamento.assign_attributes(numero_documento: 763)
|
|
74
|
+
|
|
75
|
+
result = subject.detalhe_posicao_063_108(pagamento)
|
|
76
|
+
|
|
77
|
+
result[0..7].must_equal '00000763' # Numero documento
|
|
78
|
+
result[8..20].must_equal '0' * 13 # Zeros
|
|
79
|
+
result[21..23].must_equal '123' # Carteira
|
|
80
|
+
result[24..44].must_equal ' ' * 21 # Brancos
|
|
81
|
+
result[45].must_equal 'I' # Cod. Carteira
|
|
82
|
+
|
|
83
|
+
result.size.must_equal 46
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe '#informacoes_do_pagamento' do
|
|
88
|
+
it "deve ter o tamanho de 40 digitos" do
|
|
89
|
+
subject.informacoes_do_pagamento(pagamento, 1).size.must_equal 40
|
|
90
|
+
end
|
|
91
|
+
it "deve conter as informações nas posições corretas" do
|
|
92
|
+
conta.agencia = 4587
|
|
93
|
+
conta.agencia_dv = 45 # Vai retornar apenas o 4
|
|
94
|
+
pagamento.data_vencimento = Date.parse('05/08/2029')
|
|
95
|
+
pagamento.valor_documento = 47.56
|
|
96
|
+
pagamento.especie_titulo = "12"
|
|
97
|
+
pagamento.aceite = true
|
|
98
|
+
pagamento.data_emissao = Date.parse('15/09/2017')
|
|
99
|
+
result = subject.informacoes_do_pagamento(pagamento, 4)
|
|
100
|
+
result.size.must_equal 40
|
|
101
|
+
|
|
102
|
+
result[00..05].must_equal '050829' # "Data Vencimento: Formato DDMMAA Normal ""DDMMAA"" A vista = ""888888"" Contra Apresentação = ""999999"""
|
|
103
|
+
result[06..18].must_equal '0000000004756' # Valor do Titulo
|
|
104
|
+
result[19..21].must_equal '341' # Número Banco
|
|
105
|
+
result[22..26].must_equal "00000" # 000000 ou Agencia
|
|
106
|
+
result[27..28].must_equal "02" # Espécie do Título
|
|
107
|
+
result[ 29 ].must_equal "N" # dentificação (Sempre 'N')
|
|
108
|
+
result[30..35].must_equal '150917' # Data de Emissão do Título: formato ddmmaa
|
|
109
|
+
result[36..37].must_equal '00' # Primeira instrução codificada
|
|
110
|
+
result[38..39].must_equal '00' # Segunda instrução
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
describe '#detalhe_multas_e_juros_do_pagamento' do
|
|
115
|
+
it "deve ter o tamanho de 58 digitos" do
|
|
116
|
+
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
|
117
|
+
end
|
|
118
|
+
it "deve conter as informações nas posições corretas" do
|
|
119
|
+
pagamento.valor_mora = '0.39'
|
|
120
|
+
pagamento.valor_iof = '2.7'
|
|
121
|
+
pagamento.data_desconto = Date.parse('21/03/2018')
|
|
122
|
+
pagamento.valor_desconto = 4.3
|
|
123
|
+
pagamento.valor_abatimento = 56.47
|
|
124
|
+
|
|
125
|
+
result = subject.detalhe_multas_e_juros_do_pagamento(pagamento, 4)
|
|
126
|
+
result.size.must_equal 58
|
|
127
|
+
|
|
128
|
+
result[00..12].must_equal '0000000000039'
|
|
129
|
+
result[13..18].must_equal "210318"
|
|
130
|
+
result[19..31].must_equal '0000000000430'
|
|
131
|
+
result[32..44].must_equal '0000000000270'
|
|
132
|
+
result[45..57].must_equal '0000000005647'
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
describe '#informacoes_do_sacado' do
|
|
137
|
+
it "deve ter o tamanho de 176 digitos" do
|
|
138
|
+
subject.informacoes_do_sacado(pagamento, 2).size.must_equal 176
|
|
139
|
+
end
|
|
140
|
+
it "deve conter as informações nas posições corretas" do
|
|
141
|
+
# pagador.tipo_cpf_cnpj = '1'
|
|
142
|
+
pagador.cpf_cnpj = '12345678901'
|
|
143
|
+
pagador.nome = 'nome pagador'
|
|
144
|
+
pagador.endereco = 'rua do pagador'
|
|
145
|
+
pagador.bairro = 'bairro do pagador'
|
|
146
|
+
pagador.cidade = 'Chapecó'
|
|
147
|
+
pagador.uf = 'SC'
|
|
148
|
+
pagador.cep = '89885-001'
|
|
149
|
+
pagador.nome_avalista = 'Avalista'
|
|
150
|
+
pagador.documento_avalista = '840.106.990-43'
|
|
151
|
+
|
|
152
|
+
result = subject.informacoes_do_sacado(pagamento, 2)
|
|
153
|
+
result.size.must_equal 176
|
|
154
|
+
|
|
155
|
+
result[00..01].must_equal "01" # Tipo de Inscrição do Pagador: "01" = CPF / "02" = CNPJ
|
|
156
|
+
result[02..15].must_equal '00012345678901' # Número do CNPJ ou CPF do Pagador
|
|
157
|
+
result[16..55].must_equal 'nome pagador'.adjust_size_to(40) # Nome do Pagador
|
|
158
|
+
|
|
159
|
+
result[56..95].must_equal 'rua do pagador'.adjust_size_to(40) # Endereço do Pagador
|
|
160
|
+
result[96..107].must_equal 'bairro do pagador'.adjust_size_to(12) # Bairro do Pagador
|
|
161
|
+
result[108..115].must_equal '89885001' # CEP do Pagador
|
|
162
|
+
result[116..130].must_equal 'Chapecó'.adjust_size_to(15) # Cidade do Pagador
|
|
163
|
+
result[131..132].must_equal 'SC'.adjust_size_to(2) # UF do Pagador
|
|
164
|
+
|
|
165
|
+
result[133..162].must_equal 'Avalista'.adjust_size_to(30) # Nome Sacador/Avalista
|
|
166
|
+
|
|
167
|
+
result[163..166].must_equal ' ' # Complemento Registro (Brancos)
|
|
168
|
+
result[167..172].must_equal '000000' # Data de mora (Zeros)
|
|
169
|
+
result[173..174].must_equal '03' # Quantidade de dias (Zeros)
|
|
170
|
+
result[175].must_equal ' ' # Complemento Registro (Branco)
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
@@ -99,7 +99,7 @@ describe BrBoleto::Remessa::Cnab400::Sicoob do
|
|
|
99
99
|
conta.agencia_dv = 45 # Vai retornar apenas o 4
|
|
100
100
|
pagamento.data_vencimento = Date.parse('05/08/2029')
|
|
101
101
|
pagamento.valor_documento = 47.56
|
|
102
|
-
pagamento.especie_titulo = 12
|
|
102
|
+
pagamento.especie_titulo = "12"
|
|
103
103
|
pagamento.aceite = true
|
|
104
104
|
pagamento.data_emissao = Date.parse('15/09/2017')
|
|
105
105
|
result = subject.informacoes_do_pagamento(pagamento, 4)
|
|
@@ -110,7 +110,7 @@ describe BrBoleto::Remessa::Cnab400::Sicoob do
|
|
|
110
110
|
result[19..21].must_equal '756' # Número Banco: "756"
|
|
111
111
|
result[22..25].must_equal "4587" # Prefixo da Cooperativa: vide e-mail enviado com os dados do processo de homologação
|
|
112
112
|
result[ 26 ].must_equal "4" # Dígito Verificador do Prefixo: vide e-mail enviado com os dados do processo de homologação
|
|
113
|
-
result[27..28].must_equal "
|
|
113
|
+
result[27..28].must_equal "02" # Espécie do Título
|
|
114
114
|
result[ 29 ].must_equal "1" # "Aceite do Título: "0" = Sem aceite "1" = Com aceite"
|
|
115
115
|
result[30..35].must_equal '150917' # Data de Emissão do Título: formato ddmmaa
|
|
116
116
|
result[36..37].must_equal '00' # Primeira instrução codificada:
|