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,217 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab400::Sicoob 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
- { carteira: '01',
20
- agencia: '4327',
21
- conta_corrente: '12345678',
22
- digito_conta: '1',
23
- convenio: '123456789',
24
- empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
25
- documento_cedente: '12345678910',
26
- pagamentos: [pagamento] }
27
- end
28
- let(:sicoob) { subject.class.new(params) }
29
-
30
- context 'validacoes dos campos' do
31
- context '@agencia' do
32
- it 'deve ser invalido se nao possuir uma agencia' do
33
- objeto = subject.class.new(params.merge!(agencia: nil))
34
- expect(objeto.invalid?).to be true
35
- expect(objeto.errors.full_messages).to include('Agencia não pode estar em branco.')
36
- end
37
-
38
- it 'deve ser invalido se a agencia tiver mais de 4 digitos' do
39
- sicoob.agencia = '12345'
40
- expect(sicoob.invalid?).to be true
41
- expect(sicoob.errors.full_messages).to include('Agencia deve ter 4 dígitos.')
42
- end
43
- end
44
-
45
- context '@digito_conta' do
46
- it 'deve ser invalido se nao possuir um digito da conta corrente' do
47
- objeto = subject.class.new(params.merge!(digito_conta: nil))
48
- expect(objeto.invalid?).to be true
49
- expect(objeto.errors.full_messages).to include('Digito conta não pode estar em branco.')
50
- end
51
-
52
- it 'deve ser invalido se a carteira tiver mais de 1 digito' do
53
- sicoob.digito_conta = '12'
54
- expect(sicoob.invalid?).to be true
55
- expect(sicoob.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
56
- end
57
- end
58
-
59
- context '@conta_corrente' do
60
- it 'deve ser invalido se nao possuir uma conta corrente' do
61
- objeto = subject.class.new(params.merge!(conta_corrente: nil))
62
- expect(objeto.invalid?).to be true
63
- expect(objeto.errors.full_messages).to include('Conta corrente não pode estar em branco.')
64
- end
65
-
66
- it 'deve ser invalido se a conta corrente tiver mais de 8 digitos' do
67
- sicoob.conta_corrente = '123456789'
68
- expect(sicoob.invalid?).to be true
69
- expect(sicoob.errors.full_messages).to include('Conta corrente deve ter 8 dígitos.')
70
- end
71
- end
72
-
73
- context '@carteira' do
74
- it 'deve ser invalido se nao possuir uma carteira' do
75
- objeto = subject.class.new(params.merge!(carteira: nil))
76
- expect(objeto.invalid?).to be true
77
- expect(objeto.errors.full_messages).to include('Carteira não pode estar em branco.')
78
- end
79
-
80
- it 'deve ser invalido se a carteira tiver mais de 2 digitos' do
81
- sicoob.carteira = '123'
82
- expect(sicoob.invalid?).to be true
83
- expect(sicoob.errors.full_messages).to include('Carteira deve ter 2 dígitos.')
84
- end
85
- end
86
-
87
- context '@sequencial_remessa' do
88
- it 'deve ser invalido se nao possuir um num. sequencial de remessa' do
89
- objeto = subject.class.new(params.merge!(sequencial_remessa: nil))
90
- expect(objeto.invalid?).to be true
91
- expect(objeto.errors.full_messages).to include('Sequencial remessa não pode estar em branco.')
92
- end
93
-
94
- it 'deve ser invalido se sequencial de remessa tiver mais de 8 digitos' do
95
- sicoob.sequencial_remessa = '12345678'
96
- expect(sicoob.invalid?).to be true
97
- expect(sicoob.errors.full_messages).to include('Sequencial remessa deve ter 7 dígitos.')
98
- end
99
- end
100
-
101
- context '@convenio' do
102
- it 'deve ser invalido se nao possuir um convenio' do
103
- objeto = subject.class.new(params.merge!(convenio: nil))
104
- expect(objeto.invalid?).to be true
105
- expect(objeto.errors.full_messages).to include('Convenio não pode estar em branco.')
106
- end
107
-
108
- it 'deve ser invalido se convenio tiver mais de 9 digitos' do
109
- sicoob.convenio = '1234567890'
110
- expect(sicoob.invalid?).to be true
111
- expect(sicoob.errors.full_messages).to include('Convenio deve ter 9 dígitos.')
112
- end
113
- end
114
- end
115
-
116
- context 'formatacoes dos valores' do
117
- it 'cod_banco deve ser 756' do
118
- expect(sicoob.cod_banco).to eq '756'
119
- end
120
-
121
- it 'nome_banco deve ser SICOOB com 15 posicoes' do
122
- nome_banco = sicoob.nome_banco
123
- expect(nome_banco.size).to eq 15
124
- expect(nome_banco.strip).to eq 'BANCOOBCED'
125
- end
126
-
127
- it 'complemento deve ter 287 brancos' do
128
- complemento = sicoob.complemento
129
- expect(complemento.size).to eq 287
130
- end
131
-
132
- it 'info_conta deve ter 20 posicoes' do
133
- expect(sicoob.info_conta.size).to eq 20
134
- end
135
-
136
- it 'identificacao da empresa deve ter as informacoes nas posicoes corretas' do
137
- id_empresa = sicoob.info_conta
138
- expect(id_empresa[0..3]).to eq '4327' # agencia
139
- expect(id_empresa[4]).to eq '3' # digito_agencia
140
- expect(id_empresa[5..13]).to eq '123456789' # convenio
141
- expect(id_empresa[14..19]).to eq ' ' # brancos
142
- end
143
-
144
- it 'deve calcular o digito da agencia' do
145
- # digito calculado a partir do modulo 11 com base 9
146
- #
147
- # agencia = 1 2 3 4
148
- #
149
- # 4 3 2 1
150
- # x 9 8 7 6
151
- # = 36 24 14 6 = 80
152
- # 80 / 11 = 7 com resto 3
153
- expected_digito_agencia_list = [
154
- { agencia: '3214', dv: '0' },
155
- { agencia: '2006', dv: '0' },
156
- { agencia: '5651', dv: '0' },
157
- { agencia: '5691', dv: '0' },
158
- { agencia: '5741', dv: '0' },
159
- { agencia: '1008', dv: '1' },
160
- { agencia: '5681', dv: '2' },
161
- { agencia: '5731', dv: '2' },
162
- { agencia: '4327', dv: '3' },
163
- { agencia: '1001', dv: '4' },
164
- { agencia: '5761', dv: '4' },
165
- { agencia: '3032', dv: '5' },
166
- { agencia: '5671', dv: '5' },
167
- { agencia: '5631', dv: '6' },
168
- { agencia: '1005', dv: '7' },
169
- { agencia: '5661', dv: '8' },
170
- { agencia: '0001', dv: '9' },
171
- { agencia: '5621', dv: '9' }
172
- ]
173
-
174
- expected_digito_agencia_list.each do |expected_dv_agencia|
175
- remessa_params = params.merge!(agencia: expected_dv_agencia[:agencia])
176
- remessa = subject.class.new(remessa_params)
177
- expect(remessa.digito_agencia).to eq expected_dv_agencia[:dv]
178
- end
179
- end
180
- end
181
-
182
- context 'monta remessa' do
183
- it_behaves_like 'cnab400'
184
-
185
- context 'header' do
186
- it 'informacoes devem estar posicionadas corretamente no header' do
187
- header = sicoob.monta_header
188
- expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
189
- expect(header[2..8]).to eq 'REMESSA' # literal da operacao
190
- expect(header[26..45]).to eq sicoob.info_conta # informacoes da conta
191
- expect(header[76..78]).to eq '756' # codigo do banco
192
- end
193
- end
194
-
195
- context 'detalhe' do
196
- it 'informacoes devem estar posicionadas corretamente no detalhe' do
197
- detalhe = sicoob.monta_detalhe pagamento, 1
198
- expect(detalhe[62..72]).to eq '00000000012' # nosso numero
199
- expect(detalhe[73]).to eq '3' # digito nosso numero
200
- expect(detalhe[74..75]).to eq '01' # parcela
201
- expect(detalhe[120..125]).to eq Date.current.strftime('%d%m%y') # data de vencimento
202
- expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
203
- expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
204
- expect(detalhe[234..273]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA JUAN' # nome do pagador
205
- expect(detalhe[274..310]).to eq 'RUA RIO GRANDE DO SUL Sao paulo Minas' # endereco do pagador
206
- end
207
- end
208
-
209
- context 'arquivo' do
210
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
211
-
212
- after { Timecop.return }
213
-
214
- it { expect(sicoob.gera_arquivo).to eq(read_remessa('remessa-sicoob-cnab400.rem', sicoob.gera_arquivo)) }
215
- end
216
- end
217
- end
@@ -1,186 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab400::Unicred do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- nosso_numero: '72000031',
10
- documento: '1/01',
11
- documento_sacado: '12345678901',
12
- nome_sacado: 'AKRETION LTDA',
13
- endereco_sacado: 'AVENIDA PAULISTA 1',
14
- bairro_sacado: 'CENTRO',
15
- cep_sacado: '12345678',
16
- cidade_sacado: 'SAO PAULO',
17
- uf_sacado: 'SP')
18
- end
19
- let(:params) do
20
- {
21
- carteira: '21',
22
- agencia: '1234',
23
- conta_corrente: '12345',
24
- digito_conta: '1',
25
- empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
26
- documento_cedente: '12345678910',
27
- codigo_beneficiario: '1234567890',
28
- pagamentos: [pagamento]
29
- }
30
- end
31
- let(:unicred) { subject.class.new(params) }
32
-
33
- # context 'validacoes dos campos' do
34
- # context '@agencia' do
35
- # it 'deve ser invalido se nao possuir uma agencia' do
36
- # object = subject.class.new(params.merge!(agencia: nil))
37
- # expect(object.invalid?).to be true
38
- # expect(object.errors.full_messages).to include('Agencia não pode estar em branco.')
39
- # end
40
-
41
- # it 'deve ser invalido se a agencia tiver mais de 4 digitos' do
42
- # unicred.agencia = '12345'
43
- # expect(unicred.invalid?).to be true
44
- # expect(unicred.errors.full_messages).to include('Agencia deve ter 4 dígitos.')
45
- # end
46
- # end
47
-
48
- # context '@digito_conta' do
49
- # it 'deve ser invalido se nao possuir um digito da conta corrente' do
50
- # objeto = subject.class.new(params.merge!(digito_conta: nil))
51
- # expect(objeto.invalid?).to be true
52
- # expect(objeto.errors.full_messages).to include('Digito conta não pode estar em branco.')
53
- # end
54
-
55
- # it 'deve ser inválido se o dígito da conta tiver mais de 1 dígito' do
56
- # unicred.digito_conta = '12'
57
- # expect(unicred.invalid?).to be true
58
- # expect(unicred.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
59
- # end
60
- # end
61
-
62
- # context '@conta_corrente' do
63
- # it 'deve ser invalido se nao possuir uma conta corrente' do
64
- # object = subject.class.new(params.merge!(conta_corrente: nil))
65
- # expect(object.invalid?).to be true
66
- # expect(object.errors.full_messages).to include('Conta corrente não pode estar em branco.')
67
- # end
68
-
69
- # it 'deve ser invalido se a conta corrente tiver mais de 5 digitos' do
70
- # unicred.conta_corrente = '123456'
71
-
72
- # expect(unicred.invalid?).to be true
73
- # expect(unicred.errors.full_messages).to include('Conta corrente deve ter 5 dígitos.')
74
- # end
75
- # end
76
-
77
- # context '@carteira' do
78
- # it 'deve ser inválido se não possuir uma carteira' do
79
- # object = subject.class.new(params.merge!(carteira: nil))
80
- # expect(object.invalid?).to be true
81
- # expect(object.errors.full_messages).to include('Carteira não pode estar em branco.')
82
- # end
83
-
84
- # it 'deve ser inválido se a carteira tiver mais de 2 dígitos' do
85
- # unicred.carteira = '123'
86
- # expect(unicred.invalid?).to be true
87
- # expect(unicred.errors.full_messages).to include('Carteira deve ter 2 dígitos.')
88
- # end
89
- # end
90
-
91
- # context '@documento_cedente' do
92
- # it 'deve ser inválido se não possuir o documento cedente' do
93
- # object = subject.class.new(params.merge!(documento_cedente: nil))
94
- # expect(object.invalid?).to be true
95
- # expect(object.errors.full_messages).to include('Documento cedente não pode estar em branco.')
96
- # end
97
-
98
- # it 'deve ser invalido se o documento do cedente nao tiver entre 11 e 14 digitos' do
99
- # unicred.documento_cedente = '123'
100
- # expect(unicred.invalid?).to be true
101
- # expect(unicred.errors.full_messages).to include('Documento cedente deve ter entre 11 e 14 dígitos.')
102
- # end
103
- # end
104
-
105
- # context '@codigo_beneficiario' do
106
- # it 'deve ser inválido se não existir' do
107
- # object = subject.class.new(params.merge!(codigo_beneficiario: nil))
108
- # expect(object.invalid?).to be true
109
- # expect(object.errors.full_messages).to include('Codigo beneficiario não pode estar em branco.')
110
- # end
111
-
112
- # it 'deve ser inválido quando maior que 10 dígitos' do
113
- # object = subject.class.new(params.merge!(codigo_beneficiario: '12345678901'))
114
- # expect(object.invalid?).to be true
115
- # expect(object.errors.full_messages).to include('Codigo Beneficiario não deve ter mais que 10 dígitos.')
116
- # end
117
- # end
118
- # end
119
-
120
- # context 'formatacoes dos valores' do
121
- # it 'cod_banco deve ser 136' do
122
- # expect(unicred.cod_banco).to eq '136'
123
- # end
124
-
125
- # it 'nome_banco deve ser UNICRED com 15 posicoes' do
126
- # nome_banco = unicred.nome_banco
127
- # expect(nome_banco.size).to eq 15
128
- # expect(nome_banco.strip).to eq 'UNICRED'
129
- # end
130
-
131
- # it 'complemento deve retornar 277 caracteres' do
132
- # expect(unicred.complemento.size).to eq 277
133
- # end
134
-
135
- # it 'info_conta deve retornar com 10 posicoes as informacoes da conta' do
136
- # info_conta = unicred.info_conta
137
- # expect(info_conta.size).to eq 20
138
- # expect(info_conta[0..19]).to eq '00000000001234567890'
139
- # end
140
-
141
- # it 'deve retornar o codigo da carteira de acordo com o tipo de emissão' do
142
- # unicred.carteira = '21'
143
- # expect(unicred.carteira).to eq '21'
144
-
145
- # unicred.carteira = '09'
146
- # expect(unicred.invalid?).to be true
147
- # expect(unicred.errors.full_messages).to include('Carteira não existente para este banco.')
148
- # end
149
- # end
150
-
151
- # context 'monta remessa' do
152
- # it_behaves_like 'cnab400'
153
-
154
- # context 'header' do
155
- # it 'informacoes devem estar posicionadas corretamente no header' do
156
- # header = unicred.monta_header
157
- # expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
158
- # expect(header[2..8]).to eq 'REMESSA' # literal da operacao
159
- # expect(header[26..45]).to eq unicred.info_conta # informacoes da conta
160
- # expect(header[76..78]).to eq '136' # codigo do banco
161
- # end
162
- # end
163
-
164
- # context 'detalhe' do
165
- # it 'informacoes devem estar posicionadas corretamente no detalhe' do
166
- # detalhe = unicred.monta_detalhe pagamento, 1
167
- # expect(detalhe[2..5]).to eq '1234' # Agencia
168
- # expect(detalhe[108..109]).to eq '01' # Instrução
169
- # expect(detalhe[110..119]).to eq '0000001/01' # documento
170
- # expect(detalhe[120..125]).to eq Date.current.strftime('%d%m%y') # data de vencimento
171
- # expect(detalhe[126..138]).to eq '0000000019990' # valor do titulo
172
- # expect(detalhe[192..202]).to eq '72000031'.rjust(10, ' ') # nosso numero
173
- # expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
174
- # expect(detalhe[234..263]).to eq 'AKRETION LTDA' # nome do pagador
175
- # end
176
- # end
177
-
178
- # context 'arquivo' do
179
- # before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
180
-
181
- # after { Timecop.return }
182
-
183
- # it { expect(unicred.gera_arquivo).to eq(read_remessa('remessa-unicred-cnab400.rem', unicred.gera_arquivo)) }
184
- # end
185
- # end
186
- end
@@ -1,228 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Pagamento do
6
- let(:pagamento) do
7
- subject.class.new(valor: 199.9,
8
- data_vencimento: Date.parse('2015-06-25'),
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
-
19
- context 'validacoes' do
20
- it 'deve ser invalido se nao possuir nosso numero' do
21
- pagamento.nosso_numero = nil
22
- expect(pagamento.invalid?).to be true
23
- expect(pagamento.errors.full_messages).to include('Nosso numero não pode estar em branco.')
24
- end
25
-
26
- it 'deve ser invalido se nao possuir data de vencimento' do
27
- pagamento.data_vencimento = nil
28
- expect(pagamento.invalid?).to be true
29
- expect(pagamento.errors.full_messages).to include('Data vencimento não pode estar em branco.')
30
- end
31
-
32
- it 'deve ser invalido se nao possuir valor do documento' do
33
- pagamento.valor = nil
34
- expect(pagamento.invalid?).to be true
35
- expect(pagamento.errors.full_messages).to include('Valor não pode estar em branco.')
36
- end
37
-
38
- it 'deve ser invalido se nao possuir documento do sacado' do
39
- pagamento.documento_sacado = nil
40
- expect(pagamento.invalid?).to be true
41
- expect(pagamento.errors.full_messages).to include('Documento sacado não pode estar em branco.')
42
- end
43
-
44
- it 'deve ser invalido se nao possuir nome do sacado' do
45
- pagamento.nome_sacado = nil
46
- expect(pagamento.invalid?).to be true
47
- expect(pagamento.errors.full_messages).to include('Nome sacado não pode estar em branco.')
48
- end
49
-
50
- it 'deve ser invalido se nao possuir endereco do sacado' do
51
- pagamento.endereco_sacado = nil
52
- expect(pagamento.invalid?).to be true
53
- expect(pagamento.errors.full_messages).to include('Endereco sacado não pode estar em branco.')
54
- end
55
-
56
- it 'deve ser invalido se nao possuir cidade do sacado' do
57
- pagamento.cidade_sacado = nil
58
- expect(pagamento.invalid?).to be true
59
- expect(pagamento.errors.full_messages).to include('Cidade sacado não pode estar em branco.')
60
- end
61
-
62
- it 'deve ser invalido se nao possuir UF do sacado' do
63
- pagamento.uf_sacado = nil
64
- expect(pagamento.invalid?).to be true
65
- expect(pagamento.errors.full_messages).to include('Uf sacado não pode estar em branco.')
66
- end
67
-
68
- context '@cep' do
69
- it 'deve ser invalido se nao possuir CEP' do
70
- pagamento.cep_sacado = nil
71
- expect(pagamento.invalid?).to be true
72
- expect(pagamento.errors.full_messages).to include('Cep sacado não pode estar em branco.')
73
- end
74
-
75
- it 'deve ser invalido se CEP nao tiver 8 digitos' do
76
- pagamento.cep_sacado = '123456789'
77
- expect(pagamento.invalid?).to be true
78
- expect(pagamento.errors.full_messages).to include('Cep sacado deve ter 8 dígitos.')
79
- end
80
- end
81
-
82
- it 'deve ser invalido se codigo do desconto tiver mais de 1 digito' do
83
- pagamento.cod_desconto = '123'
84
- expect(pagamento.invalid?).to be true
85
- expect(pagamento.errors.full_messages).to include('Cod desconto deve ter 1 dígito.')
86
- end
87
- end
88
-
89
- context 'informacoes padrao' do
90
- it 'data de emissao padrao deve ser o dia corrente' do
91
- expect(pagamento.data_emissao).to eq Date.current
92
- end
93
-
94
- it 'nome do avalista padrao deve ser vazio' do
95
- expect(pagamento.nome_avalista).to eq ''
96
- end
97
-
98
- it 'valor da mora padrao deve ser zero' do
99
- expect(pagamento.valor_mora).to eq 0.0
100
- end
101
-
102
- it 'valor do desconto padrao deve ser zero' do
103
- expect(pagamento.valor_desconto).to eq 0.0
104
- end
105
-
106
- it 'valor do IOF padrao deve ser zero' do
107
- expect(pagamento.valor_iof).to eq 0.0
108
- end
109
-
110
- it 'valor do abatimento padrao deve ser zero' do
111
- expect(pagamento.valor_abatimento).to eq 0.0
112
- end
113
- end
114
-
115
- context 'formatacoes dos valores' do
116
- context 'formata data do desconto' do
117
- it 'formata data limite do desconto de acordo com o formato passado' do
118
- pagamento.data_desconto = Date.parse('2015-06-25')
119
- # formato padrao: DDMMAA
120
- expect(pagamento.formata_data_desconto).to eq '250615'
121
- # outro formato
122
- expect(pagamento.formata_data_desconto('%d%m%Y')).to eq '25062015'
123
- end
124
-
125
- it 'retorna zeros se a data estiver vazia' do
126
- pagamento.data_desconto = nil
127
- expect(pagamento.formata_data_desconto).to eq '000000'
128
- end
129
- end
130
-
131
- it 'formata valor com o numero de posicoes passadas' do
132
- # padrao com 13 posicoes
133
- expect(pagamento.formata_valor).to eq '0000000019990'
134
- # formata com o numero passado
135
- expect(pagamento.formata_valor(8)).to eq '00019990'
136
- end
137
-
138
- it 'formata valor de mora com o numero de posicoes passadas' do
139
- # padrao com 13 posicoes
140
- pagamento.valor_mora = 9.0
141
- expect(pagamento.formata_valor_mora).to eq '0000000000900'
142
- end
143
-
144
- it 'formata valor de desconto com o numero de posicoes passadas' do
145
- # padrao com 13 posicoes
146
- pagamento.valor_desconto = 129.0
147
- expect(pagamento.formata_valor_desconto).to eq '0000000012900'
148
- # formata com o numero passado
149
- expect(pagamento.formata_valor_desconto(5)).to eq '12900'
150
- end
151
-
152
- it 'formata valor do IOF com o numero de posicoes passadas' do
153
- # padrao com 13 posicoes
154
- pagamento.valor_iof = 1.84
155
- expect(pagamento.formata_valor_iof).to eq '0000000000184'
156
- # formata com o numero passado
157
- expect(pagamento.formata_valor_iof(15)).to eq '000000000000184'
158
- end
159
-
160
- it 'formata valor do abatimento com o numero de posicoes passadas' do
161
- # padrao com 13 posicoes
162
- pagamento.valor_abatimento = 34.9
163
- expect(pagamento.formata_valor_abatimento).to eq '0000000003490'
164
- # formata com o numero passado
165
- expect(pagamento.formata_valor_abatimento(10)).to eq '0000003490'
166
- end
167
-
168
- it 'formata valor dos juros com o numero de posicoes passadas' do
169
- # padrao com 13 posicoes
170
- pagamento.valor_mora = 49.2
171
- expect(pagamento.formata_valor_mora).to eq '0000000004920'
172
- # formata com o tamanho passado
173
- expect(pagamento.formata_valor_mora(15)).to eq '000000000004920'
174
- end
175
-
176
- context 'formata valor do campo documento' do
177
- before { pagamento.documento = '2345' }
178
-
179
- it 'deve formatar assumindo os valores padrao para os parametros tamanho e caracter' do
180
- expect(pagamento.formata_documento_ou_numero).to eql '2345'.rjust(25, ' ')
181
- end
182
-
183
- it 'deve formatar com os parametros tamanho e caracter' do
184
- expect(pagamento.formata_documento_ou_numero(15, '0')).to eql '2345'.rjust(15, '0')
185
- end
186
-
187
- it 'deve extrair somente o valor do campo no tamanho informado' do
188
- pagamento.documento = '12345678901234567890'
189
- expect(pagamento.formata_documento_ou_numero(15, '0')).to eql '123456789012345'
190
- expect(pagamento.formata_documento_ou_numero(15, '0').length).to be 15
191
- end
192
-
193
- it 'deve remover caracteres especiais ou acentuação' do
194
- pagamento.documento = 'JOÃO DEve R$ 900.00'
195
- expect(pagamento.formata_documento_ou_numero).to eql ' JOO DEve R 90000'
196
- expect(pagamento.formata_documento_ou_numero.length).to be 25
197
- end
198
- end
199
-
200
- context 'identificacao sacado' do
201
- it 'verifica a identificacao do sacado (pessoa fisica ou juridica)' do
202
- # pessoa fisica
203
- expect(pagamento.identificacao_sacado).to eq '01'
204
- # pessoa juridica
205
- pagamento.documento_sacado = '123456789101112'
206
- expect(pagamento.identificacao_sacado).to eq '02'
207
- pagamento.documento_sacado = '123456789101112'
208
- expect(pagamento.identificacao_sacado(false)).to eq '2'
209
- end
210
- end
211
-
212
- context 'identificacao avalista' do
213
- it 'verifica a identificacao do avalista (pessoa fisica ou juridica)' do
214
- # pessoa fisica
215
- pagamento.documento_avalista = '12345678901'
216
- expect(pagamento.identificacao_avalista).to eq '01'
217
- # pessoa juridica
218
- pagamento.documento_avalista = '123456789101112'
219
- expect(pagamento.identificacao_avalista).to eq '02'
220
- end
221
-
222
- it 'formata a identificacao com o numero de caracteres informados' do
223
- pagamento.documento_avalista = '12345678901'
224
- expect(pagamento.identificacao_avalista(false)).to eq '1'
225
- end
226
- end
227
- end
228
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Retorno::Cnab240::Base do
6
- let(:arquivo) { File.join(File.dirname(__FILE__), '..', '..', '..', 'arquivos', nome_arquivo) }
7
-
8
- describe '#load_lines' do
9
- it 'retorna nil se o arquivo é nil' do
10
- expect(described_class.load_lines(nil)).to be_nil
11
- end
12
-
13
- context 'Sicoob' do
14
- subject { Brcobranca::Retorno::Cnab240::Sicoob }
15
-
16
- let(:nome_arquivo) { 'CNAB240SICOOB.RET' }
17
-
18
- it 'lê o arquivo pela classe do Sicoob' do
19
- expect(subject).to receive(:load_lines).with(arquivo, {})
20
- described_class.load_lines(arquivo)
21
- end
22
- end
23
- end
24
- end