br_boleto 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|