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,192 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab400::BancoNordeste 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
- {
21
- carteira: '21',
22
- agencia: '1234',
23
- conta_corrente: '1234567',
24
- digito_conta: '1',
25
- empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
26
- documento_cedente: '12345678910',
27
- pagamentos: [pagamento]
28
- }
29
- end
30
- let(:banco_nordeste) { subject.class.new(params) }
31
-
32
- context 'validacoes dos campos' do
33
- context '@agencia' do
34
- it 'deve ser invalido se nao possuir uma agencia' do
35
- object = subject.class.new(params.merge!(agencia: nil))
36
- expect(object.invalid?).to be true
37
- expect(object.errors.full_messages).to include('Agencia não pode estar em branco.')
38
- end
39
-
40
- it 'deve ser invalido se a agencia tiver mais de 4 digitos' do
41
- banco_nordeste.agencia = '12345'
42
- expect(banco_nordeste.invalid?).to be true
43
- expect(banco_nordeste.errors.full_messages).to include('Agencia deve ter 4 dígitos.')
44
- end
45
- end
46
-
47
- context '@digito_conta' do
48
- it 'deve ser invalido se nao possuir um digito da conta corrente' do
49
- objeto = subject.class.new(params.merge!(digito_conta: nil))
50
- expect(objeto.invalid?).to be true
51
- expect(objeto.errors.full_messages).to include('Digito conta não pode estar em branco.')
52
- end
53
-
54
- it 'deve ser inválido se o dígito da conta tiver mais de 1 dígito' do
55
- banco_nordeste.digito_conta = '12'
56
- expect(banco_nordeste.invalid?).to be true
57
- expect(banco_nordeste.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
58
- end
59
- end
60
-
61
- context '@conta_corrente' do
62
- it 'deve ser invalido se nao possuir uma conta corrente' do
63
- object = subject.class.new(params.merge!(conta_corrente: nil))
64
- expect(object.invalid?).to be true
65
- expect(object.errors.full_messages).to include('Conta corrente não pode estar em branco.')
66
- end
67
-
68
- it 'deve ser invalido se a conta corrente tiver mais de 7 digitos' do
69
- banco_nordeste.conta_corrente = '12345678'
70
- expect(banco_nordeste.invalid?).to be true
71
- expect(banco_nordeste.errors.full_messages).to include('Conta corrente deve ter 7 dígitos.')
72
- end
73
- end
74
-
75
- context '@carteira' do
76
- it 'deve ser inválido se não possuir uma carteira' do
77
- object = subject.class.new(params.merge!(carteira: nil))
78
- expect(object.invalid?).to be true
79
- expect(object.errors.full_messages).to include('Carteira não pode estar em branco.')
80
- end
81
-
82
- it 'deve ser inválido se a carteira tiver 2 dígitos' do
83
- banco_nordeste.carteira = '123'
84
- expect(banco_nordeste.invalid?).to be true
85
- expect(banco_nordeste.errors.full_messages).to include('Carteira deve ter 2 dígitos.')
86
- end
87
- end
88
-
89
- context '@documento_cedente' do
90
- it 'deve ser inválido se não possuir o documento cedente' do
91
- object = subject.class.new(params.merge!(documento_cedente: nil))
92
- expect(object.invalid?).to be true
93
- expect(object.errors.full_messages).to include('Documento cedente não pode estar em branco.')
94
- end
95
-
96
- it 'deve ser invalido se o documento do cedente nao tiver entre 11 e 14 digitos' do
97
- banco_nordeste.documento_cedente = '123'
98
- expect(banco_nordeste.invalid?).to be true
99
- expect(banco_nordeste.errors.full_messages).to include('Documento cedente deve ter entre 11 e 14 dígitos.')
100
- end
101
- end
102
- end
103
-
104
- context 'formatacoes dos valores' do
105
- it 'cod_banco deve ser 004' do
106
- expect(banco_nordeste.cod_banco).to eq '004'
107
- end
108
-
109
- it 'nome_banco deve ser B.DO NORDESTE com 15 posicoes' do
110
- nome_banco = banco_nordeste.nome_banco
111
- expect(nome_banco.size).to eq 15
112
- expect(nome_banco.strip).to eq 'B.DO NORDESTE'
113
- end
114
-
115
- it 'complemento deve retornar 294 caracteres' do
116
- expect(banco_nordeste.complemento.size).to eq 294
117
- end
118
-
119
- it 'info_conta deve retornar com 20 posicoes as informacoes da conta' do
120
- info_conta = banco_nordeste.info_conta
121
- expect(info_conta.size).to eq 20
122
- expect(info_conta[0..3]).to eq '1234' # num. da agencia
123
- expect(info_conta[6..12]).to eq '1234567' # num. da conta
124
- expect(info_conta[13]).to eq '1' # num. do digito
125
- end
126
-
127
- it 'deve retornar o codigo da carteira de acordo com o tipo de emissão' do
128
- banco_nordeste.carteira = 21
129
- banco_nordeste.emissao_boleto = 1
130
- expect(banco_nordeste.codigo_carteira).to eq '1'
131
-
132
- banco_nordeste.carteira = 41
133
- banco_nordeste.emissao_boleto = 1
134
- expect(banco_nordeste.codigo_carteira).to eq '2'
135
-
136
- banco_nordeste.carteira = 21
137
- banco_nordeste.emissao_boleto = 2
138
- expect(banco_nordeste.codigo_carteira).to eq '4'
139
-
140
- banco_nordeste.carteira = 41
141
- banco_nordeste.emissao_boleto = 2
142
- expect(banco_nordeste.codigo_carteira).to eq '5'
143
-
144
- banco_nordeste.carteira = 51
145
- expect(banco_nordeste.codigo_carteira).to eq 'I'
146
-
147
- banco_nordeste.carteira = 99
148
- expect(banco_nordeste.invalid?).to be true
149
- expect(banco_nordeste.errors.full_messages).to include('Carteira não é válida.')
150
- end
151
- end
152
-
153
- context 'monta remessa' do
154
- it_behaves_like 'cnab400'
155
-
156
- context 'header' do
157
- it 'informacoes devem estar posicionadas corretamente no header' do
158
- header = banco_nordeste.monta_header
159
- expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
160
- expect(header[2..8]).to eq 'REMESSA' # literal da operacao
161
- expect(header[26..45]).to eq banco_nordeste.info_conta # informacoes da conta
162
- expect(header[76..78]).to eq '004' # codigo do banco
163
- end
164
- end
165
-
166
- context 'detalhe' do
167
- it 'informacoes devem estar posicionadas corretamente no detalhe' do
168
- detalhe = banco_nordeste.monta_detalhe pagamento, 1
169
- expect(detalhe[37..61]).to eq '6969'.ljust(25) # documento
170
- expect(detalhe[62..68]).to eq '0000123' # nosso numero
171
- expect(detalhe[69]).to eq '6' # digito verificador
172
- expect(detalhe[120..125]).to eq Date.current.strftime('%d%m%y') # data de vencimento
173
- expect(detalhe[126..138]).to eq '0000000019990' # valor do titulo
174
- expect(detalhe[142..145]).to eq '0000' # agência cobradora
175
- expect(detalhe[156..159]).to eq '0000' # instrução
176
- expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
177
- expect(detalhe[234..263]).to eq 'PABLO DIEGO JOSE FRANCISCO DE ' # nome do pagador
178
- end
179
- end
180
-
181
- context 'arquivo' do
182
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
183
-
184
- after { Timecop.return }
185
-
186
- it {
187
- expect(banco_nordeste.gera_arquivo).to eq(read_remessa('remessa-banco-nordeste-cnab400.rem',
188
- banco_nordeste.gera_arquivo))
189
- }
190
- end
191
- end
192
- end
@@ -1,192 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab400::Banrisul do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- nosso_numero: 22_832_563,
10
- documento: '1',
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
- percentual_multa: 2.0,
18
- uf_sacado: 'SP')
19
- end
20
- let(:params) do
21
- {
22
- carteira: '1',
23
- agencia: '1102',
24
- convenio: '1102900015046',
25
- empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
26
- sequencial_remessa: '1',
27
- pagamentos: [pagamento]
28
- }
29
- end
30
-
31
- let(:banrisul) { subject.class.new(params) }
32
-
33
- context 'validacoes dos campos' do
34
- context '@agencia' do
35
- it 'deve ser inválido se não possuir uma agência' do
36
- objeto = subject.class.new(params.merge!(agencia: nil))
37
- expect(objeto.invalid?).to be true
38
- expect(objeto.errors.full_messages).to include('Agencia não pode estar em branco.')
39
- end
40
-
41
- it 'deve ser inválido se a agência tiver mais de 4 dígitos' do
42
- banrisul.agencia = '12345'
43
- expect(banrisul.invalid?).to be true
44
- expect(banrisul.errors.full_messages).to include('Agencia deve ter 4 dígitos.')
45
- end
46
- end
47
-
48
- context '@convenio' do
49
- it 'deve ser inválido se não possuir um convênio' do
50
- objeto = subject.class.new(params.merge!(convenio: nil))
51
- expect(objeto.invalid?).to be true
52
- expect(objeto.errors.full_messages).to include('Convenio não pode estar em branco.')
53
- end
54
-
55
- it 'deve ser inválido se o convenio tiver mais de 7 dígitos' do
56
- banrisul.convenio = '12345678901234'
57
- expect(banrisul.invalid?).to be true
58
- expect(banrisul.errors.full_messages).to include('Convenio deve ter 13 dígitos.')
59
- end
60
- end
61
-
62
- context '@carteira' do
63
- it 'deve ser inválido se não possuir uma carteira' do
64
- objeto = subject.class.new(params.merge!(carteira: nil))
65
- expect(objeto.invalid?).to be true
66
- expect(objeto.errors.full_messages).to include('Carteira não pode estar em branco.')
67
- end
68
-
69
- it 'deve ser inválido se a carteira tiver mais de 1 dígito' do
70
- banrisul.carteira = '123'
71
- expect(banrisul.invalid?).to be true
72
- expect(banrisul.errors.full_messages).to include('Carteira deve ter 1 dígito.')
73
- end
74
- end
75
-
76
- context '@sequencial_remessa' do
77
- it 'deve ser inválido se não possuir um num. sequencial de remessa' do
78
- objeto = subject.class.new(params.merge!(sequencial_remessa: nil))
79
- expect(objeto.invalid?).to be true
80
- expect(objeto.errors.full_messages).to include('Sequencial remessa não pode estar em branco.')
81
- end
82
-
83
- it 'deve ser inválido se sequencial de remessa tiver mais de 8 dígitos' do
84
- banrisul.sequencial_remessa = '12345678'
85
- expect(banrisul.invalid?).to be true
86
- expect(banrisul.errors.full_messages).to include('Sequencial remessa deve ter 7 dígitos.')
87
- end
88
- end
89
- end
90
-
91
- context 'formatacoes dos valores' do
92
- it 'código do banco deve ser 041' do
93
- expect(banrisul.cod_banco).to eq '041'
94
- end
95
-
96
- it 'nome do banco deve ser BANRISUL com 15 posicoes' do
97
- nome_banco = banrisul.nome_banco
98
- expect(nome_banco.size).to eq 15
99
- expect(nome_banco.strip).to eq 'BANRISUL'
100
- end
101
-
102
- it 'complemento deve ter 294 caracteres com as informações nas posições corretas' do
103
- complemento = banrisul.complemento
104
- expect(complemento.size).to eq 294
105
- end
106
-
107
- it 'info_conta deve ter 20 posicoes' do
108
- expect(banrisul.info_conta.size).to eq 20
109
- end
110
-
111
- it 'código do cedente deve ter as informações nas posicoes corretas' do
112
- id_empresa = banrisul.codigo_cedente
113
- expect(id_empresa[0..3]).to eq '1102' # agência
114
- expect(id_empresa[4..10]).to eq '9000150' # convênio
115
- expect(id_empresa[11..12]).to eq '46' # dígitos do convênio
116
- end
117
-
118
- it 'calcula o dígito verificador do nosso número' do
119
- expect(banrisul.digito_nosso_numero(22_832_563)).to eq('51')
120
- end
121
- end
122
-
123
- context 'monta remessa' do
124
- it_behaves_like 'cnab400'
125
-
126
- context 'header' do
127
- it 'informações devem estar posicionadas corretamente no header' do
128
- header = banrisul.monta_header
129
- expect(header[1]).to eq '1' # tipo operação (1 = remessa)
130
- expect(header[2..8]).to eq 'REMESSA' # literal da operação
131
- expect(header[26..45]).to eq banrisul.info_conta # informações da conta
132
- expect(header[76..78]).to eq '041' # código do banco
133
- end
134
- end
135
-
136
- context 'detalhe' do
137
- it 'informações devem estar posicionadas corretamente no detalhe' do
138
- detalhe = banrisul.monta_detalhe pagamento, 1
139
- expect(detalhe[0]).to eq '1' # tipo do registro
140
- expect(detalhe[1..16]).to eq ''.rjust(16, ' ') # brancos
141
- expect(detalhe[17..29]).to eq '1102900015046' # código do cedente
142
- expect(detalhe[30..36]).to eq ''.rjust(7, ' ') # brancos
143
- expect(detalhe[37..61]).to eq '1'.ljust(25, ' ') # num. controle
144
- expect(detalhe[62..69]).to eq '22832563' # nosso número
145
- expect(detalhe[70..71]).to eq '51' # dígitos nosso número
146
- expect(detalhe[72..103]).to eq ''.rjust(32, ' ') # mensagem bloqueto
147
- expect(detalhe[104..106]).to eq ''.rjust(3, ' ') # branco
148
- expect(detalhe[107]).to eq '1' # carteira
149
- expect(detalhe[108..109]).to eq '01' # código da ocorrência
150
- expect(detalhe[110..119]).to eq '1'.ljust(10, ' ') # seu número
151
- expect(detalhe[120..125]).to eq Date.current.strftime('%d%m%y') # data de vencimento
152
- expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
153
- expect(detalhe[139..141]).to eq '041' # banco cobrador
154
- expect(detalhe[142..146]).to eq ''.rjust(5, ' ') # brancos
155
- expect(detalhe[147..148]).to eq '08' # tipo de documento (08 - Cobrança Credenciada Banrisul - CCB)
156
- expect(detalhe[149]).to eq 'N' # código de aceite
157
- expect(detalhe[150..155]).to eq Date.current.strftime('%d%m%y') # data de emissão
158
- expect(detalhe[156..157]).to eq '18' # código da 1a instrução
159
- expect(detalhe[158..159]).to eq '00' # código da 2a instrução
160
- expect(detalhe[160]).to eq ' ' # código da mora
161
- expect(detalhe[161..172]).to eq ''.rjust(12, ' ') # valor ao dia ou mensal de juros
162
- expect(detalhe[173..178]).to eq ''.rjust(6, '0') # data para concessão do desconto
163
- expect(detalhe[179..191]).to eq ''.rjust(13, '0') # valor do desconto a ser concedido
164
- expect(detalhe[192..204]).to eq ''.rjust(13, '0') # valor do iof
165
- expect(detalhe[205..217]).to eq ''.rjust(13, '0') # valor do abatimento
166
- expect(detalhe[218..219]).to eq '01' # tipo de insc. do pagador
167
- expect(detalhe[220..233]).to eq '00012345678901' # num. da insc. do pagador
168
- expect(detalhe[234..268]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA' # nome do pagador
169
- expect(detalhe[274..313]).to eq 'RUA RIO GRANDE DO SUL Sao paulo Minas ca' # endereço do pagador
170
- expect(detalhe[314..320]).to eq ''.rjust(7, ' ') # brancos
171
- expect(detalhe[321..323]).to eq '020' # multa
172
- expect(detalhe[324..325]).to eq '00' # num. dias para a multa após o vencimento
173
- expect(detalhe[326..333]).to eq '12345678' # cep do pagador
174
- expect(detalhe[334..348]).to eq 'Santa rita de c' # cidade do pagador
175
- expect(detalhe[349..350]).to eq 'SP' # uf do pagador
176
- expect(detalhe[351..354]).to eq '0000' # taxa ao dia para pag. antecipado
177
- expect(detalhe[355]).to eq ' ' # branco
178
- expect(detalhe[356..368]).to eq ''.rjust(13, '0') # valor para cálc. do desconto
179
- expect(detalhe[369..370]).to eq '00' # dias para protesto
180
- expect(detalhe[371..393]).to eq ''.rjust(23, ' ') # brancos
181
- end
182
- end
183
-
184
- context 'arquivo' do
185
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
186
-
187
- after { Timecop.return }
188
-
189
- it { expect(banrisul.gera_arquivo).to eq(read_remessa('remessa-banrisul-cnab400.rem', banrisul.gera_arquivo)) }
190
- end
191
- end
192
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab400::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(:pagamento_2) do
19
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
20
- data_vencimento: Date.current,
21
- nosso_numero: 123,
22
- documento_sacado: '12345678901',
23
- nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO,!^.?\/@ DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
24
- endereco_sacado: 'RUA RIO GRANDE DO SUL,!^.?\/@ São paulo Minas caçapa da silva junior',
25
- bairro_sacado: 'São josé dos quatro apostolos magros',
26
- cep_sacado: '12345678',
27
- cidade_sacado: 'Santa rita de cássia maria da silva',
28
- uf_sacado: 'SP')
29
- end
30
- let(:params) do
31
- { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
32
- agencia: '123',
33
- conta_corrente: '1234',
34
- digito_conta: '1',
35
- pagamentos: [pagamento, pagamento_2] }
36
- end
37
- let(:cnab400) { subject.class.new(params) }
38
-
39
- context 'sobrescrita dos metodos' do
40
- it 'mostrar aviso sobre sobrecarga de métodos padrões' do
41
- expect do
42
- cnab400.monta_detalhe(Brcobranca::Remessa::Pagamento.new,
43
- 1)
44
- end.to raise_error(Brcobranca::NaoImplementado,
45
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
46
- expect do
47
- cnab400.info_conta
48
- end.to raise_error(Brcobranca::NaoImplementado,
49
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
50
- expect do
51
- cnab400.cod_banco
52
- end.to raise_error(Brcobranca::NaoImplementado,
53
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
54
- expect do
55
- cnab400.nome_banco
56
- end.to raise_error(Brcobranca::NaoImplementado,
57
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
58
- expect do
59
- cnab400.complemento
60
- end.to raise_error(Brcobranca::NaoImplementado,
61
- 'Sobreescreva este método na classe referente ao banco que você esta criando')
62
- end
63
- end
64
-
65
- describe '#valor_total_titulos' do
66
- it { expect(cnab400.valor_titulos_carteira(13)).to eq('0000000039980') }
67
- end
68
- end
@@ -1,203 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- codigo_multa: '2',
10
- percentual_multa: '2.00',
11
- numero: 1,
12
- nosso_numero: 123,
13
- documento: 6969,
14
- documento_sacado: '12345678901',
15
- nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO,!^.?\/@ DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
16
- endereco_sacado: 'RUA RIO GRANDE DO SUL,!^.?\/@ São paulo Minas caçapa da silva junior',
17
- bairro_sacado: 'São josé dos quatro apostolos magros',
18
- cep_sacado: '12345678',
19
- cidade_sacado: 'Santa rita de cássia maria da silva',
20
- uf_sacado: 'SP')
21
- end
22
- let(:params) do
23
- { carteira: '01',
24
- agencia: '12345',
25
- conta_corrente: '1234567',
26
- digito_conta: '1',
27
- empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
28
- sequencial_remessa: '1',
29
- codigo_empresa: '123',
30
- pagamentos: [pagamento] }
31
- end
32
- let(:bradesco) { subject.class.new(params) }
33
-
34
- context 'validacoes dos campos' do
35
- context '@agencia' do
36
- it 'deve ser invalido se nao possuir uma agencia' do
37
- objeto = subject.class.new(params.merge!(agencia: nil))
38
- expect(objeto.invalid?).to be true
39
- expect(objeto.errors.full_messages).to include('Agencia não pode estar em branco.')
40
- end
41
-
42
- it 'deve ser invalido se a agencia tiver mais de 5 digitos' do
43
- bradesco.agencia = '123456'
44
- expect(bradesco.invalid?).to be true
45
- expect(bradesco.errors.full_messages).to include('Agencia deve ter 5 dígitos.')
46
- end
47
- end
48
-
49
- context '@digito_conta' do
50
- it 'deve ser invalido se nao possuir um digito da conta corrente' do
51
- objeto = subject.class.new(params.merge!(digito_conta: nil))
52
- expect(objeto.invalid?).to be true
53
- expect(objeto.errors.full_messages).to include('Digito conta não pode estar em branco.')
54
- end
55
-
56
- it 'deve ser invalido se a carteira tiver mais de 1 digito' do
57
- bradesco.digito_conta = '12'
58
- expect(bradesco.invalid?).to be true
59
- expect(bradesco.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
60
- end
61
- end
62
-
63
- context '@conta_corrente' do
64
- it 'deve ser invalido se nao possuir uma conta corrente' do
65
- objeto = subject.class.new(params.merge!(conta_corrente: nil))
66
- expect(objeto.invalid?).to be true
67
- expect(objeto.errors.full_messages).to include('Conta corrente não pode estar em branco.')
68
- end
69
-
70
- it 'deve ser invalido se a conta corrente tiver mais de 8 digitos' do
71
- bradesco.conta_corrente = '12345678'
72
- expect(bradesco.invalid?).to be true
73
- expect(bradesco.errors.full_messages).to include('Conta corrente deve ter 7 dígitos.')
74
- end
75
- end
76
-
77
- context '@carteira' do
78
- it 'deve ser invalido se nao possuir uma carteira' do
79
- objeto = subject.class.new(params.merge!(carteira: nil))
80
- expect(objeto.invalid?).to be true
81
- expect(objeto.errors.full_messages).to include('Carteira não pode estar em branco.')
82
- end
83
-
84
- it 'deve ser invalido se a carteira tiver mais de 2 digitos' do
85
- bradesco.carteira = '123'
86
- expect(bradesco.invalid?).to be true
87
- expect(bradesco.errors.full_messages).to include('Carteira deve ter no máximo 2 dígitos.')
88
- end
89
- end
90
-
91
- context '@sequencial_remessa' do
92
- it 'deve ser invalido se nao possuir um num. sequencial de remessa' do
93
- objeto = subject.class.new(params.merge!(sequencial_remessa: nil))
94
- expect(objeto.invalid?).to be true
95
- expect(objeto.errors.full_messages).to include('Sequencial remessa não pode estar em branco.')
96
- end
97
-
98
- it 'deve ser invalido se sequencial de remessa tiver mais de 8 digitos' do
99
- bradesco.sequencial_remessa = '12345678'
100
- expect(bradesco.invalid?).to be true
101
- expect(bradesco.errors.full_messages).to include('Sequencial remessa deve ter 7 dígitos.')
102
- end
103
- end
104
-
105
- context '@codigo_empresa' do
106
- it 'deve ser invalido se nao possuir um codigo da empresa' do
107
- objeto = subject.class.new(params.merge!(codigo_empresa: nil))
108
- expect(objeto.invalid?).to be true
109
- expect(objeto.errors.full_messages).to include('Codigo empresa não pode estar em branco.')
110
- end
111
-
112
- it 'deve ser invalido se codigo da empresa tiver mais de 20 digitos' do
113
- bradesco.codigo_empresa = ''.rjust(21, '0')
114
- expect(bradesco.invalid?).to be true
115
- expect(bradesco.errors.full_messages).to include('Codigo empresa deve ser menor ou igual a 20 dígitos.')
116
- end
117
- end
118
- end
119
-
120
- context 'formatacoes dos valores' do
121
- it 'cod_banco deve ser 237' do
122
- expect(bradesco.cod_banco).to eq '237'
123
- end
124
-
125
- it 'nome_banco deve ser BRADESCO com 15 posicoes' do
126
- nome_banco = bradesco.nome_banco
127
- expect(nome_banco.size).to eq 15
128
- expect(nome_banco.strip).to eq 'BRADESCO'
129
- end
130
-
131
- it 'complemento deve ter 294 caracteres com as informacoes nas posicoes corretas' do
132
- complemento = bradesco.complemento
133
- expect(complemento.size).to eq 294
134
- expect(complemento[8..9]).to eq 'MX'
135
- expect(complemento[10..16]).to eq '0000001'
136
- end
137
-
138
- it 'info_conta deve ter 20 posicoes' do
139
- expect(bradesco.info_conta.size).to eq 20
140
- end
141
-
142
- it 'identificacao da empresa deve ter as informacoes nas posicoes corretas' do
143
- id_empresa = bradesco.identificacao_empresa
144
- expect(id_empresa[1..3]).to eq '001' # carteira (com 3 digitos)
145
- expect(id_empresa[4..8]).to eq '12345' # agencia
146
- expect(id_empresa[9..15]).to eq '1234567' # conta corrente
147
- expect(id_empresa[16]).to eq '1' # digito da conta corrente
148
- end
149
-
150
- it 'calcula o digito verificador do nosso numero' do
151
- # Calculo do digito:
152
- # * multiplicar o nosso numero acrescido da carteira a esquerda
153
- # pelo modulo 11, com base 7
154
- #
155
- # carteira(2) + nosso numero(11)
156
- # => 0 1 0 0 0 0 0 0 0 0 1 2 3
157
- # x 2 7 6 5 4 3 2 7 6 5 4 3 2
158
- # = 0 7 0 0 0 0 0 0 0 0 4 6 6 = 23
159
- # 23/11 = 2 com resto 1
160
- # quando resto 1 codigo sera P
161
- #
162
- expect(bradesco.digito_nosso_numero(123)).to eq 'P'
163
- end
164
- end
165
-
166
- context 'monta remessa' do
167
- it_behaves_like 'cnab400'
168
-
169
- context 'header' do
170
- it 'informacoes devem estar posicionadas corretamente no header' do
171
- header = bradesco.monta_header
172
- expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
173
- expect(header[2..8]).to eq 'REMESSA' # literal da operacao
174
- expect(header[26..45]).to eq bradesco.info_conta # informacoes da conta
175
- expect(header[76..78]).to eq '237' # codigo do banco
176
- end
177
- end
178
-
179
- context 'detalhe' do
180
- it 'informacoes devem estar posicionadas corretamente no detalhe' do
181
- detalhe = bradesco.monta_detalhe pagamento, 1
182
- expect(detalhe[37..61]).to eq '6969'.ljust(25)
183
- expect(detalhe[65]).to eq '2'
184
- expect(detalhe[66..69]).to eq '0200'
185
- expect(detalhe[70..80]).to eq '00000000123' # nosso numero
186
- expect(detalhe[81]).to eq 'P' # digito nosso numero (para nosso numero 123 o digito e P)
187
- expect(detalhe[120..125]).to eq Date.current.strftime('%d%m%y') # data de vencimento
188
- expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
189
- expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
190
- expect(detalhe[234..273]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA JUAN' # nome do pagador
191
- expect(detalhe[274..313]).to eq bradesco.formata_endereco_sacado(pagamento) # endereco do pagador
192
- end
193
- end
194
-
195
- context 'arquivo' do
196
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
197
-
198
- after { Timecop.return }
199
-
200
- it { expect(bradesco.gera_arquivo).to eq(read_remessa('remessa-bradesco-cnab400.rem', bradesco.gera_arquivo)) }
201
- end
202
- end
203
- end