brcobranca 9.2.4 → 10.1.0

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