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,276 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab400
5
+ class Sicredi < BrBoleto::Remessa::Cnab400::Base
6
+ def conta_class
7
+ BrBoleto::Conta::Sicredi
8
+ end
9
+
10
+ ############################# HEADER ########################################
11
+
12
+ # Código da remessa
13
+ # Tipo: Numérico
14
+ # Tamanho: 001
15
+ def header_posicao_002_a_002
16
+ '1'
17
+ end
18
+
19
+ # Informações da conta <- Específico para cada banco
20
+ def informacoes_da_conta(local)
21
+
22
+ # Detalhe Posição: 017 até 037
23
+ if local == :detalhe
24
+ # POSIÇÂO TAM. Descrição
25
+ # 017 a 017 001 Tipo de moeda ( “A” – Real )
26
+ # 018 a 018 001 Tipo de desconto ( “B” – Percentual )
27
+ # 019 a 019 001 Tipo de juros ( “B” – Percentual )
28
+ # 020 a 037 018 Branco
29
+ info = 'ABB'
30
+ info << ''.adjust_size_to(18)
31
+
32
+ # Header Posição: 027 até 046
33
+ elsif local == :header
34
+ # POSIÇÂO TAM. Descrição
35
+ # 027 a 031 005 Contas Corrente
36
+ # 032 a 045 014 CPF/CNPJ
37
+ # 046 a 046 001 Branco
38
+ info = ''
39
+ info << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right)
40
+ info << "#{conta.cpf_cnpj}".adjust_size_to(14, '0', :right)
41
+ info << ''.adjust_size_to(1)
42
+ info
43
+ end
44
+ end
45
+
46
+ # Nome do cedente
47
+ # Deixar em Brancos (sem preenchimento)
48
+ # Tamanho: 030
49
+ def header_posicao_047_a_076
50
+ ''.adjust_size_to(30)
51
+ end
52
+
53
+ # Data de Gravação
54
+ # Formato da data = AAAAMMDD
55
+ # Tamanho: 008
56
+ def header_posicao_095_a_102
57
+ data_geracao('%Y%m%d')
58
+ end
59
+ def header_posicao_095_a_100
60
+ header_posicao_095_a_102
61
+ end
62
+
63
+ # Complemento do registro
64
+ # Posição 103 até 394
65
+ # POSIÇÂO TAM. Descrição
66
+ #-----------------------------------------------
67
+ # 103 a 110 008 Brancos
68
+ # 111 a 117 007 Número da remessa
69
+ # 118 a 390 273 Brancos
70
+ # 391 a 394 004 Versão do sistema (2.00)
71
+ #
72
+ # Tamanho: 292
73
+ def header_posicao_101_a_394
74
+ header_posicao_103_a_394
75
+ end
76
+ def header_posicao_103_a_394
77
+ info = ''.adjust_size_to(8)
78
+ info << "#{sequencial_remessa}".adjust_size_to(7, '0', :right)
79
+ info << ''.adjust_size_to(273)
80
+ info << '2.00'
81
+ info
82
+ end
83
+
84
+ ############################ DETALHE ########################################
85
+
86
+ # Detalhe Posição 002 a 004
87
+ # POSIÇÂO TAM. Descrição
88
+ #-----------------------------------------------
89
+ # 002 a 002 001 Tipo de cobrança (“A” - Sicredi Com Registro)
90
+ # 003 a 003 001 Tipo de carteira (“A” – Simples)
91
+ # 004 a 004 001 Tipo de Impressão ("A” – Normal)
92
+ #
93
+ # Tamanho: 003
94
+ def detalhe_posicao_002_004(pagamento)
95
+ detalhe = ''
96
+ detalhe << "#{conta.get_tipo_cobranca(conta.carteira, 400)}".adjust_size_to(1, 'A')
97
+ detalhe << "#{conta.get_tipo_cobranca(conta.codigo_carteira, 400)}".adjust_size_to(1, 'A')
98
+ detalhe << "#{conta.get_tipo_impressao(pagamento.tipo_impressao, 400)}".adjust_size_to(1, 'A')
99
+ detalhe
100
+ end
101
+ def detalhe_posicao_002_003(pagamento)
102
+ detalhe_posicao_002_004(pagamento)
103
+ end
104
+
105
+
106
+ # Detalhe Posição 005 a 016
107
+ # POSIÇÂO TAM. Descrição
108
+ #-----------------------------------------------
109
+ # 005 a 016 012 Deixar em Branco
110
+ #
111
+ # Tamanho: 012
112
+ def detalhe_posicao_005_016
113
+ detalhe = ''.adjust_size_to(12)
114
+ end
115
+ def detalhe_posicao_004_017
116
+ detalhe_posicao_005_016
117
+ end
118
+
119
+ # Detalhe Posição 038 a 062
120
+ #-----------------------------------------------
121
+ # POSIÇÂO TAM. Descrição
122
+ # 038 a 047 010 Deixar em Branco
123
+ # 048 a 056 009 Nosso número Sicredi
124
+ # 057 a 062 006 Deixar em Branco
125
+ #
126
+ # Tamanho: 25
127
+ def detalhe_posicao_038_062(pagamento)
128
+ detalhe = "".adjust_size_to(10)
129
+ detalhe << "#{pagamento.nosso_numero}".adjust_size_to(9, '0', :right)
130
+ detalhe << "".adjust_size_to(6)
131
+ detalhe
132
+ end
133
+
134
+ # Detalhe Posição 063 a 108
135
+ # POSIÇÂO TAM. Descrição
136
+ #-----------------------------------------------
137
+ # 063 a 070 008 Data da Instrução
138
+ # 071 a 071 001 Campo alterado ( Branco )
139
+ # 072 a 072 001 Postagem do título ( “N” - Não postar e remeter o título para o beneficiário )
140
+ # 073 a 073 001 Branco
141
+ # 074 a 074 001 Emissão do boleto
142
+ # 075 a 076 002 Número da parcela do carnê
143
+ # 077 a 078 002 Número Total de parcelas do carnê
144
+ # 079 a 082 004 Brancos
145
+ # 083 a 092 010 Valor Desconto por dia de antecipação (Preencher com Zeros)
146
+ # 093 a 096 004 % multa por pagamento em atraso (Preencher com Zeros)
147
+ # 097 a 108 012 Brancos
148
+ #
149
+ # Tamanho: 46
150
+ def detalhe_posicao_063_076(pagamento, sequencial)
151
+ detalhe_posicao_063_108(pagamento)
152
+ end
153
+ def detalhe_posicao_077_108(pagamento, sequencial)
154
+ ''
155
+ end
156
+ def detalhe_posicao_063_108(pagamento)
157
+ dados = ''
158
+ dados << "#{pagamento.data_emissao_formatado('%Y%m%d')}"
159
+ dados << ''.adjust_size_to(1)
160
+ dados << 'N'
161
+ dados << ''.adjust_size_to(1)
162
+ dados << "#{conta.get_identificacao_emissao(pagamento.emissao_boleto, 400)}".adjust_size_to(1, 'A')
163
+ dados << ''.adjust_size_to(2)
164
+ dados << ''.adjust_size_to(2)
165
+ dados << ''.adjust_size_to(4)
166
+ dados << ''.adjust_size_to(10, '0')
167
+ dados << ''.adjust_size_to(4, '0')
168
+ dados << ''.adjust_size_to(12)
169
+ dados
170
+ end
171
+
172
+ # Informações referente ao pagamento
173
+ # POSIÇÂO TAM. Descrição
174
+ #-----------------------------------------------
175
+ # 121 a 126 006 Data do Vencimento do Título
176
+ # 127 a 139 013 Valor do Título
177
+ # 140 a 148 009 Brancos
178
+ # 149 a 149 001 Espécie de Título
179
+ # 150 a 150 001 Identificação (Sempre 'N')
180
+ # 151 a 156 006 Data da emissão do Título
181
+ # 157 a 158 002 1a instrução
182
+ # 159 a 160 002 2a instrução
183
+ #
184
+ # Tamanho: 40
185
+ def informacoes_do_pagamento(pagamento, sequencial)
186
+ info = ''
187
+ info << pagamento.data_vencimento_formatado('%d%m%y')
188
+ info << pagamento.valor_documento_formatado(13)
189
+ info << ''.adjust_size_to(9)
190
+ info << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(1, '0', :right)
191
+ info << 'N'
192
+ info << pagamento.data_emissao_formatado('%d%m%y')
193
+ info << ''.adjust_size_to(2,'0', :right) # 1a Instrução
194
+ info << ''.adjust_size_to(2,'0', :right) # 2a Instrução
195
+ info
196
+ end
197
+
198
+ # Informações referente aos juros e multas do pagamento
199
+ # Posição: 161 a 218
200
+ # POSIÇÂO TAM. Descrição
201
+ # 161 a 173 013 Valor a ser cobrado por Dia de Atraso
202
+ # 174 a 179 006 Data Limite P/Concessão de Desconto
203
+ # 180 a 192 013 Valor do Desconto
204
+ # 193 a 205 013 Valor do IOF (Preencher com Zeros)
205
+ # 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado
206
+ # Tamanho: 58
207
+ def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
208
+ detalhe = ''
209
+ detalhe << "#{pagamento.valor_mora_formatado}".adjust_size_to(13,'0', :right )
210
+ detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
211
+ detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
212
+ detalhe << ''.adjust_size_to(13,'0')
213
+ detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
214
+ detalhe
215
+ end
216
+
217
+ # Informações referente aos dados do sacado/pagador
218
+ # Posição: 219 a 394
219
+ # POSIÇÂO TAM. Descrição
220
+ # 219 a 219 001 Identificação do Tipo de Inscrição do Pagador
221
+ # 220 a 220 001 Zero
222
+ # 221 a 234 014 No Inscrição do Pagador
223
+ # 235 a 274 040 Nome do Pagador
224
+ # 275 a 314 040 Endereço Completo
225
+ # 315 a 319 005 Código do Pagador na cooperativa beneficiária ( Preencher com zeros )
226
+ # 320 a 325 006 Preencher com zeros
227
+ # 326 a 326 001 Branco
228
+ # 332 a 334 003 Sufixo do CEP
229
+ # 335 a 339 005 Código do Pagador junto ao cliente (Preencher com Zeros)
230
+ # 340 a 353 014 CPF/CNPJ Sacador/Avalista ou 2a Mensagem
231
+ # 354 a 394 041 Nome Sacador/Avalista
232
+ # Tamanho: 176
233
+ def informacoes_do_sacado(pagamento, sequencial)
234
+ info = ''
235
+ info << "#{pagamento.pagador.tipo_cpf_cnpj}".last.adjust_size_to(1, '0', :right) # Tipo de Inscrição do Pagador
236
+ info << ''.adjust_size_to(1, '0')
237
+ info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
238
+ info << "#{pagamento.pagador.nome}".adjust_size_to(40)
239
+ info << "#{pagamento.pagador.endereco}".adjust_size_to(18) # Endereço Completo
240
+ info << "#{pagamento.pagador.bairro}".adjust_size_to(10) # Endereço Completo
241
+ info << "#{pagamento.pagador.cidade}".adjust_size_to(10) # Endereço Completo
242
+ info << "#{pagamento.pagador.uf}".adjust_size_to(2) # Endereço Completo
243
+ info << ''.adjust_size_to(5, '0') # Código do Pagador na cooperativa
244
+ info << ''.adjust_size_to(6, '0') # Preencher com zeros
245
+ info << ''.adjust_size_to(1) # Preencher com Espaço em Branco
246
+ info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right) # CEP + Sufixo do CEP
247
+ info << ''.adjust_size_to(5, '0') # Código do Pagador
248
+ info << "#{pagamento.pagador.documento_avalista}".adjust_size_to(14, '0', :right) # Sacador/Avalista (CPF/CNPJ)
249
+ info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(41) # Sacador/Avalista (Nome)
250
+ info
251
+ end
252
+
253
+ ############################ TRAILER #######################################
254
+
255
+ # Detalhe Posição 002 a 0349
256
+ # POSIÇÂO TAM. Descrição
257
+ #-----------------------------------------------
258
+ # 002 a 002 001 Identificação do arquivo remessa
259
+ # 003 a 005 003 Número do Sicredi (748)
260
+ # 006 a 010 005 Código do beneficiário
261
+ # 011 a 394 384 Bracos
262
+ #
263
+ # Tamanho: 393
264
+ def trailer_arquivo_posicao_002_a_394(sequencial)
265
+ dados = ''
266
+ dados << '1' # Identificação do arquivo remessa
267
+ dados << "#{conta.codigo_banco}".adjust_size_to(3, '0', :right) # Número do Sicredi
268
+ dados << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right) # Código do beneficiário
269
+ dados << ''.adjust_size_to(384)
270
+ dados
271
+ end
272
+
273
+ end
274
+ end
275
+ end
276
+ end
@@ -0,0 +1,62 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Remessa
4
+ module Cnab400
5
+ # A Unicred (CobExpress) utiliza o layout de boleto e os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
6
+ class Unicred < BrBoleto::Remessa::Cnab400::Bradesco
7
+ def conta_class
8
+ BrBoleto::Conta::Unicred
9
+ end
10
+
11
+ # detalhe_posicao_038_062
12
+ # Numero de controle do participante
13
+ # DESCRIÇÃO TAMANHO POSIÇÃO
14
+ # ---------------------------------------------------------
15
+ # Brancos 14 38 - 51
16
+ # Numero Doc. 11 52 - 62
17
+ #
18
+ # TOTAL = 25 posições
19
+ def detalhe_posicao_038_062(pagamento)
20
+ detalhe = ''.adjust_size_to(14)
21
+ detalhe << "#{pagamento.numero_documento}".adjust_size_to(11, '0', :right)
22
+ detalhe
23
+ end
24
+
25
+ # Informações referente aos dados do sacado/pagador
26
+ # Posição: 219 a 394
27
+ # POSIÇÂO TAM. Descrição
28
+ # 219 a 220 002 Identificação do Tipo de Inscrição do Pagador
29
+ # 221 a 234 014 No Inscrição do Pagador
30
+ # 235 a 274 040 Nome do Pagador
31
+ # 275 a 314 040 Endereço
32
+ # 315 a 326 012 1a Mensagem
33
+ # 327 a 331 005 CEP
34
+ # 332 a 334 003 Sufixo do CEP
35
+ # 335 a 394 060 Sacador/Avalista ou 2a Mensagem
36
+ #------------------------------------------------------------------------------
37
+ # OBS: Como a impressão é realizada no CobExpress,
38
+ # então as posições 335 a 394 seguem o seguinte formato:
39
+ # 335 a 349 015 Inscrição do Sacador/Avalista (CPF/CNPJ)
40
+ # 350 a 351 002 Brancos
41
+ # 352 a 394 043 Nome Sacador/Avalista
42
+ #
43
+ # Tamanho: 176
44
+ def informacoes_do_sacado(pagamento, sequencial)
45
+ info = ''
46
+ # Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
47
+ info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
48
+ info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
49
+ info << "#{pagamento.pagador.nome}".adjust_size_to(40)
50
+ info << "#{pagamento.pagador.endereco}".adjust_size_to(40) # Endereço
51
+ info << ''.adjust_size_to(12) # 1a Mensagem
52
+ info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right) # CEP + Sufixo do CEP
53
+ info << "#{pagamento.pagador.documento_avalista}".rjust(15) # Sacador/Avalista (CPF/CNPJ)
54
+ info << ''.adjust_size_to(2) # Brancos
55
+ info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(43) # Sacador/Avalista (Nome)
56
+ info
57
+ end
58
+
59
+ end
60
+ end
61
+ end
62
+ end
@@ -7,6 +7,8 @@ module BrBoleto
7
7
  # CNAB: 240 e 400
