br_boleto 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/Gemfile.lock +3 -3
- data/README.markdown +196 -11
- data/Rakefile +5 -0
- data/br_boleto.gemspec +1 -1
- data/lib/br_boleto.rb +30 -12
- data/lib/br_boleto/{core/boleto.rb → boleto/base.rb} +83 -5
- data/lib/br_boleto/boleto/sicoob.rb +211 -0
- data/lib/br_boleto/calculos/modulo11_fator3197.rb +5 -5
- data/lib/br_boleto/helper/cpf_cnpj.rb +60 -0
- data/lib/br_boleto/helper/number.rb +15 -0
- data/lib/br_boleto/remessa/base.rb +89 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +328 -0
- data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +180 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +349 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +206 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +261 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +193 -0
- data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +88 -0
- data/lib/br_boleto/remessa/cnab240/helper/trailer_lote.rb +75 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +246 -0
- data/lib/br_boleto/remessa/lote.rb +52 -0
- data/lib/br_boleto/remessa/pagamento.rb +238 -0
- data/lib/br_boleto/string_methods.rb +21 -0
- data/lib/br_boleto/version.rb +2 -2
- data/test/br_boleto/{core/boleto_test.rb → boleto/base_test.rb} +107 -11
- data/test/br_boleto/{core → boleto}/sicoob_test.rb +60 -2
- data/test/br_boleto/remessa/base_test.rb +80 -0
- data/test/br_boleto/remessa/cnab240/base_test.rb +405 -0
- data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +208 -0
- data/test/br_boleto/remessa/cnab240/helper/header_lote_test.rb +200 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +390 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +223 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +260 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +217 -0
- data/test/br_boleto/remessa/cnab240/helper/trailer_arquivo_test.rb +82 -0
- data/test/br_boleto/remessa/cnab240/helper/trailer_lote_test.rb +67 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +347 -0
- data/test/br_boleto/remessa/lote_test.rb +49 -0
- data/test/br_boleto/remessa/pagamento_test.rb +339 -0
- data/test/factories/{boleto.rb → boleto/base.rb} +1 -1
- data/test/factories/{boleto_sicoob.rb → boleto/boleto_sicoob.rb} +1 -1
- data/test/factories/remessa/base.rb +13 -0
- data/test/factories/remessa/cnab240/base.rb +18 -0
- data/test/factories/remessa/cnab240/sicoob.rb +18 -0
- data/test/factories/remessa/lote.rb +7 -0
- data/test/factories/remessa/pagamento.rb +16 -0
- data/test/inheritance/boleto_test.rb +1 -1
- data/test/inheritance/sicoob_test.rb +1 -1
- metadata +65 -13
- data/lib/br_boleto/core/sicoob.rb +0 -169
@@ -0,0 +1,208 @@
|
|
1
|
+
module Helper
|
2
|
+
module HeaderArquivoTest
|
3
|
+
def test_HeaderArquivoTest_metodo_monta_header_arquivo_deve_ter_o_conteudo_dos_metodos_na_sequencia
|
4
|
+
subject.stubs(:header_arquivo_posicao_001_a_003).returns(" 001_a_003")
|
5
|
+
subject.stubs(:header_arquivo_posicao_004_a_007).returns(" 004_a_007")
|
6
|
+
subject.stubs(:header_arquivo_posicao_008_a_008).returns(" 008_a_008")
|
7
|
+
subject.stubs(:header_arquivo_posicao_009_a_017).returns(" 009_a_017")
|
8
|
+
subject.stubs(:header_arquivo_posicao_018_a_018).returns(" 018_a_018")
|
9
|
+
subject.stubs(:header_arquivo_posicao_019_a_032).returns(" 019_a_032")
|
10
|
+
subject.stubs(:header_arquivo_posicao_033_a_052).returns(" 033_a_052")
|
11
|
+
subject.stubs(:header_arquivo_posicao_053_a_072).returns(" 053_a_072")
|
12
|
+
subject.stubs(:header_arquivo_posicao_073_a_102).returns(" 073_a_102")
|
13
|
+
subject.stubs(:header_arquivo_posicao_103_a_132).returns(" 103_a_132")
|
14
|
+
subject.stubs(:header_arquivo_posicao_133_a_142).returns(" 133_a_142")
|
15
|
+
subject.stubs(:header_arquivo_posicao_143_a_143).returns(" 143_a_143")
|
16
|
+
subject.stubs(:header_arquivo_posicao_144_a_151).returns(" 144_a_151")
|
17
|
+
subject.stubs(:header_arquivo_posicao_152_a_157).returns(" 152_a_157")
|
18
|
+
subject.stubs(:header_arquivo_posicao_158_a_163).returns(" 158_a_163")
|
19
|
+
subject.stubs(:header_arquivo_posicao_164_a_166).returns(" 164_a_166")
|
20
|
+
subject.stubs(:header_arquivo_posicao_167_a_171).returns(" 167_a_171")
|
21
|
+
subject.stubs(:header_arquivo_posicao_172_a_191).returns(" 172_a_191")
|
22
|
+
subject.stubs(:header_arquivo_posicao_192_a_211).returns(" 192_a_211")
|
23
|
+
subject.stubs(:header_arquivo_posicao_212_a_240).returns(" 212_a_240")
|
24
|
+
# Deve dar um upcase
|
25
|
+
subject.monta_header_arquivo.must_equal(" 001_A_003 004_A_007 008_A_008 009_A_017 018_A_018 019_A_032 033_A_052 053_A_072 073_A_102 103_A_132 133_A_142 143_A_143 144_A_151 152_A_157 158_A_163 164_A_166 167_A_171 172_A_191 192_A_211 212_A_240")
|
26
|
+
end
|
27
|
+
|
28
|
+
# Código do banco
|
29
|
+
# 3 posições
|
30
|
+
# Por padrão deve retornar o "codigo_banco"
|
31
|
+
#
|
32
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_001_a_003
|
33
|
+
subject.expects(:codigo_banco).returns("669")
|
34
|
+
subject.header_arquivo_posicao_001_a_003.must_equal("669")
|
35
|
+
end
|
36
|
+
|
37
|
+
# Lote de serviço
|
38
|
+
# 4 posições
|
39
|
+
# Por padrão retorna 0000
|
40
|
+
#
|
41
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_004_a_007
|
42
|
+
subject.header_arquivo_posicao_004_a_007.must_equal('0000')
|
43
|
+
end
|
44
|
+
|
45
|
+
# Tipo do registro
|
46
|
+
# 1 posição
|
47
|
+
# Por padrão retorna '0'
|
48
|
+
#
|
49
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_008_a_008
|
50
|
+
subject.header_arquivo_posicao_008_a_008.must_equal('0')
|
51
|
+
end
|
52
|
+
|
53
|
+
# Uso Exclusivo FEBRABAN / CNAB
|
54
|
+
# 09 posições
|
55
|
+
# Por padrão retorna 9 posições em branco
|
56
|
+
#
|
57
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_009_a_017
|
58
|
+
subject.header_arquivo_posicao_009_a_017.must_equal( ''.rjust(9, ' ') )
|
59
|
+
end
|
60
|
+
|
61
|
+
# Tipo de Inscrição da Empresa
|
62
|
+
# 1 posição
|
63
|
+
# retorna o valor do metodo "tipo_inscricao"
|
64
|
+
#
|
65
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_018_a_018
|
66
|
+
subject.expects(:tipo_inscricao).returns("5")
|
67
|
+
subject.header_arquivo_posicao_018_a_018.must_equal("5")
|
68
|
+
end
|
69
|
+
|
70
|
+
# Número de Inscrição da Empresa (CPF/CNPJ)
|
71
|
+
# 14 Posições
|
72
|
+
# Retorna o documento_cedente com 14 posições preenchendo com zeros
|
73
|
+
#
|
74
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_019_a_032
|
75
|
+
subject.expects(:documento_cedente).returns("1234567890")
|
76
|
+
subject.header_arquivo_posicao_019_a_032.must_equal("00001234567890")
|
77
|
+
end
|
78
|
+
|
79
|
+
# Código do Convênio no Banco
|
80
|
+
# 20 posições
|
81
|
+
# Deve retornar o valor do metodo "codigo_convenio"
|
82
|
+
#
|
83
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_033_a_052
|
84
|
+
subject.expects(:codigo_convenio).returns("1345646432132")
|
85
|
+
subject.header_arquivo_posicao_033_a_052.must_equal("1345646432132")
|
86
|
+
end
|
87
|
+
|
88
|
+
# Informações da conta bancária
|
89
|
+
# O padrão da FEBRABAN é:
|
90
|
+
# Posição de 53 até 57 com 05 posições = Agência Mantenedora da Conta
|
91
|
+
# Posição de 58 até 58 com 01 posições = DV -> Dígito Verificador da Agência
|
92
|
+
# Posição de 59 até 70 com 12 posições = Conta -> Número Número da Conta Corrente
|
93
|
+
# Posição de 71 até 71 com 01 posições = DV -> Dígito Verificador da Conta
|
94
|
+
# Posição de 72 até 72 com 01 posições = DV -> Dígito Verificador da Ag/Conta
|
95
|
+
#
|
96
|
+
# Porém como no Brasil os bancos não conseguem seguir um padrão, cada banco faz da sua maneira
|
97
|
+
# 20 posições
|
98
|
+
# Retorna o valor contido no metodo "informacoes_da_conta"
|
99
|
+
#
|
100
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_053_a_072
|
101
|
+
subject.expects(:informacoes_da_conta).returns("INFO_CONTA")
|
102
|
+
subject.header_arquivo_posicao_053_a_072.must_equal("INFO_CONTA")
|
103
|
+
end
|
104
|
+
|
105
|
+
# Nome da Empresa
|
106
|
+
# 30 posições
|
107
|
+
# retorna o valor do metodo "nome_empresa_formatada"
|
108
|
+
#
|
109
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_073_a_102
|
110
|
+
subject.expects(:nome_empresa_formatada).returns("EMPRESA")
|
111
|
+
subject.header_arquivo_posicao_073_a_102.must_equal("EMPRESA")
|
112
|
+
end
|
113
|
+
|
114
|
+
# Nome do Banco
|
115
|
+
# 30 posições
|
116
|
+
# retorna o valor do metodo "nome_banco"
|
117
|
+
#
|
118
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_103_a_132
|
119
|
+
subject.expects(:nome_banco).returns("nome_banco")
|
120
|
+
subject.header_arquivo_posicao_103_a_132.must_equal('nome_banco')
|
121
|
+
end
|
122
|
+
|
123
|
+
# Uso Exclusivo FEBRABAN / CNAB
|
124
|
+
# 10 posições
|
125
|
+
# Valores em branco
|
126
|
+
#
|
127
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_133_a_142
|
128
|
+
subject.header_arquivo_posicao_133_a_142.must_equal(''.rjust(10, ' '))
|
129
|
+
end
|
130
|
+
|
131
|
+
# Código Remessa / Retorno (1 para remessa)
|
132
|
+
# 1 posição
|
133
|
+
# Padrão retorna o valor 1
|
134
|
+
#
|
135
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_143_a_143
|
136
|
+
subject.header_arquivo_posicao_143_a_143.must_equal("1")
|
137
|
+
end
|
138
|
+
|
139
|
+
# Data de Geração do Arquivo no formato (DDMMYYYY)
|
140
|
+
# 8 posições
|
141
|
+
# Deve pegar o valor contido no metodo "data_geracao"
|
142
|
+
#
|
143
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_144_a_151
|
144
|
+
subject.expects(:data_geracao).returns("data_geracao")
|
145
|
+
subject.header_arquivo_posicao_144_a_151.must_equal("data_geracao")
|
146
|
+
end
|
147
|
+
|
148
|
+
# Hora de Geração do Arquivo no formato (HHMMSS)
|
149
|
+
# 6 posições
|
150
|
+
# Deve pegar o valor contido no metodo "hora_geracao"
|
151
|
+
#
|
152
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_152_a_157
|
153
|
+
subject.expects(:hora_geracao).returns("hora_geracao")
|
154
|
+
subject.header_arquivo_posicao_152_a_157.must_equal("hora_geracao")
|
155
|
+
end
|
156
|
+
|
157
|
+
# Número Seqüencial do Arquivo
|
158
|
+
# 6 posições
|
159
|
+
# Por padrão pega o valor contido no metodo "sequencial_remessa" ajsutando para 6 posições
|
160
|
+
#
|
161
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_158_a_163
|
162
|
+
subject.expects(:sequencial_remessa).returns("1234")
|
163
|
+
subject.header_arquivo_posicao_158_a_163.must_equal("001234")
|
164
|
+
end
|
165
|
+
|
166
|
+
# Numero da Versão do Layout do Arquivo
|
167
|
+
# 3 posições
|
168
|
+
# Deve pegar o valor contido no metodo "versao_layout_arquivo"
|
169
|
+
#
|
170
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_164_a_166
|
171
|
+
subject.expects(:versao_layout_arquivo).returns("123")
|
172
|
+
subject.header_arquivo_posicao_164_a_166.must_equal("123")
|
173
|
+
end
|
174
|
+
|
175
|
+
# Densidade de Gravação do Arquivo
|
176
|
+
# 5 posições
|
177
|
+
# Por padrão retorna 5 zeros
|
178
|
+
#
|
179
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_167_a_171
|
180
|
+
subject.header_arquivo_posicao_167_a_171.must_equal(''.rjust(5, '0'))
|
181
|
+
end
|
182
|
+
|
183
|
+
# Espaço reservado para o Banco
|
184
|
+
# 20 posições
|
185
|
+
# Por padrão retorna 20 zeros
|
186
|
+
#
|
187
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_172_a_191
|
188
|
+
subject.header_arquivo_posicao_172_a_191.must_equal(''.rjust(20, '0'))
|
189
|
+
end
|
190
|
+
|
191
|
+
# Espaço reservado para a Empresa
|
192
|
+
# 20 posições
|
193
|
+
# Por padrão retorna 20 zeros
|
194
|
+
#
|
195
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_192_a_211
|
196
|
+
subject.header_arquivo_posicao_192_a_211.must_equal(''.rjust(20, '0'))
|
197
|
+
end
|
198
|
+
|
199
|
+
# Para Uso Exclusivo FEBRABAN / CNAB
|
200
|
+
# 29 posições
|
201
|
+
# Padrão pega o valor do metodo "complemento_header"
|
202
|
+
#
|
203
|
+
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_212_a_240
|
204
|
+
subject.expects(:complemento_header).returns("123456")
|
205
|
+
subject.header_arquivo_posicao_212_a_240.must_equal("123456")
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
@@ -0,0 +1,200 @@
|
|
1
|
+
module Helper
|
2
|
+
module HeaderLoteTest
|
3
|
+
def test_HeaderLoteTest_metodo_monta_header_lote_deve_ter_o_conteudo_dos_metodos_na_sequencia
|
4
|
+
subject.stubs(:header_lote_posicao_001_a_003).returns(" 001_a_003")
|
5
|
+
subject.stubs(:header_lote_posicao_004_a_007).with(1).returns(" 004_a_007")
|
6
|
+
subject.stubs(:header_lote_posicao_008_a_008).returns(" 008_a_008")
|
7
|
+
subject.stubs(:header_lote_posicao_009_a_009).returns(" 009_a_009")
|
8
|
+
subject.stubs(:header_lote_posicao_010_a_011).returns(" 010_a_011")
|
9
|
+
subject.stubs(:header_lote_posicao_012_a_013).returns(" 012_a_013")
|
10
|
+
subject.stubs(:header_lote_posicao_014_a_016).returns(" 014_a_016")
|
11
|
+
subject.stubs(:header_lote_posicao_017_a_017).returns(" 017_a_017")
|
12
|
+
subject.stubs(:header_lote_posicao_018_a_018).returns(" 018_a_018")
|
13
|
+
subject.stubs(:header_lote_posicao_019_a_033).returns(" 019_a_033")
|
14
|
+
subject.stubs(:header_lote_posicao_034_a_053).with(lote).returns(" 034_a_053")
|
15
|
+
subject.stubs(:header_lote_posicao_054_a_073).returns(" 054_a_073")
|
16
|
+
subject.stubs(:header_lote_posicao_074_a_103).returns(" 074_a_103")
|
17
|
+
subject.stubs(:header_lote_posicao_104_a_143).returns(" 104_a_143")
|
18
|
+
subject.stubs(:header_lote_posicao_144_a_183).returns(" 144_a_183")
|
19
|
+
subject.stubs(:header_lote_posicao_184_a_191).returns(" 184_a_191")
|
20
|
+
subject.stubs(:header_lote_posicao_192_a_199).returns(" 192_a_199")
|
21
|
+
subject.stubs(:header_lote_posicao_200_a_207).returns(" 200_a_207")
|
22
|
+
subject.stubs(:header_lote_posicao_208_a_240).returns(" 208_a_240")
|
23
|
+
# Deve dar um upcase
|
24
|
+
subject.monta_header_lote(lote, 1).must_equal(" 001_A_003 004_A_007 008_A_008 009_A_009 010_A_011 012_A_013 014_A_016 017_A_017 018_A_018 019_A_033 034_A_053 054_A_073 074_A_103 104_A_143 144_A_183 184_A_191 192_A_199 200_A_207 208_A_240")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Código do banco
|
28
|
+
# 3 posições
|
29
|
+
# Por padrão deve retornar o "codigo_banco"
|
30
|
+
#
|
31
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_001_a_003
|
32
|
+
subject.expects(:codigo_banco).returns("669")
|
33
|
+
subject.header_lote_posicao_001_a_003.must_equal("669")
|
34
|
+
end
|
35
|
+
|
36
|
+
# Lote de Serviço
|
37
|
+
# 4 posições
|
38
|
+
# Deve pegar o numero do lote preenchendo com 0
|
39
|
+
#
|
40
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_004_a_007
|
41
|
+
subject.header_lote_posicao_004_a_007(5).must_equal "0005"
|
42
|
+
end
|
43
|
+
|
44
|
+
# Tipo de Registro
|
45
|
+
# 1 posição
|
46
|
+
# valor padrão 1
|
47
|
+
#
|
48
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_008_a_008
|
49
|
+
subject.header_lote_posicao_008_a_008.must_equal '1'
|
50
|
+
end
|
51
|
+
|
52
|
+
# Tipo da Operação
|
53
|
+
# 1 posição
|
54
|
+
# Valor padrão R
|
55
|
+
#
|
56
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_009_a_009
|
57
|
+
subject.header_lote_posicao_009_a_009.must_equal "R"
|
58
|
+
end
|
59
|
+
|
60
|
+
# Tipo do Serviço
|
61
|
+
# 2 posições
|
62
|
+
# Valor padrão '01'
|
63
|
+
#
|
64
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_010_a_011
|
65
|
+
subject.header_lote_posicao_010_a_011.must_equal '01'
|
66
|
+
end
|
67
|
+
|
68
|
+
# Forma de Lançamento
|
69
|
+
# 2 posições
|
70
|
+
# Valor padrão '00'
|
71
|
+
#
|
72
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_012_a_013
|
73
|
+
subject.header_lote_posicao_012_a_013.must_equal '00'
|
74
|
+
end
|
75
|
+
|
76
|
+
# Nº da Versão do Layout do Lote
|
77
|
+
# 3 posições
|
78
|
+
# Deve pegar o valor do metodo "versao_layout_lote"
|
79
|
+
#
|
80
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_014_a_016
|
81
|
+
subject.expects(:versao_layout_lote).returns('versao_layout_lote')
|
82
|
+
subject.header_lote_posicao_014_a_016.must_equal "versao_layout_lote"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Uso Exclusivo da FEBRABAN/CNAB
|
86
|
+
# 1 posição
|
87
|
+
# Padrão valor em branco
|
88
|
+
#
|
89
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_017_a_017
|
90
|
+
subject.header_lote_posicao_017_a_017.must_equal ' '
|
91
|
+
end
|
92
|
+
|
93
|
+
# Tipo de Inscrição da Empresa
|
94
|
+
# 1 posição
|
95
|
+
# Deve pegar o valor do metodo "tipo_inscricao"
|
96
|
+
#
|
97
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_018_a_018
|
98
|
+
subject.expects(:tipo_inscricao).returns('tipo_inscricao')
|
99
|
+
subject.header_lote_posicao_018_a_018.must_equal 'tipo_inscricao'
|
100
|
+
end
|
101
|
+
|
102
|
+
# Número de Inscrição da Empresa
|
103
|
+
# 15 posições
|
104
|
+
# Deve pegar o valor do 'documento_cedente' e ajustar com 0 o espaço em branco
|
105
|
+
#
|
106
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_019_a_033
|
107
|
+
subject.expects(:documento_cedente).returns('1234567890')
|
108
|
+
subject.header_lote_posicao_019_a_033.must_equal '000001234567890'
|
109
|
+
end
|
110
|
+
|
111
|
+
# Convenio -> Código do Cedente no Banco
|
112
|
+
# 6 posições
|
113
|
+
# Deve pegar o valor do metodo 'convenio_lote'
|
114
|
+
#
|
115
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_034_a_053#lote
|
116
|
+
subject.expects(:convenio_lote).with(lote).returns('convenio_lote')
|
117
|
+
subject.header_lote_posicao_034_a_053(lote).must_equal 'convenio_lote'
|
118
|
+
end
|
119
|
+
|
120
|
+
# Informações da conta bancária
|
121
|
+
# O padrão da FEBRABAN é:
|
122
|
+
# Posição de 54 até 58 com 05 posições = Agência Mantenedora da Conta
|
123
|
+
# Posição de 59 até 59 com 01 posições = DV -> Dígito Verificador da Agência
|
124
|
+
# Posição de 60 até 71 com 12 posições = Conta -> Número Número da Conta Corrente
|
125
|
+
# Posição de 72 até 72 com 01 posições = DV -> Dígito Verificador da Conta
|
126
|
+
# Posição de 73 até 73 com 01 posições = DV -> Dígito Verificador da Ag/Conta
|
127
|
+
#
|
128
|
+
# Porém como no Brasil os bancos não conseguem seguir um padrão, cada banco faz da sua maneira
|
129
|
+
# 20 posições
|
130
|
+
# Deve pegar o valor do metodo 'informacoes_da_conta'
|
131
|
+
#
|
132
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_054_a_073
|
133
|
+
subject.expects(:informacoes_da_conta).returns('informacoes_da_conta')
|
134
|
+
subject.header_lote_posicao_054_a_073.must_equal 'informacoes_da_conta'
|
135
|
+
end
|
136
|
+
|
137
|
+
# Nome da Empresa
|
138
|
+
# 30 posições
|
139
|
+
# deve retornar o valor do metodo 'nome_empresa_formatada'
|
140
|
+
#
|
141
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_074_a_103
|
142
|
+
subject.expects(:nome_empresa_formatada).returns('nome_empresa_formatada')
|
143
|
+
subject.header_lote_posicao_074_a_103.must_equal 'nome_empresa_formatada'
|
144
|
+
end
|
145
|
+
|
146
|
+
# Mensagem 1
|
147
|
+
# 40 posições
|
148
|
+
# Deve pegar o valor da "mensagem_1" e ajsutar para 40 posiçoes
|
149
|
+
#
|
150
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_104_a_143
|
151
|
+
subject.expects(:mensagem_1).returns('mensagem_1')
|
152
|
+
subject.header_lote_posicao_104_a_143.must_equal 'mensagem_1'.ljust(40, ' ')
|
153
|
+
end
|
154
|
+
|
155
|
+
# Mensagem 2
|
156
|
+
# 40 posições
|
157
|
+
# Deve pegar o valor da "mensagem_2" e ajsutar para 40 posiçoes
|
158
|
+
#
|
159
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_144_a_183
|
160
|
+
subject.expects(:mensagem_2).returns('1111'.rjust(44, '2'))
|
161
|
+
subject.header_lote_posicao_144_a_183.must_equal ''.rjust(40, '2')
|
162
|
+
end
|
163
|
+
|
164
|
+
# Número Remessa/Retorno
|
165
|
+
# 8 posições
|
166
|
+
# Deve pegar o valor do metodo "sequencial_remessa" e ajustar para 8 posições com zero
|
167
|
+
#
|
168
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_184_a_191
|
169
|
+
subject.expects(:sequencial_remessa).returns("111")
|
170
|
+
subject.header_lote_posicao_184_a_191.must_equal "111".rjust(8, '0')
|
171
|
+
end
|
172
|
+
|
173
|
+
# Data de Gravação Remessa/Retorno
|
174
|
+
# 8 posições
|
175
|
+
# Deve retornar o valor do metodo "data_geracao"
|
176
|
+
#
|
177
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_192_a_199
|
178
|
+
subject.expects(:data_geracao).returns("data_geracao")
|
179
|
+
subject.header_lote_posicao_192_a_199.must_equal 'data_geracao'
|
180
|
+
end
|
181
|
+
|
182
|
+
# Data do Crédito
|
183
|
+
# 8 posições
|
184
|
+
# Deve conter 8 posições com zeros
|
185
|
+
#
|
186
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_200_a_207
|
187
|
+
subject.header_lote_posicao_200_a_207.must_equal ''.rjust(8, '0')
|
188
|
+
end
|
189
|
+
|
190
|
+
# Uso Exclusivo FEBRABAN/CNAB
|
191
|
+
# 33 posições
|
192
|
+
# Deve conter 33 posições em branco
|
193
|
+
#
|
194
|
+
def test_HeaderLoteTest_metodo_header_lote_posicao_208_a_240
|
195
|
+
subject.header_lote_posicao_208_a_240.must_equal ''.rjust(33, ' ')
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
end
|
200
|
+
end
|
@@ -0,0 +1,390 @@
|
|
1
|
+
module Helper
|
2
|
+
module SegmentoPTest
|
3
|
+
def test_SegmentoPTest_metodo_monta_segmento_p_deve_ter_o_conteudo_dos_metodos_na_sequencia
|
4
|
+
subject.stubs(:segmento_p_posicao_001_a_003).returns(" 001_a_003")
|
5
|
+
subject.stubs(:segmento_p_posicao_004_a_007).with(1).returns(" 004_a_007")
|
6
|
+
subject.stubs(:segmento_p_posicao_008_a_008).returns(" 008_a_008")
|
7
|
+
subject.stubs(:segmento_p_posicao_009_a_013).with(2).returns(" 009_a_013")
|
8
|
+
subject.stubs(:segmento_p_posicao_014_a_014).returns(" 014_a_014")
|
9
|
+
subject.stubs(:segmento_p_posicao_015_a_015).returns(" 015_a_015")
|
10
|
+
subject.stubs(:segmento_p_posicao_016_a_017).returns(" 016_a_017")
|
11
|
+
subject.stubs(:segmento_p_posicao_018_a_022).returns(" 018_a_022")
|
12
|
+
subject.stubs(:segmento_p_posicao_023_a_023).returns(" 023_a_023")
|
13
|
+
subject.stubs(:segmento_p_posicao_024_a_057).with(pagamento).returns(" 024_a_057")
|
14
|
+
subject.stubs(:segmento_p_posicao_058_a_058).returns(" 058_a_058")
|
15
|
+
subject.stubs(:segmento_p_posicao_059_a_059).returns(" 059_a_059")
|
16
|
+
subject.stubs(:segmento_p_posicao_060_a_060).returns(" 060_a_060")
|
17
|
+
subject.stubs(:segmento_p_posicao_061_a_061).returns(" 061_a_061")
|
18
|
+
subject.stubs(:segmento_p_posicao_062_a_062).returns(" 062_a_062")
|
19
|
+
subject.stubs(:segmento_p_posicao_063_a_077).with(pagamento).returns(" 063_a_077")
|
20
|
+
subject.stubs(:segmento_p_posicao_078_a_085).with(pagamento).returns(" 078_a_085")
|
21
|
+
subject.stubs(:segmento_p_posicao_086_a_100).with(pagamento).returns(" 086_a_100")
|
22
|
+
subject.stubs(:segmento_p_posicao_101_a_105).returns(" 101_a_105")
|
23
|
+
subject.stubs(:segmento_p_posicao_106_a_106).returns(" 106_a_106")
|
24
|
+
subject.stubs(:segmento_p_posicao_107_a_108).returns(" 107_a_108")
|
25
|
+
subject.stubs(:segmento_p_posicao_109_a_109).returns(" 109_a_109")
|
26
|
+
subject.stubs(:segmento_p_posicao_110_a_117).with(pagamento).returns(" 110_a_117")
|
27
|
+
subject.stubs(:segmento_p_posicao_118_a_118).returns(" 118_a_118")
|
28
|
+
subject.stubs(:segmento_p_posicao_119_a_126).returns(" 119_a_126")
|
29
|
+
subject.stubs(:segmento_p_posicao_127_a_141).returns(" 127_a_141")
|
30
|
+
subject.stubs(:segmento_p_posicao_142_a_142).with(pagamento).returns(" 142_a_142")
|
31
|
+
subject.stubs(:segmento_p_posicao_143_a_150).with(pagamento).returns(" 143_a_150")
|
32
|
+
subject.stubs(:segmento_p_posicao_151_a_165).with(pagamento).returns(" 151_a_165")
|
33
|
+
subject.stubs(:segmento_p_posicao_166_a_180).with(pagamento).returns(" 166_a_180")
|
34
|
+
subject.stubs(:segmento_p_posicao_181_a_195).with(pagamento).returns(" 181_a_195")
|
35
|
+
subject.stubs(:segmento_p_posicao_196_a_220).returns(" 196_a_220")
|
36
|
+
subject.stubs(:segmento_p_posicao_221_a_221).returns(" 221_a_221")
|
37
|
+
subject.stubs(:segmento_p_posicao_222_a_223).returns(" 222_a_223")
|
38
|
+
subject.stubs(:segmento_p_posicao_224_a_224).returns(" 224_a_224")
|
39
|
+
subject.stubs(:segmento_p_posicao_225_a_227).returns(" 225_a_227")
|
40
|
+
subject.stubs(:segmento_p_posicao_228_a_229).returns(" 228_a_229")
|
41
|
+
subject.stubs(:segmento_p_posicao_230_a_239).returns(" 230_a_239")
|
42
|
+
subject.stubs(:segmento_p_posicao_240_a_240).returns(" 240_a_240")
|
43
|
+
# Deve dar um upcase
|
44
|
+
subject.monta_segmento_p(pagamento, 1, 2).must_equal(" 001_A_003 004_A_007 008_A_008 009_A_013 014_A_014 015_A_015 016_A_017 018_A_022 023_A_023 024_A_057 058_A_058 059_A_059 060_A_060 061_A_061 062_A_062 063_A_077 078_A_085 086_A_100 101_A_105 106_A_106 107_A_108 109_A_109 110_A_117 118_A_118 119_A_126 127_A_141 142_A_142 143_A_150 151_A_165 166_A_180 181_A_195 196_A_220 221_A_221 222_A_223 224_A_224 225_A_227 228_A_229 230_A_239 240_A_240")
|
45
|
+
end
|
46
|
+
|
47
|
+
# Código do banco
|
48
|
+
# 3 posições
|
49
|
+
# Por padrão deve retornar o "codigo_banco"
|
50
|
+
#
|
51
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_001_a_003
|
52
|
+
subject.expects(:codigo_banco).returns("669")
|
53
|
+
subject.segmento_p_posicao_001_a_003.must_equal("669")
|
54
|
+
end
|
55
|
+
|
56
|
+
# Lote de Serviço: Número seqüencial para identificar univocamente um lote de serviço.
|
57
|
+
# Criado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo.
|
58
|
+
# Preencher com '0001' para o primeiro lote do arquivo.
|
59
|
+
# Para os demais: número do lote anterior acrescido de 1. O número não poderá ser repetido dentro do arquivo.
|
60
|
+
# 4 posições
|
61
|
+
# Padrão recebe o nro do lote por parametro e ajusta para 4 caracteres
|
62
|
+
#
|
63
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_004_a_007
|
64
|
+
subject.segmento_p_posicao_004_a_007(5).to_s.rjust(4, '0')
|
65
|
+
end
|
66
|
+
|
67
|
+
# Tipo do registro -> Padrão 3
|
68
|
+
# 1 posição
|
69
|
+
# Por padrão retorna '3'
|
70
|
+
#
|
71
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_008_a_008
|
72
|
+
subject.segmento_p_posicao_008_a_008.must_equal '3'
|
73
|
+
end
|
74
|
+
|
75
|
+
# Nº Sequencial do Registro no Lote:
|
76
|
+
# Número adotado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo,
|
77
|
+
# para identificar a seqüência de registros encaminhados no lote.
|
78
|
+
# Deve ser inicializado sempre em '1', em cada novo lote.
|
79
|
+
# 5 posições
|
80
|
+
# recebe o sequencial por parâmetro e ajusta para 5 posições incluindo 0 na frente
|
81
|
+
#
|
82
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_009_a_013
|
83
|
+
subject.segmento_p_posicao_009_a_013(88).must_equal '00088'
|
84
|
+
end
|
85
|
+
|
86
|
+
# Cód. Segmento do Registro - Default: "P"
|
87
|
+
# 1 posição
|
88
|
+
# Por padrão é a letra P
|
89
|
+
#
|
90
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_014_a_014
|
91
|
+
subject.segmento_p_posicao_014_a_014.must_equal "P"
|
92
|
+
end
|
93
|
+
|
94
|
+
# Uso Exclusivo FEBRABAN/CNAB
|
95
|
+
# 1 posição
|
96
|
+
# Por padrão é valor em branco
|
97
|
+
#
|
98
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_015_a_015
|
99
|
+
subject.segmento_p_posicao_015_a_015.must_equal ' '
|
100
|
+
end
|
101
|
+
|
102
|
+
# cod. movimento remessa -> Padrão 01 = Entrada de Titulos
|
103
|
+
# 2 posições
|
104
|
+
# Por padrão é o valor '01'
|
105
|
+
#
|
106
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_016_a_017
|
107
|
+
subject.segmento_p_posicao_016_a_017.must_equal '01'
|
108
|
+
end
|
109
|
+
|
110
|
+
# Agência Mantenedora da Conta
|
111
|
+
# 5 posições
|
112
|
+
# Deve pegar a "agencia" e ajustar para 5 caracteres incluindo 0 na frente
|
113
|
+
#
|
114
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_018_a_022
|
115
|
+
subject.expects(:agencia).returns(89)
|
116
|
+
subject.segmento_p_posicao_018_a_022.must_equal '00089'
|
117
|
+
end
|
118
|
+
|
119
|
+
# Dígito Verificador da Agência
|
120
|
+
# 1 posição
|
121
|
+
# Deve pegar o "digito_agencia"
|
122
|
+
#
|
123
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_023_a_023
|
124
|
+
subject.expects(:digito_agencia).returns(1)
|
125
|
+
subject.segmento_p_posicao_023_a_023.must_equal '1'
|
126
|
+
end
|
127
|
+
|
128
|
+
# O padrão da FEBRABAN é:
|
129
|
+
# Posição de 24 até 35 com 12 posições = Número da Conta Corrente
|
130
|
+
# Posição de 36 até 36 com 01 posições = DV -> Dígito Verificador da Conta
|
131
|
+
# Posição de 37 até 37 com 01 posições = DV -> Dígito Verificador da Ag/Conta
|
132
|
+
# Posição de 38 até 57 com 20 posições = Nosso Número -> Identificação do Título no Banco
|
133
|
+
# Mas cada banco tem seu padrão
|
134
|
+
# 34 posições
|
135
|
+
# Deve pegar o "complemento_p" passando o "pagamento" por parametro
|
136
|
+
#
|
137
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_024_a_057
|
138
|
+
subject.expects(:complemento_p).with('pagamento').returns("complemento_p")
|
139
|
+
subject.segmento_p_posicao_024_a_057('pagamento').must_equal 'complemento_p'
|
140
|
+
end
|
141
|
+
|
142
|
+
# Código da carteira
|
143
|
+
# 1 posição
|
144
|
+
# Deve pegar o valor do metodo "codigo_carteira"
|
145
|
+
#
|
146
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_058_a_058
|
147
|
+
subject.expects(:codigo_carteira).returns('3')
|
148
|
+
subject.segmento_p_posicao_058_a_058.must_equal '3'
|
149
|
+
end
|
150
|
+
|
151
|
+
# Forma de Cadastr. do Título no Banco
|
152
|
+
# 1 posição
|
153
|
+
# Deve pegar o valor da "forma_cadastramento"
|
154
|
+
#
|
155
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_059_a_059
|
156
|
+
subject.expects(:forma_cadastramento).returns('123')
|
157
|
+
subject.segmento_p_posicao_059_a_059.must_equal '123'
|
158
|
+
end
|
159
|
+
|
160
|
+
# Tipo de Documento
|
161
|
+
# 1 posição
|
162
|
+
# Retorna o valor '2' por padrão
|
163
|
+
#
|
164
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_060_a_060
|
165
|
+
subject.segmento_p_posicao_060_a_060.must_equal '2'
|
166
|
+
end
|
167
|
+
|
168
|
+
# Identificação da Emissão do Bloqueto
|
169
|
+
# 1 posição
|
170
|
+
# Deve pegar o valor do metodo "emissao_boleto"
|
171
|
+
#
|
172
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_061_a_061
|
173
|
+
subject.expects(:emissao_boleto).returns('123')
|
174
|
+
subject.segmento_p_posicao_061_a_061.must_equal '123'
|
175
|
+
end
|
176
|
+
|
177
|
+
# Identificação da Distribuição
|
178
|
+
# 1 posição
|
179
|
+
# Deve pegar o valor do metodo "distribuicao_boleto"
|
180
|
+
#
|
181
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_062_a_062
|
182
|
+
subject.expects(:distribuicao_boleto).returns('distribuicao_boleto')
|
183
|
+
subject.segmento_p_posicao_062_a_062.must_equal 'distribuicao_boleto'
|
184
|
+
end
|
185
|
+
|
186
|
+
# Número do Documento de Cobrança
|
187
|
+
# Cada banco tem seu padrão
|
188
|
+
# 15 Posições
|
189
|
+
# Deve retornar o valor do metodo "segmento_p_numero_do_documento" com o pagamento
|
190
|
+
#
|
191
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_063_a_077#(pagamento)
|
192
|
+
subject.expects(:segmento_p_numero_do_documento).with('pagamento').returns('vpagamento')
|
193
|
+
subject.segmento_p_posicao_063_a_077('pagamento').must_equal 'vpagamento'
|
194
|
+
end
|
195
|
+
|
196
|
+
# Data de Vencimento do Título
|
197
|
+
# 8 posições
|
198
|
+
# Deve retornar a "data_vencimento" formatada do pagamento
|
199
|
+
#
|
200
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_078_a_085#(pagamento)
|
201
|
+
pagamento.data_vencimento = Date.today
|
202
|
+
subject.segmento_p_posicao_078_a_085(pagamento).must_equal Date.today.strftime('%d%m%Y')
|
203
|
+
end
|
204
|
+
|
205
|
+
# Valor Nominal do Título
|
206
|
+
# 15 posições (13 posições para valor inteiro e 2 posições para valor quebrado)
|
207
|
+
# Deve retornar o "valor_documento_formatado" com 15 posições
|
208
|
+
#
|
209
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_086_a_100#(pagamento)
|
210
|
+
pagamento.expects(:valor_documento_formatado).with(15).returns("123456789")
|
211
|
+
subject.segmento_p_posicao_086_a_100(pagamento).must_equal '123456789'
|
212
|
+
end
|
213
|
+
|
214
|
+
# Agencia cobradora
|
215
|
+
# 5 posições
|
216
|
+
# Por padrão é 5 posições em branco
|
217
|
+
#
|
218
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_101_a_105
|
219
|
+
subject.segmento_p_posicao_101_a_105.must_equal ''.rjust(5, '0')
|
220
|
+
end
|
221
|
+
|
222
|
+
# Dígito Verificador da Agência cobradora
|
223
|
+
# 1 posição
|
224
|
+
# Padrão é valor em branco
|
225
|
+
#
|
226
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_106_a_106
|
227
|
+
subject.segmento_p_posicao_106_a_106.must_equal ' '
|
228
|
+
end
|
229
|
+
|
230
|
+
# Espécie do Título
|
231
|
+
# 2 posições
|
232
|
+
# Deve retornar o valro do metodo "especie_titulo"
|
233
|
+
#
|
234
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_107_a_108
|
235
|
+
subject.expects(:especie_titulo).returns('123')
|
236
|
+
subject.segmento_p_posicao_107_a_108 .must_equal '123'
|
237
|
+
end
|
238
|
+
|
239
|
+
# Identific. de Título Aceito/Não Aceito (A ou N)
|
240
|
+
# 1 posição
|
241
|
+
# Deve retornar o valor do "aceite"
|
242
|
+
#
|
243
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_109_a_109
|
244
|
+
subject.expects(:aceite).returns('1')
|
245
|
+
subject.segmento_p_posicao_109_a_109.must_equal '1'
|
246
|
+
end
|
247
|
+
|
248
|
+
# Data da Emissão do Título
|
249
|
+
# 8 posições
|
250
|
+
# deve pegar a "data_emissao" do pagamento e formatar
|
251
|
+
#
|
252
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_110_a_117#(pagamento)
|
253
|
+
pagamento.data_emissao = Date.today
|
254
|
+
subject.segmento_p_posicao_110_a_117(pagamento).must_equal Date.today.strftime('%d%m%Y')
|
255
|
+
end
|
256
|
+
|
257
|
+
# Código do Juros de Mora
|
258
|
+
# 1 posição
|
259
|
+
# Por padrão é o valor '0'
|
260
|
+
#
|
261
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_118_a_118
|
262
|
+
subject.segmento_p_posicao_118_a_118 .must_equal '0'
|
263
|
+
end
|
264
|
+
|
265
|
+
# Data do Juros de Mora
|
266
|
+
# 8 posições
|
267
|
+
# Por padrão é 8 posições em branco
|
268
|
+
#
|
269
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_119_a_126
|
270
|
+
subject.segmento_p_posicao_119_a_126.must_equal ''.rjust(8, '0')
|
271
|
+
end
|
272
|
+
|
273
|
+
# Juros de Mora por Dia/Taxa
|
274
|
+
# 15 posições
|
275
|
+
# Por padrão é 15 posições em branco
|
276
|
+
#
|
277
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_127_a_141
|
278
|
+
subject.segmento_p_posicao_127_a_141.must_equal ''.rjust(15, '0')
|
279
|
+
end
|
280
|
+
|
281
|
+
# Código do Desconto 1
|
282
|
+
# 1 posição
|
283
|
+
# Deve pegar o "cod_desconto" do pagamento
|
284
|
+
#
|
285
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_142_a_142#(pagamento)
|
286
|
+
pagamento.expects(:cod_desconto).returns('123')
|
287
|
+
subject.segmento_p_posicao_142_a_142(pagamento).must_equal '123'
|
288
|
+
end
|
289
|
+
|
290
|
+
# Data do Desconto 1
|
291
|
+
# 8 posições
|
292
|
+
# Deve retornar a "data_desconto_formatado" com formato ddmmyyyy do pagamento
|
293
|
+
#
|
294
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_143_a_150#(pagamento)
|
295
|
+
pagamento.expects(:data_desconto_formatado).with('%d%m%Y').returns('12345678')
|
296
|
+
subject.segmento_p_posicao_143_a_150(pagamento).must_equal '12345678'
|
297
|
+
end
|
298
|
+
|
299
|
+
# Valor/Percentual a ser Concedido
|
300
|
+
# 15 posições
|
301
|
+
# Deve trazer o 'valor_desconto_formatado' com 15 posições do pagamento
|
302
|
+
#
|
303
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_151_a_165#(pagamento)
|
304
|
+
pagamento.expects(:valor_desconto_formatado).with(15).returns('132')
|
305
|
+
subject.segmento_p_posicao_151_a_165(pagamento).must_equal '132'
|
306
|
+
end
|
307
|
+
|
308
|
+
# Valor do IOF a ser Recolhido
|
309
|
+
# 15 posições
|
310
|
+
# Deve retornar o "valor_iof_formatado" com 15 posições do pagamento
|
311
|
+
#
|
312
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_166_a_180#(pagamento)
|
313
|
+
pagamento.expects(:valor_iof_formatado).with(15).returns('123')
|
314
|
+
subject.segmento_p_posicao_166_a_180(pagamento).must_equal '123'
|
315
|
+
end
|
316
|
+
|
317
|
+
# Valor do Abatimento
|
318
|
+
# 15 posições
|
319
|
+
# Deve retornar o "valor_abatimento_formatado" com 15 posições do pagamento
|
320
|
+
#
|
321
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_181_a_195#(pagamento)
|
322
|
+
pagamento.expects(:valor_abatimento_formatado).with(15).returns('123')
|
323
|
+
subject.segmento_p_posicao_181_a_195(pagamento).must_equal '123'
|
324
|
+
end
|
325
|
+
|
326
|
+
# Identificação do Título na Empresa
|
327
|
+
# 25 posições
|
328
|
+
# Deve retornar 25 posições em branco
|
329
|
+
#
|
330
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_196_a_220
|
331
|
+
subject.segmento_p_posicao_196_a_220.must_equal ''.rjust(25, ' ')
|
332
|
+
end
|
333
|
+
|
334
|
+
# Código para Protesto
|
335
|
+
# 1 posição
|
336
|
+
# Por padrão é o valor '1'
|
337
|
+
#
|
338
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_221_a_221
|
339
|
+
subject.segmento_p_posicao_221_a_221 .must_equal '1'
|
340
|
+
end
|
341
|
+
|
342
|
+
# Número de Dias para Protesto
|
343
|
+
# 2 posições
|
344
|
+
# Por padrão é o valor '00'
|
345
|
+
#
|
346
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_222_a_223
|
347
|
+
subject.segmento_p_posicao_222_a_223.must_equal '00'
|
348
|
+
end
|
349
|
+
|
350
|
+
# Código para Baixa/Devolução
|
351
|
+
# 1 posição
|
352
|
+
# Por padrão é o valor '0'
|
353
|
+
#
|
354
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_224_a_224
|
355
|
+
subject.segmento_p_posicao_224_a_224.must_equal '0'
|
356
|
+
end
|
357
|
+
|
358
|
+
# Número de Dias para Baixa/Devolução
|
359
|
+
# 3 posoções
|
360
|
+
# Por padrão é o valor '000'
|
361
|
+
#
|
362
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_225_a_227
|
363
|
+
subject.segmento_p_posicao_225_a_227.must_equal '000'
|
364
|
+
end
|
365
|
+
|
366
|
+
# Código da Moeda (09 para real)
|
367
|
+
# 2 posições
|
368
|
+
# Por padrão é o valor '09'
|
369
|
+
#
|
370
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_228_a_229
|
371
|
+
subject.segmento_p_posicao_228_a_229.must_equal '09'
|
372
|
+
end
|
373
|
+
|
374
|
+
# Nº do Contrato da Operação de Crédito (Uso do banco)
|
375
|
+
# 10 posições
|
376
|
+
# Por padrão é 10 pposições em branco
|
377
|
+
#
|
378
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_230_a_239
|
379
|
+
subject.segmento_p_posicao_230_a_239.must_equal ''.rjust(10, '0')
|
380
|
+
end
|
381
|
+
|
382
|
+
# Uso livre banco/empresa ou autorização de pagamento parcial
|
383
|
+
# 1 posição
|
384
|
+
# Por padrão é 1 campo em branco
|
385
|
+
#
|
386
|
+
def test_SegmentoPTest_metodo_segmento_p_posicao_240_a_240
|
387
|
+
subject.segmento_p_posicao_240_a_240.must_equal ' '
|
388
|
+
end
|
389
|
+
end
|
390
|
+
end
|