br_boleto 2.0.1 → 2.1.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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.travis.yml +1 -1
  4. data/Gemfile.lock +2 -2
  5. data/br_boleto.gemspec +2 -3
  6. data/lib/br_boleto/association/have_conta.rb +27 -25
  7. data/lib/br_boleto/association/have_pagador.rb +2 -0
  8. data/lib/br_boleto/boleto/base.rb +0 -4
  9. data/lib/br_boleto/boleto/bradesco.rb +80 -0
  10. data/lib/br_boleto/boleto/caixa.rb +10 -12
  11. data/lib/br_boleto/boleto/cecred.rb +76 -0
  12. data/lib/br_boleto/boleto/itau.rb +114 -0
  13. data/lib/br_boleto/boleto/sicredi.rb +101 -0
  14. data/lib/br_boleto/boleto/unicred.rb +21 -0
  15. data/lib/br_boleto/conta/base.rb +28 -3
  16. data/lib/br_boleto/conta/bradesco.rb +120 -0
  17. data/lib/br_boleto/conta/caixa.rb +22 -12
  18. data/lib/br_boleto/conta/cecred.rb +67 -0
  19. data/lib/br_boleto/conta/itau.rb +199 -0
  20. data/lib/br_boleto/conta/sicoob.rb +40 -11
  21. data/lib/br_boleto/conta/sicredi.rb +171 -0
  22. data/lib/br_boleto/conta/unicred.rb +38 -0
  23. data/lib/br_boleto/helper/default_codes.rb +535 -26
  24. data/lib/br_boleto/pagador.rb +4 -0
  25. data/lib/br_boleto/remessa/base.rb +2 -0
  26. data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
  27. data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
  28. data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
  29. data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
  30. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
  31. data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
  32. data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
  33. data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
  34. data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
  35. data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
  36. data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
  37. data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
  38. data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
  39. data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
  40. data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
  41. data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
  42. data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
  43. data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
  44. data/lib/br_boleto/remessa/pagamento.rb +93 -43
  45. data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
  46. data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
  47. data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
  48. data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
  49. data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
  50. data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
  51. data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
  52. data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
  53. data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
  54. data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
  55. data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
  56. data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
  57. data/lib/br_boleto/retorno/pagamento.rb +18 -4
  58. data/lib/br_boleto/version.rb +2 -2
  59. data/lib/br_boleto.rb +28 -0
  60. data/lib/config/locales/br-boleto-en.yml +1 -0
  61. data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
  62. data/test/br_boleto/association/have_pagador_test.rb +24 -0
  63. data/test/br_boleto/boleto/bradesco_test.rb +125 -0
  64. data/test/br_boleto/boleto/caixa_test.rb +18 -18
  65. data/test/br_boleto/boleto/cecred_test.rb +115 -0
  66. data/test/br_boleto/boleto/itau_test.rb +160 -0
  67. data/test/br_boleto/boleto/sicredi_test.rb +136 -0
  68. data/test/br_boleto/boleto/unicred_test.rb +128 -0
  69. data/test/br_boleto/conta/base_test.rb +298 -3
  70. data/test/br_boleto/conta/bradesco_test.rb +142 -0
  71. data/test/br_boleto/conta/caixa_test.rb +7 -6
  72. data/test/br_boleto/conta/cecred_test.rb +119 -0
  73. data/test/br_boleto/conta/itau_test.rb +189 -0
  74. data/test/br_boleto/conta/sicoob_test.rb +32 -2
  75. data/test/br_boleto/conta/sicredi_test.rb +180 -0
  76. data/test/br_boleto/conta/unicred_test.rb +154 -0
  77. data/test/br_boleto/pagador_test.rb +22 -2
  78. data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
  79. data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
  80. data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
  81. data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
  82. data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
  83. data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
  84. data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
  85. data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
  86. data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
  87. data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
  88. data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
  89. data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
  90. data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
  91. data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
  92. data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
  93. data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
  94. data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
  95. data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
  96. data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
  97. data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
  98. data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
  99. data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
  100. data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
  101. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
  102. data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
  103. data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
  104. data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
  105. data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
  106. data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
  107. data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
  108. data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
  109. data/test/br_boleto/retorno/pagamento_test.rb +7 -0
  110. data/test/factories/boleto/boleto_bradesco.rb +18 -0
  111. data/test/factories/boleto/boleto_cecred.rb +18 -0
  112. data/test/factories/boleto/boleto_itau.rb +18 -0
  113. data/test/factories/boleto/boleto_sicredi.rb +18 -0
  114. data/test/factories/boleto/boleto_unicred.rb +18 -0
  115. data/test/factories/conta/bradesco.rb +16 -0
  116. data/test/factories/conta/caixa.rb +2 -1
  117. data/test/factories/conta/cecred.rb +15 -0
  118. data/test/factories/conta/itau.rb +15 -0
  119. data/test/factories/conta/sicoob.rb +2 -1
  120. data/test/factories/conta/sicredi.rb +15 -0
  121. data/test/factories/conta/unicred.rb +15 -0
  122. data/test/factories/remessa/cnab240/bradesco.rb +9 -0
  123. data/test/factories/remessa/cnab240/cecred.rb +9 -0
  124. data/test/factories/remessa/cnab240/itau.rb +9 -0
  125. data/test/factories/remessa/cnab240/sicredi.rb +9 -0
  126. data/test/factories/remessa/cnab240/unicred.rb +9 -0
  127. data/test/factories/remessa/cnab400/bradesco.rb +8 -0
  128. data/test/factories/remessa/cnab400/itau.rb +8 -0
  129. data/test/factories/remessa/cnab400/sicredi.rb +8 -0
  130. data/test/factories/remessa/cnab400/unicred.rb +8 -0
  131. data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
  132. data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
  133. data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
  134. data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
  135. data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
  136. data/test/fixtures/retorno/cnab400/itau.ret +54 -0
  137. metadata +138 -3