8
8
  include BrBoleto::HavePagador
9
9
 
10
+ include BrBoleto::Helper::DefaultCodes
11
+
10
12
  # <b>REQUERIDO</b>: nosso numero
11
13
  # CNAB: 240 e 400
12
14
  attr_accessor :nosso_numero
@@ -111,51 +113,83 @@ module BrBoleto
111
113
  # Comando/Identificação da cobrança/Movimento
112
114
  # Default: '01'
113
115
  # Exemplos de valores
114
- # 01 - Registro de títulos
115
- # 02 - Solicitação de baixa
116
- # 03 - Pedido de débito em conta
117
- # 04 - Concessão de abatimento
118
- # 05 - Cancelamento de abatimento
119
- # 06 - Alteração de vencimento de título
120
- # 07 - Alteração do número de controle do participante
121
- # 08 - Alteração do número do titulo dado pelo cedente
122
- # 09 - Instrução para protestar (Nota 09)
123
- # 10 - Instrução para sustar protesto
124
- # 11 - Instrução para dispensar juros
125
- # 12 - Alteração de nome e endereço do Sacado
126
- # 16 Alterar Juros de Mora (Vide Observações)
127
- # 31 - Conceder desconto
128
- # 32 - Não conceder desconto
129
- # 33 - Retificar dados da concessão de desconto
130
- # 34 - Alterar data para concessão de desconto
131
- # 35 - Cobrar multa (Nota 11)
132
- # 36 - Dispensar multa (Nota 11)
133
- # 37 - Dispensar indexador
134
- # 38 - Dispensar prazo limite de recebimento (Nota 11)
135
- # 39 - Alterar prazo limite de recebimento (Nota 11)
136
- # 40 Alterar modalidade (Vide Observações)
137
- # CNAB: 400
116
+ # 01 = Entrada de Títulos
117
+ # 02 = Pedido de Baixa
118
+ # 03 = Protesto para Fins Falimentares
119
+ # 04 = Concessão de Abatimento
120
+ # 05 = Cancelamento de Abatimento
121
+ # 06 = Alteração de Vencimento
122
+ # 07 = Concessão de Desconto
123
+ # 08 = Cancelamento de Desconto
124
+ # 09 = Pedido de protesto (Protestar)
125
+ # 10 = Sustar Protesto e Baixar Título
126
+ # 11 = Sustar Protesto e Manter em Carteira
127
+ # 12 = Alteração de Juros de Mora
128
+ # 13 = Dispensar Cobrança de Juros de Mora
129
+ # 14 = Alteração de Valor/Percentual de Multa
130
+ # 15 = Dispensar Cobrança de Multa
131
+ # 16 = Alteração do Valor de Desconto
132
+ # 17 = Não conceder Desconto
133
+ # 18 = Alteração do Valor de Abatimento
134
+ # 19 = Prazo Limite de Recebimento – Alterar
135
+ # 20 = Prazo Limite de Recebimento – Dispensar
136
+ # 21 = Alterar número do título dado pelo beneficiario (nosso número)
137
+ # 22 = Alterar número controle do Participante (seu número / número documento)
138
+ # 23 = Alterar dados do Pagador
139
+ # 24 = Alterar dados do Sacador/Avalista
140
+ # 30 = Recusa da Alegação do Pagador
141
+ # 31 = Alteração de Outros Dados
142
+ # 33 = Alteração dos Dados do Rateio de Crédito
143
+ # 34 = Pedido de Cancelamento dos Dados do Rateio de Crédito
144
+ # 35 = Pedido de Desagendamento do Débito Automático
145
+ # 40 = Alteração de Carteira
146
+ # 41 = Cancelar protesto
147
+ # 42 = Alteração de Espécie de Título
148
+ # 43 = Transferência de carteira/modalidade de cobrança
149
+ # 44 = Alteração de contrato de cobrança
150
+ # 45 = Negativação Sem Protesto
151
+ # 46 = Solicitação de Baixa de Título Negativado Sem Protesto
152
+ # 47 = Alteração do Valor Nominal do Título
153
+ # 48 = Alteração do Valor Mínimo/ Percentual
154
+ # 49 = Alteração do Valor Máximo/Percentua
155
+ # CNAB: 240 e 400
138
156
  attr_accessor :identificacao_ocorrencia
