brcobranca 10.0.0 → 10.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -21
  3. data/README.md +5 -0
  4. data/lib/brcobranca/arquivos/templates/modelo_generico2.eps +9967 -0
  5. data/lib/brcobranca/boleto/banco_brasil.rb +5 -1
  6. data/lib/brcobranca/boleto/base.rb +2 -0
  7. data/lib/brcobranca/boleto/template/base.rb +4 -0
  8. data/lib/brcobranca/boleto/template/rghost2.rb +255 -0
  9. data/lib/brcobranca/boleto/template/rghost_bolepix.rb +279 -0
  10. data/lib/brcobranca/remessa/pagamento.rb +13 -11
  11. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +3 -0
  12. data/lib/brcobranca/retorno/cnab400/base.rb +1 -1
  13. data/lib/brcobranca/version.rb +1 -1
  14. data/lib/brcobranca.rb +2 -0
  15. metadata +8 -139
  16. data/spec/brcobranca/base_spec.rb +0 -179
  17. data/spec/brcobranca/boleto/ailos_spec.rb +0 -148
  18. data/spec/brcobranca/boleto/banco_brasil_spec.rb +0 -336
  19. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +0 -153
  20. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +0 -160
  21. data/spec/brcobranca/boleto/banestes_spec.rb +0 -193
  22. data/spec/brcobranca/boleto/banrisul_spec.rb +0 -180
  23. data/spec/brcobranca/boleto/bradesco_spec.rb +0 -214
  24. data/spec/brcobranca/boleto/caixa_spec.rb +0 -160
  25. data/spec/brcobranca/boleto/citibank_spec.rb +0 -195
  26. data/spec/brcobranca/boleto/credisis_spec.rb +0 -160
  27. data/spec/brcobranca/boleto/hsbc_spec.rb +0 -171
  28. data/spec/brcobranca/boleto/itau_spec.rb +0 -261
  29. data/spec/brcobranca/boleto/safra_spec.rb +0 -171
  30. data/spec/brcobranca/boleto/santander_spec.rb +0 -142
  31. data/spec/brcobranca/boleto/sicoob_spec.rb +0 -192
  32. data/spec/brcobranca/boleto/sicredi_spec.rb +0 -194
  33. data/spec/brcobranca/boleto/unicred_spec.rb +0 -139
  34. data/spec/brcobranca/boletos_em_lote_spec.rb +0 -38
  35. data/spec/brcobranca/calculo_data_spec.rb +0 -33
  36. data/spec/brcobranca/calculo_spec.rb +0 -187
  37. data/spec/brcobranca/currency_spec.rb +0 -79
  38. data/spec/brcobranca/formatacao_spec.rb +0 -46
  39. data/spec/brcobranca/formatacao_string_spec.rb +0 -31
  40. data/spec/brcobranca/limpeza_spec.rb +0 -10
  41. data/spec/brcobranca/remessa/base_spec.rb +0 -66
  42. data/spec/brcobranca/remessa/cnab240/ailos_spec.rb +0 -165
  43. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +0 -222
  44. data/spec/brcobranca/remessa/cnab240/base_spec.rb +0 -114
  45. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +0 -165
  46. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +0 -272
  47. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +0 -200
  48. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +0 -203
  49. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +0 -195
  50. data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +0 -190
  51. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +0 -188
  52. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +0 -192
  53. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +0 -192
  54. data/spec/brcobranca/remessa/cnab400/base_spec.rb +0 -68
  55. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +0 -203
  56. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +0 -128
  57. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +0 -190
  58. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +0 -192
  59. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +0 -154
  60. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +0 -217
  61. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +0 -186
  62. data/spec/brcobranca/remessa/pagamento_spec.rb +0 -228
  63. data/spec/brcobranca/retorno/cnab240/base_spec.rb +0 -24
  64. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +0 -52
  65. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +0 -52
  66. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +0 -52
  67. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +0 -33
  68. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +0 -37
  69. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +0 -40
  70. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +0 -42
  71. data/spec/brcobranca/retorno/cnab400/base_spec.rb +0 -57
  72. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +0 -59
  73. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +0 -26
  74. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +0 -60
  75. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +0 -40
  76. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +0 -38
  77. data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +0 -69
  78. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +0 -58
  79. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +0 -53
  80. data/spec/brcobranca/rghost_spec.rb +0 -29
  81. data/spec/brcobranca/util/empresa_spec.rb +0 -35
  82. data/spec/brcobranca_spec.rb +0 -33