@@ -0,0 +1,186 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab240
5
+ class Itau < BrBoleto::Remessa::Cnab240::Base
6
+ def conta_class
7
+ BrBoleto::Conta::Itau
8
+ end
9
+
10
+ ########################### HEADER ARQUIVO #############################
11
+ #
12
+ # Informação da conta
13
+ # DESCRIÇÃO TAMANHO POSIÇÃO
14
+ # ---------------------------------------------------------
15
+ # Complemento Registro (Zero) 01 53 - 53
16
+ # Agencia 04 54 - 57
17
+ # Complemento Registro (Branco) 01 58 - 58
18
+ # Complemento Registro (Zeros) 07 59 - 65
19
+ # Conta Corrente 05 66 - 70
20
+ # Complemento Registro (Branco) 01 71 - 71
21
+ # DV da Conta 01 72 - 72
22
+ #
23
+ # TOTAL = 20 posições
24
+ def informacoes_da_conta
25
+ informacoes = ''.rjust(1, '0')
26
+ informacoes << "#{conta.agencia}".adjust_size_to(4, '0', :right)
27
+ informacoes << ''.rjust(1)
28
+ informacoes << ''.rjust(7, '0')
29
+ informacoes << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right)
30
+ informacoes << ''.rjust(1)
31
+ informacoes << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0')
32
+ informacoes
33
+ end
34
+
35
+ # Espaço reservado para o Banco
36
+ # Para o Itau esse espaço deve ter 'Brancos'
37
+ # 54 posições
38
+ def header_arquivo_posicao_172_a_225
39
+ ''.rjust(54)
40
+ end
41
+ def header_arquivo_posicao_172_a_191
42
+ header_arquivo_posicao_172_a_225
43
+ end
44
+ def header_arquivo_posicao_192_a_211
45
+ ''
46
+ end
47
+
48
+ # Posição 226 a 228 do Header do Arquivo
49
+ # Para o Itau esse espaço deve ter 'Zeros'
50
+ # 3 posições
51
+ def header_posicao_226_a_228
52
+ ''.rjust(3, '0')
53
+ end
54
+
55
+ # Posição 229 a 240 do Header do Arquivo
56
+ # Para o Itau esse espaço deve ter 'Brancos'
57
+ # 12 posições
58
+ def header_posicao_229_a_240
59
+ ''.rjust(12)
60
+ end
61
+
62
+ def complemento_header_arquivo
63
+ "#{header_posicao_226_a_228}#{header_posicao_229_a_240}"
64
+ end
65
+
66
+ ########################### HEADER LOTE #############################
67
+ #
68
+ # COMPLEMENTO DE REGISTRO
69
+ # Para o Itau esse espaço deve ter 'Brancos'
70
+ # 20 posições
71
+ def codigo_convenio
72
+ ''.adjust_size_to(20)
73
+ end
74
+ def convenio_lote(lote)
75
+ codigo_convenio
76
+ end
77
+
78
+ ######################### SEGMENTO P #############################
79
+ #
80
+ # segmento_p_posicao_024_a_057
81
+ # DESCRIÇÃO TAMANHO POSIÇÃO
82
+ # -----------------------------------------------------------
83
+ # COMPLEMENTO DE REGISTRO (ZEROS) 07 24 - 30
84
+ # NÚMERO DA CONTA CORRENTE 05 31 - 35
85
+ # COMPLEMENTO DE REGISTRO (BRANCO) 01 36 - 36
86
+ # DV AG./CONTA EMPRESA 01 37 - 37
87
+ # NÚMERO DA CARTEIRA 03 38 - 40
88
+ # NÚMERO DOCUMENTO 08 41 - 48
89
+ # NOSSO NÚMERO DV 01 49 - 49
90
+ # COMPLEMENTO DE REGISTRO (BRANCOS) 08 50 - 57
91
+ #
92
+ # TOTAL = 34 posições
93
+ def complemento_p(pagamento)
94
+ complemento = ''.adjust_size_to(7, '0', :right)
95
+ complemento << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right)
96
+ complemento << ''.rjust(1)
97
+ complemento << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
98
+ complemento << "#{conta.carteira}".adjust_size_to(3, '0', :right)
99
+ complemento << "#{pagamento.numero_documento}".adjust_size_to(8, '0', :right)
100
+ complemento << "#{pagamento.nosso_numero}".split('').last
101
+ complemento << ''.rjust(8)
102
+ complemento
103
+ end
104
+
105
+ # Segmento P posição 059 a 062
106
+ # Para o Itau esse espaço deve ter 'Zeros'
107
+ # 5 posições
108
+ def segmento_p_posicao_058_a_062
109
+ ''.rjust(5, '0')
110
+ end
111
+ def segmento_p_posicao_058_a_058
112
+ segmento_p_posicao_058_a_062
113
+ end
114
+ def segmento_p_posicao_059_a_059(pagamento)
115
+ ''
116
+ end
117
+ def segmento_p_posicao_060_a_060
118
+ ''
119
+ end
120
+ def segmento_p_posicao_061_a_061(pagamento)
121
+ ''
122
+ end
123
+ def segmento_p_posicao_062_a_062(pagamento)
124
+ ''
125
+ end
126
+
127
+ # segmento_p_posicao_063_a_077
128
+ # DESCRIÇÃO TAMANHO POSIÇÃO
129
+ # ---------------------------------------------------------
130
+ # Número Doc. 10 63 - 72
131
+ # Brancos 05 73 - 77
132
+ # TOTAL = 15 posições
133
+ def segmento_p_numero_do_documento(pagamento)
134
+ segmento = "#{pagamento.numero_documento}".adjust_size_to(10, '0', :right)
135
+ segmento << ''.rjust(5)
136
+ segmento
137
+ end
138
+
139
+ # Código do Juros de Mora
140
+ # Para o Itau esse espaço deve ter 'Zero'
141
+ # 1 posição
142
+ def segmento_p_posicao_118_a_118(pagamento)
143
+ '0'
144
+ end
145
+
146
+
147
+ # Código da Moeda
148
+ # Para o Itau esse espaço deve ter 'Zeros'
149
+ # 2 posições
150
+ def segmento_p_posicao_228_a_229(pagamento)
151
+ '00'
152
+ end
153
+
154
+ ######################### SEGMENTO R #############################
155
+ # Codigo da multa
156
+ def segmento_r_posicao_066_a_066(pagamento)
157
+ "#{conta.get_codigo_multa('0')}".adjust_size_to(1, '0')
158
+ end
159
+
160
+ ######################### TRAILER LOTE #############################
161
+ #
162
+ # trailer_lote_posicao_024_a_240(lote, nr_lote)
163
+ # DESCRIÇÃO TAMANHO POSIÇÃO
164
+ # ----------------------------------------------------------------
165
+ # Qtd. Títulos em Cobrança 006 024 - 029
166
+ # Val. Tot. Títulos em Carteiras 017 030 - 046
167
+ # Qtd. Títulos em Cobrança 006 047 - 052
168
+ # Val. Tot. Títulos em Carteiras 017 053 - 069
169
+ # Complemento De Registro (Zeros) 046 070 - 115
170
+ # N. Aviso de Lançamento 008 116 - 123
171
+ # Uso FEBRABAN 117 124 - 240
172
+ #
173
+ # TOTAL = 217 posições
174
+ #
175
+ def complemento_trailer_lote(lote, nr_lote)
176
+ complemento = ''
177
+ complemento << ''.rjust(92, '0') # VALORES UTILIZADOS APENAS PARA ARQUIVO DE RETORNO
178
+ complemento << ''.rjust(8, '0') # Número do aviso de lançamento do crédito referente a(os) título(s) de cobrança, que poderá ser utilizado no extrato de conta corrente.
179
+ complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
180
+ complemento
181
+ end
182
+
183
+ end
184
+ end
185
+ end
186
+ end
@@ -239,24 +239,12 @@ module BrBoleto
239
239
  ''.rjust(117, ' ')