139
157
 
140
158
  # Espécie do Título:
141
159
  # Default: 01
142
- # 01 = Duplicata Mercantil
143
- # 02 = Nota Promissória
144
- # 03 = Nota de Seguro
145
- # 05 = Recibo
146
- # 06 = Duplicata Rural
147
- # 08 = Letra de Câmbio
148
- # 09 = Warrant
149
- # 10 = Cheque
150
- # 12 = Duplicata de Serviço
151
- # 13 = Nota de Débito
152
- # 14 = Triplicata Mercantil
153
- # 15 = Triplicata de Serviço
154
- # 18 = Fatura
155
- # 20 = Apólice de Seguro
156
- # 21 = Mensalidade Escolar
157
- # 22 = Parcela de Consórcio
158
- # 99 = Outros
160
+ # 01 = Cheque
161
+ # 02 = Duplicata Mercantil
162
+ # 03 = Duplicata Mercantil p/ Indicação
163
+ # 04 = Duplicata de Serviço
164
+ # 05 = Duplicata de Serviço p/ Indicação
165
+ # 06 = Duplicata Rural
166
+ # 07 = Letra de Câmbio
167
+ # 08 = Nota de Crédito Comercial
168
+ # 09 = Nota de Crédito a Exportação
169
+ # 10 = Nota de Crédito Industrial
170
+ # 11 = Nota de Crédito Rural
171
+ # 12 = Nota Promissória
172
+ # 13 = Nota Promissória Rural
173
+ # 14 = Triplicata Mercantil
174
+ # 15 = Triplicata de Serviço
175
+ # 16 = Nota de Seguro
176
+ # 17 = Recibo
177
+ # 18 = Fatura
178
+ # 19 = Nota de Débito
179
+ # 20 = Apólice de Seguro
180
+ # 21 = Mensalidade Escolar
181
+ # 22 = Parcela de Consórcio
182
+ # 23 = Nota Fiscal
183
+ # 24 = Documento de Dívida
184
+ # 25 = Cédula de Produto Rural
185
+ # 26 = Warrant
186
+ # 27 = Dívida Ativa de Estado
187
+ # 28 = Dívida Ativa de Município
188
+ # 29 = Dívida Ativa da União
189
+ # 30 = Encargos condominiais
190
+ # 31 = Cartão de Crédito
191
+ # 32 = Boleto de Proposta
192
+ # 99 = Outros
159
193
  # CNAB: 240 e 400
