br_boleto 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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