240
240
  end
241
241
 
242
- # Codigo da multa
243
- # Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento)
244
- # Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento)
242
+ # Código para Protesto
243
+ # Padrão do SICOOB '1' = Protestar Dias Corridos
245
244
  # 1 posição
246
245
  #
247
- def segmento_r_posicao_066_a_066(pagamento)
248
- cod = "#{pagamento.codigo_multa}".adjust_size_to(1, '0')
249
- cod.in?(['1','2']) ? cod : '0'
250
- end
251
-
252
- # Codigo do Juros
253
- # Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento)
254
- # Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento)
255
- # 1 posição
256
- #
257
- def segmento_p_posicao_118_a_118(pagamento)
258
- cod = "#{pagamento.codigo_juros}".adjust_size_to(1, '0')
259
- cod.in?(['1','2']) ? cod : '0'
246
+ def segmento_p_posicao_221_a_221(pagamento)
247
+ '1'
260
248
  end
261
249
 
262
250
  end
@@ -0,0 +1,205 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab240
5
+ class Sicredi < BrBoleto::Remessa::Cnab240::Base
6
+ def conta_class
7
+ BrBoleto::Conta::Sicredi
8
+ end
9
+
10
+ ########################### HEADER ARQUIVO #############################
11
+
12
+ # DESCRIÇÃO TAMANHO POSIÇÃO
13
+ # ---------------------------------------------------------
14
+ # Cód. Cedente (convênio) 20 33-52
15
+ # TOTAL = 20 posições
16
+ def codigo_convenio
17
+ ''.adjust_size_to(20)
18
+ end
19
+
20
+ # Informação da conta
21
+ # DESCRIÇÃO TAMANHO POSIÇÃO
22
+ # ---------------------------------------------------------
23
+ # agencia 05 53 - 57
24
+ # digito Verif. agencia 01 58 - 58
25
+ # Número da Conta Corrente 12 59 - 70
26
+ # DV da Conta 01 71 - 71
27
+ # Branco 01 72 - 72
28
+ #
29
+ # TOTAL = 20 posições
30
+ def informacoes_da_conta
31
+ informacoes = "#{conta.agencia}".adjust_size_to(5, '0', :right)
32
+ informacoes << ''.adjust_size_to(1)
33
+ informacoes << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
34
+ informacoes << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
35
+ informacoes << ''.adjust_size_to(1)
36
+ informacoes.adjust_size_to(20, '0')
37
+ end
38
+
39
+ # Densidade de gravação (BPI), do arquivo encaminhado.
40
+ def header_arquivo_posicao_167_a_171
41
+ '01600'
42
+ end
43
+
44
+ # Para uso reservado do Banco
45
+ # Para o Sicredi esse espaço deve ter 'Brancos'
46
+ # 20 posições
47
+ def header_arquivo_posicao_172_a_191
48
+ ''.rjust(20, ' ')
49
+ end
50
+
51
+ # Para uso reservado da Empresa
52
+ # Para o Sicredi esse espaço deve ter 'Brancos'
53
+ # 20 posições
54
+ def header_arquivo_posicao_192_a_211
55
+ ''.rjust(20, ' ')
56
+ end
57
+
58
+ # Uso exclusivo FEBRABAN/CNAB
59
+ # Para o Sicredi esse espaço deve ter 'Brancos'
60
+ # TOTAL = 29 posições
61
+ def complemento_header_arquivo
62
+ ''.rjust(29, ' ')
63
+ end
64
+
65
+ ############################ HEADER LOTE ###############################
66
+
67
+ # Uso exclusivo FEBRABAN/CNAB
68
+ # Para o Sicredi esse espaço deve ter 'Brancos'
69
+ # 2 posições
70
+ def header_lote_posicao_012_a_013
71
+ ''.rjust(2, ' ')
72
+ end
73
+
74
+ # DESCRIÇÃO TAMANHO POSIÇÃO
75
+ # ---------------------------------------------------------
76
+ # Cód. Cedente (convênio) 20 34-53
77
+ # TOTAL = 20 posições
78
+ def convenio_lote(lote)
79
+ ''.rjust(20, ' ')
80
+ end
81
+
82
+ ############################ SEGMENTO P ################################
83
+
84
+ # Dígito Verificador da Agência
85
+ def segmento_p_posicao_023_a_023
86
+ ''.adjust_size_to(1)
87
+ end
88
+
89
+ # Forma de Cadastr. do Título no Banco
90
+ def segmento_p_posicao_059_a_059(pagamento)
91
+ '1'
92
+ end
93
+
94
+ # segmento_p_posicao_024_a_057
95
+ # DESCRIÇÃO TAMANHO POSIÇÃO
96
+ # ---------------------------------------------------------
97
+ # Número da Conta Corrente 12 24 - 35
98
+ # DV da Conta 01 36 - 36
99
+ # Branco 01 37 - 37
100
+ # Nosso número 20 38 - 57
101
+ #
102
+ # TOTAL = 34 posições
103
+ def complemento_p(pagamento)
104
+ complemento = ''
105
+ complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
106
+ complemento << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
107
+ complemento << ''.adjust_size_to(1)
108
+ complemento << "#{pagamento.nosso_numero}".adjust_size_to(20)
109
+ complemento.adjust_size_to(34, '0')
110
+ end
111
+
112
+
113
+ # segmento_p_posicao_063_a_077
114
+ # DESCRIÇÃO TAMANHO POSIÇÃO
115
+ # ---------------------------------------------------------
116
+ # Número Doc. 10 63 - 72
117
+ # Brancos 05 73 - 77
118
+ # TOTAL = 15 posições
119
+ def segmento_p_numero_do_documento(pagamento)
120
+ segmento = ''
121
+ segmento << "#{pagamento.numero_documento}".adjust_size_to(10, '0', :right)
122
+ segmento << ''.rjust(5, ' ')
123
+ segmento
124
+ end
125
+
126
+ # Data do Juros de Mora
127
+ # Para o SICREDI é um Registro do tipo filler com 'Zeros' obrigatório
128
+ # 8 posições
129
+ def segmento_p_posicao_119_a_126(pagamento)
130
+ ''.adjust_size_to(8, '0')
131
+ end
132
+
133
+
134
+ # Código para Baixa/Devolução
135
+ # Sicredi utiliza sempre domínio ‘1’ para esse campo ( '1' => Baixar / devolver ).
136
+ # 1 posição
137
+ def segmento_p_posicao_224_a_224
138
+ '1'
139
+ end
140
+
141
+ # Número de Dias para Baixa/Devolução
142
+ # Sicredi utiliza sempre, nesse campo, 60 dias para baixa/devolução.
143
+ # 3 posoções
144
+ #
145
+ def segmento_p_posicao_225_a_227
146
+ '060'
147
+ end
148
+
149
+ ############################ SEGMENTO R ################################
150
+
151
+ # Código do desconto 2
152
+ # 1 posição
153
+ def segmento_r_posicao_018_a_018(pagamento)
154
+ '2'
155
+ end
156
+
157
+ # Código do desconto 3
158
+ # 1 posição
159
+ def segmento_r_posicao_042_a_042(pagamento)
160
+ '2'
161
+ end
162
+
163
+ # Codigo da multa
164
+ # O Sicredi apenas aceita o campo multa preenchido com '2' - Percentual.
165
+ # 1 posição
166
+ def segmento_r_posicao_066_a_066(pagamento)
167
+ '2'
168
+ end
169
+
170
+ # Data da multa
171
+ # Para o SICREDI é um Registro do tipo filler com 'Zeros' obrigatório
172
+ # 8 posição
173
+ def segmento_r_posicao_067_a_074(pagamento)
174
+ "".adjust_size_to(8, '0')
175
+ end
176
+
177
+ ########################### TRAILER LOTE ################################
178
+
179
+ # trailer_lote_posicao_024_a_240(lote, nr_lote)
180
+ # DESCRIÇÃO TAMANHO POSIÇÃO
181
+ # ----------------------------------------------------------------
182
+ # Qtd. Títulos em Cobrança 006 024 - 029
183
+ # Val. Tot. Títulos em Carteiras 017 030 - 046
184
+ # Qtd. Títulos em Cobrança 006 047 - 052
185
+ # Val. Tot. Títulos em Carteiras 017 053 - 069
186
+ # Qtd. Títulos em Cobrança 006 070 - 075
187
+ # Qtd. Títulos em Carteiras 017 076 - 092
188
+ # Qtd. de Títulos em Cobrança 006 093 - 098
189
+ # Val. Tot. dos Títulos em Carteiras 017 099 - 115
190
+ # N. Aviso de Lançamento 008 116 - 123
191
+ # Uso FEBRABAN 117 124 - 240
192
+ #
193
+ # TOTAL = 217 posições
194
+ #
195
+ def complemento_trailer_lote(lote, nr_lote)
196
+ complemento = ''
197
+ complemento << ''.rjust(92, '0') # Valores só serão utilizados para informação do arquivo retorno
198
+ complemento << ''.rjust(8, ' ') # O Sicredi atualmente não utiliza este campo
199
+ complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
200
+ complemento
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,40 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab240
5
+ # A Unicred (através do CobExpress) utiliza e o layout de boleto os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
6
+ class Unicred < BrBoleto::Remessa::Cnab240::Bradesco
7
+ def conta_class
8
+ BrBoleto::Conta::Unicred
9
+ end
10
+
11
+ # segmento_p_posicao_024_a_057
12
+ # DESCRIÇÃO TAMANHO POSIÇÃO
13
+ # ---------------------------------------------------------
14
+ # Número da Conta Corrente 12 24 - 35
15
+ # DV da Conta 01 36 - 36
16
+ # DV da Ag/Conta (Branco) 01 37 - 37
17
+ # Número Doc. 11 38 - 48
18
+ # Nosso Número 01 49 - 49
19
+ # Brancos 08 50 - 57
20
+ #
21
+ # TOTAL = 34 posições
22
+ def complemento_p(pagamento)
23
+ complemento = ''
24
+ complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
25
+ complemento << "#{conta.conta_corrente_dv}".adjust_size_to(1)
26
+ complemento << ''.adjust_size_to(1)
27
+ complemento << "#{pagamento.numero_documento}".adjust_size_to(11, '0', :right)
28
+ complemento << "#{pagamento.nosso_numero}".split('').last
29
+ complemento << ''.adjust_size_to(8)
30
+ complemento.adjust_size_to(34)
31
+ end
32
+
33
+ # Por padrão o UNICRED não utiliza o Segmento S
34
+ def usa_segmento_S?
35
+ false
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end