160
194
  attr_accessor :especie_titulo
161
195
 
@@ -202,6 +236,20 @@ module BrBoleto
202
236
  # ‘4’ = Banco envia SMS
203
237
  attr_accessor :distribuicao_boleto
204
238
 
239
+ # Código para Protesto
240
+ # Código adotado pela FEBRABAN para identificar o tipo de prazo a ser considerado para o protesto.
241
+ # '1' = Protestar Dias Corridos
242
+ # '2' = Protestar Dias Úteis
243
+ # '3' = Não Protestar
244
+ # '4' = Protestar Fim Falimentar - Dias Úteis
245
+ # '5' = Protestar Fim Falimentar - Dias Corridos
246
+ # '8' = Negativação sem Protesto
247
+ # '9' = Cancelamento Protesto Automático (somente válido p/ Código Movimento Remessa = '31')
248
+ attr_accessor :codigo_protesto
249
+
250
+ # Dias para protestar
251
+ attr_accessor :dias_protesto
252
+
205
253
  ######################## VALIDAÇÕES PERSONALIZADAS ########################
206
254
  attr_accessor :valid_tipo_impressao_required
207
255
  validates :tipo_impressao, presence: true, if: :valid_tipo_impressao_required
@@ -258,8 +306,10 @@ module BrBoleto
258
306
  especie_titulo: '01',