@@ -1,222 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab240::BancoBrasil do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- nosso_numero: 123,
10
- documento: 6969,
11
- documento_sacado: '12345678901',
12
- nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO,!^.?\/@ DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
13
- endereco_sacado: 'RUA RIO GRANDE DO SUL,!^.?\/@ São paulo Minas caçapa da silva junior',
14
- bairro_sacado: 'São josé dos quatro apostolos magros',
15
- cep_sacado: '12345678',
16
- cidade_sacado: 'Santa rita de cássia maria da silva',
17
- uf_sacado: 'SP')
18
- end
19
- let(:params) do
20
- { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
21
- agencia: '1234',
22
- conta_corrente: '12345',
23
- documento_cedente: '12345678901',
24
- convenio: '1234567',
25
- carteira: '12',
26
- variacao: '123',
27
- pagamentos: [pagamento] }
28
- end
29
- let(:banco_brasil) { subject.class.new(params) }
30
-
31
- context 'validacoes' do
32
- context '@carteira' do
33
- it 'deve ser invalido se nao possuir a carteira' do
34
- objeto = subject.class.new(params.merge!(carteira: nil))
35
- expect(objeto.invalid?).to be true
36
- expect(objeto.errors.full_messages).to include('Carteira não pode estar em branco.')
37
- end
38
-
39
- it 'deve ser invalido se a carteira nao tiver 2 digitos' do
40
- banco_brasil.carteira = '123'
41
- expect(banco_brasil.invalid?).to be true
42
- expect(banco_brasil.errors.full_messages).to include('Carteira deve ter 2 dígitos.')
43
- end
44
- end
45
-
46
- context '@variacao' do
47
- it 'deve ser invalido se nao possuir a variacao da carteira' do
48
- objeto = subject.class.new(params.merge!(variacao: nil))
49
- expect(objeto.invalid?).to be true
50
- expect(objeto.errors.full_messages).to include('Variacao não pode estar em branco.')
51
- end
52
-
53
- it 'deve ser invalido se a variacao nao tiver 3 digitos' do
54
- banco_brasil.variacao = '1234'
55
- expect(banco_brasil.invalid?).to be true
56
- expect(banco_brasil.errors.full_messages).to include('Variacao deve ter 3 dígitos.')
57
- end
58
- end
59
-
60
- context '@convenio' do
61
- it 'deve ser invalido se nao possuir o convenio' do
62
- objeto = subject.class.new(params.merge!(convenio: nil))
63
- expect(objeto.invalid?).to be true
64
- expect(objeto.errors.full_messages).to include('Convenio não pode estar em branco.')
65
- end
66
-
67
- it 'deve ser invalido se o convenio nao tiver entre 4 e 7 digitos' do
68
- banco_brasil.convenio = '12345678'
69
- expect(banco_brasil.invalid?).to be true
70
- expect(banco_brasil.errors.full_messages).to include('Convenio deve ter de 4 a 7 dígitos.')
71
- end
72
- end
73
-
74
- context '@agencia' do
75
- it 'deve ser invalido se a agencia tiver mais de 5 digitos' do
76
- banco_brasil.agencia = '123456'
77
- expect(banco_brasil.invalid?).to be true
78
- expect(banco_brasil.errors.full_messages).to include('Agencia deve ter 5 dígitos.')
79
- end
80
- end
81
-
82
- context '@conta_corrente' do
83
- it 'deve ser invalido se a conta corrente tiver mais de 12 digitos' do
84
- banco_brasil.conta_corrente = '1234567890123'
85
- expect(banco_brasil.invalid?).to be true
86
- expect(banco_brasil.errors.full_messages).to include('Conta corrente deve ter 12 dígitos.')
87
- end
88
- end
89
- end
90
-
91
- context 'formatacoes' do
92
- it 'codigo do banco deve ser 001' do
93
- expect(banco_brasil.cod_banco).to eq '001'
94
- end
95
-
96
- it 'nome do banco deve ser Banco do Brasil com 30 posicoes' do
97
- nome_banco = banco_brasil.nome_banco
98
- expect(nome_banco.size).to eq 30
99
- expect(nome_banco[0..19]).to eq 'BANCO DO BRASIL S.A.'
100
- end
101
-
102
- it 'versao do layout do arquivo deve ser 083' do
103
- expect(banco_brasil.versao_layout_arquivo).to eq '083'
104
- end
105
-
106
- it 'versao do layout do lote deve ser 040' do
107
- expect(banco_brasil.versao_layout_lote).to eq '042'
108
- end
109
-
110
- it 'deve calcular o digito da agencia' do
111
- # digito calculado a partir do modulo 11 com base 9
112
- #
113
- # agencia = 1 2 3 4
114
- #
115
- # 4 3 2 1
116
- # x 9 8 7 6
117
- # = 36 24 14 6 = 80
118
- # 80 / 11 = 7 com resto 3
119
- expect(banco_brasil.digito_agencia).to eq '3'
120
- end
121
-
122
- it 'deve calcular digito da conta' do
123
- # digito calculado a partir do modulo 11 com base 9
124
- #
125
- # conta = 1 2 3 4 5
126
- #
127
- # 5 4 3 2 1
128
- # x 9 8 7 6 5
129
- # = 45 32 21 12 5 = 116
130
- # 116 / 11 = 10 com resto 5
131
- expect(banco_brasil.digito_conta).to eq '5'
132
- end
133
-
134
- it 'cod. convenio deve retornar as informacoes nas posicoes corretas' do
135
- cod_convenio = banco_brasil.codigo_convenio
136
- expect(cod_convenio[0..8]).to eq '001234567'
137
- expect(cod_convenio[13..14]).to eq '12'
138
- expect(cod_convenio[15..17]).to eq '123'
139
- end
140
-
141
- it 'info conta deve retornar as informacoes nas posicoes corretas' do
142
- info_conta = banco_brasil.info_conta
143
- expect(info_conta[0..4]).to eq '01234'
144
- expect(info_conta[5]).to eq '3'
145
- expect(info_conta[6..17]).to eq '000000012345'
146
- expect(info_conta[18]).to eq '5'
147
- end
148
-
149
- it 'complemento header deve retornar espacos em branco' do
150
- expect(banco_brasil.complemento_header).to eq ''.rjust(29, ' ')
151
- end
152
-
153
- it 'complemento trailer deve retornar espacos em branco' do
154
- expect(banco_brasil.complemento_trailer).to eq ''.rjust(217, '0')
155
- end
156
-
157
- context 'formatacao nosso numero' do
158
- it 'deve falhar se convenio nao for implementado' do
159
- banco_brasil.convenio = '12345'
160
- expect { banco_brasil.formata_nosso_numero(1) }.to raise_error(Brcobranca::NaoImplementado)
161
- end
162
-
163
- it 'formata o nosso numero quando o convenio tiver 4 posicoes' do
164
- banco_brasil.convenio = '1234'
165
- nosso_numero = banco_brasil.formata_nosso_numero 1
166
- # modulo 11 com base 9
167
- #
168
- # convenio + nosso numero (7 posicoes)
169
- # 12340000001
170
- #
171
- # 1 0 0 0 0 0 0 4 3 2 1
172
- # x 9 8 7 6 5 4 3 2 9 8 7
173
- # = 9 0 0 0 0 0 0 8 27 16 7 = 67
174
- # 67 / 11 = 66 com resto 1
175
- expect(nosso_numero).to eq '00000011'
176
- end
177
-
178
- it 'formata o nosso numero quando o convenio tiver 6 posicoes' do
179
- banco_brasil.convenio = '123456'
180
- nosso_numero = banco_brasil.formata_nosso_numero 1
181
- # modulo 11 com base 9
182
- #
183
- # convenio + nosso numero (5 posicoes)
184
- # 12345600001
185
- #
186
- # 1 0 0 0 0 5 4 3 2 1
187
- # x 9 8 7 6 5 4 3 2 9 8
188
- # = 9 0 0 0 0 20 12 6 18 8 = 73
189
- # 73 / 11 = 66 com resto 7
190
- expect(nosso_numero).to eq '000017'
191
- end
192
-
193
- it 'formata o nosso numero quando o convenio tiver 7 posicoes' do
194
- banco_brasil.convenio = '1234567'
195
- # quando o nosso numero tiver 10 posicoes (convenio de 7 posicoes)
196
- # nao tera digito verificador
197
- expect(banco_brasil.formata_nosso_numero(1)).to eq '0000000001'
198
- end
199
- end
200
-
201
- it 'identificador do titulo deve ter as informacoes nas posicoes corretas' do
202
- identificador = banco_brasil.identificador_titulo 123
203
- expect(identificador[0..6]).to eq '1234567'
204
- expect(identificador[7..16]).to eq '0000000123'
205
- end
206
- end
207
-
208
- context 'geracao remessa' do
209
- it_behaves_like 'cnab240'
210
-
211
- context 'arquivo' do
212
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
213
-
214
- after { Timecop.return }
215
-
216
- it {
217
- expect(banco_brasil.gera_arquivo).to eq(read_remessa('remessa-banco_brasil-cnab240.rem',
218
- banco_brasil.gera_arquivo))
219
- }
220
- end
221
- end
222
- end
@@ -1,114 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab240::Base do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- nosso_numero: 123,
10
- documento_sacado: '12345678901',
11
- nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO,!^.?\/@ DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
12
- endereco_sacado: 'RUA RIO GRANDE DO SUL,!^.?\/@ São paulo Minas caçapa da silva junior',
13
- bairro_sacado: 'São josé dos quatro apostolos magros',
14
- cep_sacado: '12345678',
15
- cidade_sacado: 'Santa rita de cássia maria da silva',
16
- uf_sacado: 'SP')
17
- end
18
- let(:params) do
19
- { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
20
- agencia: '123',
21
- conta_corrente: '1234',
22
- documento_cedente: '12345678901',
23
- convenio: '123',
24
- pagamentos: [pagamento] }
25
- end
26
- let(:cnab240) { subject.class.new(params) }
27
-
28
- context 'validacoes' do
29
- context '@agencia' do
30
- it 'deve ser invalido se nao possuir uma agencia' do
31
- objeto = subject.class.new(params.merge!(agencia: nil))
32
- expect(objeto.invalid?).to be true
33
- expect(objeto.errors.full_messages).to include('Agencia não pode estar em branco.')
34
- end
35
- end
36
-
37
- context '@conta_corrente' do
38
- it 'deve ser invalido se nao possuir uma conta corrente' do
39
- objeto = subject.class.new(params.merge!(conta_corrente: nil))
40
- expect(objeto.invalid?).to be true
41
- expect(objeto.errors.full_messages).to include('Conta corrente não pode estar em branco.')
42
- end
43
- end
44
-
45
- context '@documento_cedente' do
46
- it 'deve ser invalido se nao possuir o documento do cedente' do
47
- objeto = subject.class.new(params.merge!(documento_cedente: nil))
48
- expect(objeto.invalid?).to be true
49
- expect(objeto.errors.full_messages).to include('Documento cedente não pode estar em branco.')
50
- end
51
- end
52
-
53
- context '@codigo_carteira' do
54
- it 'valor padrao deve ser 1 (cobranca simples)' do
55
- expect(cnab240.codigo_carteira).to eq '1'
56
- end
57
-
58
- it 'deve ser invalido se codigo da carteira nao tiver 1 digito' do
59
- cnab240.codigo_carteira = '12'
60
- expect(cnab240.invalid?).to be true
61
- expect(cnab240.errors.full_messages).to include('Codigo carteira deve ter 1 dígito.')
62
- end
63
- end
64
-
65
- context '@forma_cadastramento' do
66
- it 'valor padrao deve ser 1 (cobranca registrada)' do
67
- expect(cnab240.forma_cadastramento).to eq '1'
68
- end
69
-
70
- it 'deve ser invalido se a forma de cadastramento nao tiver 1 digito' do
71
- cnab240.forma_cadastramento = '12'
72
- expect(cnab240.invalid?).to be true
73
- expect(cnab240.errors.full_messages).to include('Forma cadastramento deve ter 1 dígito.')
74
- end
75
- end
76
- end
77
-
78
- context 'sobrescrita dos metodos' do
79
- it 'mostrar aviso sobre sobrecarga de métodos padrões' do
80
- expect do
81
- cnab240.complemento_header
82
- end.to raise_error(Brcobranca::NaoImplementado,
83
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
84
- expect do
85
- cnab240.versao_layout_arquivo
86
- end.to raise_error(Brcobranca::NaoImplementado,
87
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
88
- expect do
89
- cnab240.versao_layout_lote
90
- end.to raise_error(Brcobranca::NaoImplementado,
91
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
92
- expect do
93
- cnab240.convenio_lote
94
- end.to raise_error(Brcobranca::NaoImplementado,
95
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
96
- expect do
97
- cnab240.nome_banco
98
- end.to raise_error(Brcobranca::NaoImplementado,
99
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
100
- expect do
101
- cnab240.cod_banco
102
- end.to raise_error(Brcobranca::NaoImplementado,
103
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
104
- expect do
105
- cnab240.info_conta
106
- end.to raise_error(Brcobranca::NaoImplementado,
107
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
108
- expect do
109
- cnab240.codigo_convenio
110
- end.to raise_error(Brcobranca::NaoImplementado,
111
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
112
- end
113
- end
114
- end
@@ -1,165 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab240::Caixa do
6
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
7
-
8
- after { Timecop.return }
9
-
10
- let(:pagamento) do
11
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
12
- data_vencimento: Date.current,
13
- nosso_numero: 123,
14
- numero: 123,
15
- documento: 6969,
16
- documento_sacado: '12345678901',
17
- nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO,!^.?\/@ DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
18
- endereco_sacado: 'RUA RIO GRANDE DO SUL,!^.?\/@ São paulo Minas caçapa da silva junior',
19
- bairro_sacado: 'São josé dos quatro apostolos magros',
20
- cep_sacado: '12345678',
21
- cidade_sacado: 'Santa rita de cássia maria da silva',
22
- tipo_mora: '1',
23
- codigo_multa: '2',
24
- uf_sacado: 'SP')
25
- end
26
- let(:params) do
27
- { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
28
- agencia: '12345',
29
- conta_corrente: '1234',
30
- versao_aplicativo: '1234',
31
- documento_cedente: '12345678901',
32
- convenio: '123456',
33
- digito_agencia: '1',
34
- sequencial_remessa: '000001',
35
- pagamentos: [pagamento] }
36
- end
37
- let(:caixa) { subject.class.new(params) }
38
-
39
- context 'validacoes' do
40
- context '@digito_agencia' do
41
- it 'deve ser invalido se nao possuir o digito da agencia' do
42
- objeto = subject.class.new(params.merge!(digito_agencia: nil))
43
- expect(objeto.invalid?).to be true
44
- expect(objeto.errors.full_messages).to include('Digito agencia não pode estar em branco.')
45
- end
46
-
47
- it 'deve ser invalido se o digito da agencia nao tiver 1 digito' do
48
- caixa.digito_agencia = '12'
49
- expect(caixa.invalid?).to be true
50
- expect(caixa.errors.full_messages).to include('Digito agencia deve ter 1 dígito.')
51
- end
52
- end
53
-
54
- context '@convenio' do
55
- it 'deve ser invalido se nao possuir o convenio' do
56
- objeto = subject.class.new(params.merge!(convenio: nil))
57
- expect(objeto.invalid?).to be true
58
- expect(objeto.errors.full_messages).to include('Convenio não pode estar em branco.')
59
- end
60
-
61
- it 'deve ser invalido se o convenio tiver mais de 6 digitos' do
62
- caixa.convenio = '1234567'
63
- expect(caixa.invalid?).to be true
64
- expect(caixa.errors.full_messages).to include('Convenio deve ter 6 dígitos.')
65
- end
66
- end
67
-
68
- context '@modalidade_carteira' do
69
- it 'padrao da modalidade deve ser 14' do
70
- expect(subject.class.new.modalidade_carteira).to eq '14'
71
- end
72
-
73
- it 'deve ser invalido se a modalidade de carteira tiver mais de 2 digitos' do
74
- caixa.modalidade_carteira = '123'
75
- expect(caixa.invalid?).to be true
76
- expect(caixa.errors.full_messages).to include('Modalidade carteira deve ter 2 dígitos.')
77
- end
78
- end
79
- end
80
-
81
- context 'formatacao' do
82
- it 'codigo do banco deve retornar 104' do
83
- expect(caixa.cod_banco).to eq '104'
84
- end
85
-
86
- it 'nome do banco deve ser Caixa com 30 posicoes' do
87
- nome_banco = caixa.nome_banco
88
- expect(nome_banco.size).to eq 30
89
- expect(nome_banco[0..22]).to eq 'CAIXA ECONOMICA FEDERAL'
90
- end
91
-
92
- it 'versao do layout do arquivo deve retornar 050' do
93
- expect(caixa.versao_layout_arquivo).to eq '050'
94
- end
95
-
96
- it 'versao do layout do lote deve ser 040' do
97
- expect(caixa.versao_layout_lote).to eq '030'
98
- end
99
-
100
- it 'codigo do convenio deve ser 20 zeros' do
101
- expect(caixa.codigo_convenio).to eq ''.rjust(20, '0')
102
- end
103
-
104
- it 'convenio lote deve retornar as informacoes nas posicoes corretas' do
105
- conv_lote = caixa.convenio_lote
106
- expect(conv_lote[0..5]).to eq '123456'
107
- expect(conv_lote[6..19]).to eq ''.rjust(14, '0')
108
- end
109
-
110
- it 'info_conta deve retornar as informacoes nas posicoes corretas' do
111
- info_conta = caixa.info_conta
112
- expect(info_conta[0..4]).to eq '12345' # agencia
113
- expect(info_conta[5]).to eq '1' # digito agencia
114
- expect(info_conta[6..11]).to eq '123456' # convenio
115
- end
116
-
117
- it 'complemento header deve retornar as informacoes nas posicoes corretas' do
118
- comp_header = caixa.complemento_header
119
- expect(comp_header.size).to eq 29
120
- expect(comp_header[0..3]).to eq '1234' # versao do aplicativo
121
- end
122
-
123
- it 'complemento trailer deve retornar as informacoes nas posicoes corretas' do
124
- comp_trailer = caixa.complemento_trailer
125
- expect(comp_trailer.size).to eq 217
126
- expect(comp_trailer[0..68]).to eq ''.rjust(69, '0')
127
- expect(comp_trailer[69..216]).to eq ''.rjust(148, ' ')
128
- end
129
-
130
- it 'complemento P deve retornar as informacoes nas posicoes corretas' do
131
- comp_p = caixa.complemento_p pagamento
132
- expect(comp_p.size).to eq 34
133
- expect(comp_p[0..5]).to eq '123456' # convenio
134
- expect(comp_p[17..18]).to eq '14' # modalidade carteira
135
- expect(comp_p[19..33]).to eq '000000000000123' # nosso numero
136
- end
137
-
138
- it 'tipo do documento deve ser 2 - Escritural' do
139
- expect(caixa.tipo_documento).to eq '2'
140
- end
141
-
142
- it 'deve conter a identificacao do titulo da empresa' do
143
- segmento_p = caixa.monta_segmento_p(pagamento, 1, 2)
144
- expect(segmento_p[195..205]).to eq '00000006969'
145
- end
146
-
147
- it 'data da mora deve ser no dia posterior ao vencimento' do
148
- segmento_p = caixa.monta_segmento_p(pagamento, 1, 2)
149
- expect(segmento_p[118..125]).to eq '15072015'
150
- end
151
-
152
- it 'data da multa deve ser no dia posterior ao vencimento' do
153
- segmento_r = caixa.monta_segmento_r(pagamento, 1, 4)
154
- expect(segmento_r[66..73]).to eq '15072015'
155
- end
156
- end
157
-
158
- context 'geracao remessa' do
159
- it_behaves_like 'cnab240'
160
-
161
- context 'arquivo' do
162
- it { expect(caixa.gera_arquivo).to eq(read_remessa('remessa-caixa-cnab240.rem', caixa.gera_arquivo)) }
163
- end
164
- end
165
- end