259
307
  codigo_moeda: '9',
260
308
  forma_cadastramento: '0',
261
- emissao_boleto: '2',
262
- distribuicao_boleto: '2',
309
+ emissao_boleto: '2', # Cliente Emite
310
+ distribuicao_boleto: '2', # Cliente Distribui
311
+ codigo_protesto: '3', # Não protestar
312
+ dias_protesto: '03', # Dias para Protesto
263
313
  }
264
314
  end
265
315
 
@@ -51,10 +51,11 @@ module BrBoleto
51
51
 
52
52
  def segmento_t_fields #:doc:
53
53
  { # ATRIBUTO POSIÇÃO DA LINHA
54
+ codigo_movimento_retorno: 16..17,
54
55
  agencia_com_dv: 18..23,
55
56
  agencia_sem_dv: 18..22,
56
- numero_conta_com_dv: 24..36,
57
- numero_conta_sem_dv: 24..35,
57
+ numero_conta: 24..35,
58
+ numero_conta_dv: 36,
58
59
  dv_conta_e_agencia: 37..37,
59
60
  nosso_numero: 38..57,
60
61
  carteira: 58..58,
@@ -82,16 +83,16 @@ module BrBoleto
82
83
  valor_iof: 63..77,
83
84
  valor_pago: 78..92,
84
85
  valor_liquido: 93..107,
85
- valor_outras_despesas: 108..122,
86
- valor_outros_creditos: 123..137,
87
- data_ocorrencia: 138..145,
88
- data_credito: 146..153,
89
- codigo_ocorrencia_sacado: 154..157,
90
- data_ocorrencia_sacado: 158..165,
91
- valor_ocorrencia_sacado: 166..180,
92
- complemento_ocorrencia_sacado: 181..210,
93
- codigo_ocorrencia_banco_correspondente: 211..213,
94
- nosso_numero_banco_correspondente: 214..133,
86
+ valor_outras_despesas: 108..122,
87
+ valor_outros_creditos: 123..137,
88
+ data_ocorrencia: 138..145,
89
+ data_credito: 146..153,
90
+ codigo_ocorrencia_sacado: 154..157,
91
+ data_ocorrencia_sacado: 158..165,
92
+ valor_ocorrencia_sacado: 166..180,
93
+ complemento_ocorrencia_sacado: 181..210,
94
+ codigo_ocorrencia_banco_correspondente: 211..213,
95
+ nosso_numero_banco_correspondente: 214..233,
95
96
  }
96
97
  end
97
98
 
@@ -0,0 +1,10 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class Bradesco < BrBoleto::Retorno::Cnab240::Base
6
+ # O Banco Bradesco segue o padrão da FEBRABAN.
7
+ end
8
+ end
9
+ end
10
+ end
@@ -15,12 +15,11 @@ module BrBoleto
15
15
  def segmento_t_fields #:doc:
16
16
  super.merge({
17
17
  # ATRIBUTO POSIÇÃO DA LINHA
18
- numero_conta_com_dv: 24..29, # Código do cedente
19
- numero_conta_sem_dv: 24..29, # Código do cedente
18
+ numero_conta_dv: '',
19
+ numero_conta: 24..29, # Código do cedente
20
20
  dv_conta_e_agencia: 250, # Defino como 250 para setar nil ao atributo
21
21
  modalidade: 40..41,
22
22
  nosso_numero: 42..56,
23
- # carteira: 58..58, # Cartéira segue o padrão da FEBRABAN
24
23
  numero_documento: 59..69,
25
24
  })
26
25
  end
@@ -0,0 +1,10 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class Cecred < BrBoleto::Retorno::Cnab240::Base
6
+ # O Banco Cecred segue o padrão da FEBRABAN.
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class Itau < BrBoleto::Retorno::Cnab240::Base
6
+
7
+
8
+ def segmento_t_fields #:doc:
9
+ super.merge({
10
+ # ATRIBUTO POSIÇÃO DA LINHA
11
+ #agencia_com_dv: 19..23, # ITAU não utiliza o DV da agencia
12
+ agencia_sem_dv: 19..22,
13
+ numero_conta_dv: 37,
14
+ numero_conta: 31..35,
15
+ dv_conta_e_agencia: 36,
16
+ carteira: 38..40,
17
+ numero_documento: 41..48,
18
+ })
19
+ end
20
+
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,10 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class Sicredi < BrBoleto::Retorno::Cnab240::Base
6
+ # O Banco Sicredi segue o padrão da FEBRABAN.
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module BrBoleto
3
+ module Retorno
4
+ module Cnab240
5
+ class Unicred < BrBoleto::Retorno::Cnab240::Bradesco
6
+ # A Unicred (através do CobExpress) utiliza e o layout de boleto os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
7
+ end
8
+ end
9
+ end
10
+ end