bbrcobranca 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (220) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1 -0
  3. data/LICENSE +20 -0
  4. data/README.md +12 -0
  5. data/Rakefile +13 -0
  6. data/lib/bbrcobranca.rb +196 -0
  7. data/lib/bbrcobranca/arquivos/logos/bancobrasil.eps +5402 -0
  8. data/lib/bbrcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
  9. data/lib/bbrcobranca/arquivos/logos/bancobrasilia.eps +0 -0
  10. data/lib/bbrcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
  11. data/lib/bbrcobranca/arquivos/logos/banconordeste.eps +0 -0
  12. data/lib/bbrcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
  13. data/lib/bbrcobranca/arquivos/logos/banestes.eps +5198 -0
  14. data/lib/bbrcobranca/arquivos/logos/banestes_carne.eps +5206 -0
  15. data/lib/bbrcobranca/arquivos/logos/banrisul.eps +121 -0
  16. data/lib/bbrcobranca/arquivos/logos/banrisul_carne.eps +121 -0
  17. data/lib/bbrcobranca/arquivos/logos/bradesco.eps +5210 -0
  18. data/lib/bbrcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
  19. data/lib/bbrcobranca/arquivos/logos/caixa.eps +5111 -0
  20. data/lib/bbrcobranca/arquivos/logos/caixa_carne.eps +5115 -0
  21. data/lib/bbrcobranca/arquivos/logos/cecred.eps +0 -0
  22. data/lib/bbrcobranca/arquivos/logos/cecred_carne.eps +0 -0
  23. data/lib/bbrcobranca/arquivos/logos/credisis.eps +0 -0
  24. data/lib/bbrcobranca/arquivos/logos/credisis_carne.eps +0 -0
  25. data/lib/bbrcobranca/arquivos/logos/hsbc.eps +5124 -0
  26. data/lib/bbrcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
  27. data/lib/bbrcobranca/arquivos/logos/itau.eps +5318 -0
  28. data/lib/bbrcobranca/arquivos/logos/itau_carne.eps +5322 -0
  29. data/lib/bbrcobranca/arquivos/logos/santander.eps +5305 -0
  30. data/lib/bbrcobranca/arquivos/logos/santander_carne.eps +5313 -0
  31. data/lib/bbrcobranca/arquivos/logos/sicoob.eps +5375 -0
  32. data/lib/bbrcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
  33. data/lib/bbrcobranca/arquivos/logos/sicredi.eps +5379 -0
  34. data/lib/bbrcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
  35. data/lib/bbrcobranca/arquivos/logos/unicred.eps +0 -0
  36. data/lib/bbrcobranca/arquivos/logos/unicred_carne.eps +0 -0
  37. data/lib/bbrcobranca/arquivos/templates/modelo_carne.eps +1112 -0
  38. data/lib/bbrcobranca/arquivos/templates/modelo_generico.eps +0 -0
  39. data/lib/bbrcobranca/boleto/banco_brasil.rb +157 -0
  40. data/lib/bbrcobranca/boleto/banco_brasilia.rb +102 -0
  41. data/lib/bbrcobranca/boleto/banco_nordeste.rb +79 -0
  42. data/lib/bbrcobranca/boleto/banestes.rb +85 -0
  43. data/lib/bbrcobranca/boleto/banrisul.rb +94 -0
  44. data/lib/bbrcobranca/boleto/base.rb +256 -0
  45. data/lib/bbrcobranca/boleto/bradesco.rb +99 -0
  46. data/lib/bbrcobranca/boleto/bradesco_grb.rb +85 -0
  47. data/lib/bbrcobranca/boleto/caixa.rb +121 -0
  48. data/lib/bbrcobranca/boleto/cecred.rb +86 -0
  49. data/lib/bbrcobranca/boleto/credisis.rb +116 -0
  50. data/lib/bbrcobranca/boleto/hsbc.rb +94 -0
  51. data/lib/bbrcobranca/boleto/itau.rb +138 -0
  52. data/lib/bbrcobranca/boleto/itau_adimplere.rb +159 -0
  53. data/lib/bbrcobranca/boleto/santander.rb +84 -0
  54. data/lib/bbrcobranca/boleto/santander_adimplere.rb +73 -0
  55. data/lib/bbrcobranca/boleto/sicoob.rb +119 -0
  56. data/lib/bbrcobranca/boleto/sicredi.rb +142 -0
  57. data/lib/bbrcobranca/boleto/template/base.rb +25 -0
  58. data/lib/bbrcobranca/boleto/template/rghost.rb +315 -0
  59. data/lib/bbrcobranca/boleto/template/rghost_carne.rb +317 -0
  60. data/lib/bbrcobranca/boleto/unicred.rb +141 -0
  61. data/lib/bbrcobranca/calculo.rb +115 -0
  62. data/lib/bbrcobranca/calculo_data.rb +62 -0
  63. data/lib/bbrcobranca/currency.rb +69 -0
  64. data/lib/bbrcobranca/formatacao.rb +103 -0
  65. data/lib/bbrcobranca/formatacao_string.rb +35 -0
  66. data/lib/bbrcobranca/limpeza.rb +20 -0
  67. data/lib/bbrcobranca/remessa/base.rb +76 -0
  68. data/lib/bbrcobranca/remessa/cnab240/banco_brasil.rb +246 -0
  69. data/lib/bbrcobranca/remessa/cnab240/base.rb +512 -0
  70. data/lib/bbrcobranca/remessa/cnab240/base_correspondente.rb +299 -0
  71. data/lib/bbrcobranca/remessa/cnab240/caixa.rb +163 -0
  72. data/lib/bbrcobranca/remessa/cnab240/cecred.rb +151 -0
  73. data/lib/bbrcobranca/remessa/cnab240/sicoob.rb +226 -0
  74. data/lib/bbrcobranca/remessa/cnab240/sicoob_banco_brasil.rb +94 -0
  75. data/lib/bbrcobranca/remessa/cnab240/sicredi.rb +177 -0
  76. data/lib/bbrcobranca/remessa/cnab240/unicred.rb +9 -0
  77. data/lib/bbrcobranca/remessa/cnab400/banco_brasil.rb +169 -0
  78. data/lib/bbrcobranca/remessa/cnab400/banco_brasilia.rb +166 -0
  79. data/lib/bbrcobranca/remessa/cnab400/banco_nordeste.rb +160 -0
  80. data/lib/bbrcobranca/remessa/cnab400/banrisul.rb +155 -0
  81. data/lib/bbrcobranca/remessa/cnab400/base.rb +119 -0
  82. data/lib/bbrcobranca/remessa/cnab400/bradesco.rb +130 -0
  83. data/lib/bbrcobranca/remessa/cnab400/citibank.rb +138 -0
  84. data/lib/bbrcobranca/remessa/cnab400/credisis.rb +128 -0
  85. data/lib/bbrcobranca/remessa/cnab400/itau.rb +157 -0
  86. data/lib/bbrcobranca/remessa/cnab400/santander.rb +231 -0
  87. data/lib/bbrcobranca/remessa/cnab400/sicoob.rb +308 -0
  88. data/lib/bbrcobranca/remessa/cnab400/unicred.rb +143 -0
  89. data/lib/bbrcobranca/remessa/pagamento.rb +288 -0
  90. data/lib/bbrcobranca/retorno/base.rb +49 -0
  91. data/lib/bbrcobranca/retorno/cnab240/base.rb +42 -0
  92. data/lib/bbrcobranca/retorno/cnab240/caixa.rb +48 -0
  93. data/lib/bbrcobranca/retorno/cnab240/cecred.rb +102 -0
  94. data/lib/bbrcobranca/retorno/cnab240/santander.rb +95 -0
  95. data/lib/bbrcobranca/retorno/cnab240/sicoob.rb +99 -0
  96. data/lib/bbrcobranca/retorno/cnab240/sicredi.rb +79 -0
  97. data/lib/bbrcobranca/retorno/cnab400/banco_brasil.rb +127 -0
  98. data/lib/bbrcobranca/retorno/cnab400/banco_brasilia.rb +89 -0
  99. data/lib/bbrcobranca/retorno/cnab400/banco_nordeste.rb +112 -0
  100. data/lib/bbrcobranca/retorno/cnab400/banrisul.rb +42 -0
  101. data/lib/bbrcobranca/retorno/cnab400/base.rb +50 -0
  102. data/lib/bbrcobranca/retorno/cnab400/bradesco.rb +124 -0
  103. data/lib/bbrcobranca/retorno/cnab400/credisis.rb +115 -0
  104. data/lib/bbrcobranca/retorno/cnab400/itau.rb +143 -0
  105. data/lib/bbrcobranca/retorno/cnab400/santander.rb +57 -0
  106. data/lib/bbrcobranca/retorno/cnab400/unicred.rb +118 -0
  107. data/lib/bbrcobranca/retorno/retorno_cbr643.rb +49 -0
  108. data/lib/bbrcobranca/retorno/retorno_cnab240.rb +97 -0
  109. data/lib/bbrcobranca/retorno/retorno_cnab400.rb +70 -0
  110. data/lib/bbrcobranca/util/date.rb +20 -0
  111. data/lib/bbrcobranca/util/empresa.rb +28 -0
  112. data/lib/bbrcobranca/util/errors.rb +76 -0
  113. data/lib/bbrcobranca/validations.rb +232 -0
  114. data/lib/bbrcobranca/version.rb +6 -0
  115. data/spec/arquivos/CBR64310.RET +28 -0
  116. data/spec/arquivos/CNAB240.RET +74 -0
  117. data/spec/arquivos/CNAB240CECRED.RET +10 -0
  118. data/spec/arquivos/CNAB240SANTANDER.RET +8 -0
  119. data/spec/arquivos/CNAB240SICOOB.RET +10 -0
  120. data/spec/arquivos/CNAB240SICREDI.CRT +8 -0
  121. data/spec/arquivos/CNAB400.RET +54 -0
  122. data/spec/arquivos/CNAB400BANCOBRASILIA.RET +3 -0
  123. data/spec/arquivos/CNAB400BANCONORDESTE.RET +3 -0
  124. data/spec/arquivos/CNAB400BANRISUL.RET +3 -0
  125. data/spec/arquivos/CNAB400BRADESCO.RET +8 -0
  126. data/spec/arquivos/CNAB400CREDISIS.RET +3 -0
  127. data/spec/arquivos/CNAB400ITAU.RET +54 -0
  128. data/spec/arquivos/CNAB400SANTANDER.RET +54 -0
  129. data/spec/arquivos/CNAB400UNICRED.RET +3 -0
  130. data/spec/bbrcobranca_spec.rb +34 -0
  131. data/spec/brcobranca/base_spec.rb +170 -0
  132. data/spec/brcobranca/boleto/banco_brasil_spec.rb +334 -0
  133. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +152 -0
  134. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +161 -0
  135. data/spec/brcobranca/boleto/banestes_spec.rb +194 -0
  136. data/spec/brcobranca/boleto/banrisul_spec.rb +182 -0
  137. data/spec/brcobranca/boleto/bradesco_spec.rb +211 -0
  138. data/spec/brcobranca/boleto/caixa_spec.rb +161 -0
  139. data/spec/brcobranca/boleto/cecred_spec.rb +147 -0
  140. data/spec/brcobranca/boleto/credisis_spec.rb +159 -0
  141. data/spec/brcobranca/boleto/hsbc_spec.rb +172 -0
  142. data/spec/brcobranca/boleto/itau_spec.rb +262 -0
  143. data/spec/brcobranca/boleto/santander_spec.rb +143 -0
  144. data/spec/brcobranca/boleto/sicoob_spec.rb +193 -0
  145. data/spec/brcobranca/boleto/sicredi_spec.rb +190 -0
  146. data/spec/brcobranca/boleto/unicred_spec.rb +149 -0
  147. data/spec/brcobranca/boletos_em_lote_spec.rb +38 -0
  148. data/spec/brcobranca/calculo_data_spec.rb +33 -0
  149. data/spec/brcobranca/calculo_spec.rb +185 -0
  150. data/spec/brcobranca/currency_spec.rb +79 -0
  151. data/spec/brcobranca/formatacao_spec.rb +46 -0
  152. data/spec/brcobranca/formatacao_string_spec.rb +24 -0
  153. data/spec/brcobranca/limpeza_spec.rb +10 -0
  154. data/spec/brcobranca/remessa/base_spec.rb +67 -0
  155. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +217 -0
  156. data/spec/brcobranca/remessa/cnab240/base_spec.rb +91 -0
  157. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +163 -0
  158. data/spec/brcobranca/remessa/cnab240/cecred_spec.rb +164 -0
  159. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +268 -0
  160. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +198 -0
  161. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +201 -0
  162. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +193 -0
  163. data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +187 -0
  164. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +183 -0
  165. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +187 -0
  166. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +190 -0
  167. data/spec/brcobranca/remessa/cnab400/base_spec.rb +53 -0
  168. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +201 -0
  169. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +126 -0
  170. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +188 -0
  171. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +190 -0
  172. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +152 -0
  173. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +217 -0
  174. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +185 -0
  175. data/spec/brcobranca/remessa/pagamento_spec.rb +227 -0
  176. data/spec/brcobranca/retorno/cnab240/base_spec.rb +23 -0
  177. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +50 -0
  178. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +50 -0
  179. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +50 -0
  180. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +31 -0
  181. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +36 -0
  182. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +39 -0
  183. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +41 -0
  184. data/spec/brcobranca/retorno/cnab400/base_spec.rb +57 -0
  185. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +58 -0
  186. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +25 -0
  187. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +58 -0
  188. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +39 -0
  189. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +42 -0
  190. data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +69 -0
  191. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +57 -0
  192. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +52 -0
  193. data/spec/brcobranca/rghost_spec.rb +29 -0
  194. data/spec/brcobranca/util/empresa_spec.rb +36 -0
  195. data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +3 -0
  196. data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +3 -0
  197. data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +3 -0
  198. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +7 -0
  199. data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +7 -0
  200. data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +3 -0
  201. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
  202. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +7 -0
  203. data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +7 -0
  204. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
  205. data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +3 -0
  206. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +4 -0
  207. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
  208. data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +3 -0
  209. data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +4 -0
  210. data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +7 -0
  211. data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +7 -0
  212. data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +3 -0
  213. data/spec/spec.opts +8 -0
  214. data/spec/spec_helper.rb +38 -0
  215. data/spec/support/remessa_helpers.rb +13 -0
  216. data/spec/support/shared_examples/busca_logotipo.rb +15 -0
  217. data/spec/support/shared_examples/cnab240.rb +259 -0
  218. data/spec/support/shared_examples/cnab400.rb +180 -0
  219. data/spec/support/shared_examples/formatos_validos.rb +36 -0
  220. metadata +422 -0
@@ -0,0 +1,112 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'parseline'
3
+
4
+ module Bbrcobranca
5
+ module Retorno
6
+ module Cnab400
7
+ # Formato de Retorno CNAB 400
8
+ class BancoNordeste < Bbrcobranca::Retorno::Base
9
+ extend ParseLine::FixedWidth
10
+
11
+ def self.load_lines(file, options = {})
12
+ default_options = { except: [1] } # por padrao ignora a primeira linha que é header
13
+ options = default_options.merge!(options)
14
+
15
+ super file, options
16
+ end
17
+
18
+ fixed_width_layout do |parse|
19
+ # Todos os campos descritos no documento em ordem
20
+ parse.field :codigo_registro, 0..0
21
+
22
+ # :codigo_de_inscricao, 1..2 # identificacao do tipo de inscricao/empresa
23
+ # :numero_de_inscricao, 3..16 # numero de inscricao da empresa (cpf/cnpj)
24
+ # :zeros, 17..19
25
+
26
+ # Identificacao da empresa no banco
27
+ # :zeros, 20..20
28
+ parse.field :agencia_sem_dv, 17..20
29
+ parse.field :cedente_com_dv, 23..30
30
+
31
+ # :numero_controle_empresa, 37..61, # numero de controle da empresa
32
+ # :zeros, 62..69
33
+
34
+ parse.field :nosso_numero, 62..69
35
+
36
+ # :zeros, 82..91 # uso do banco
37
+ # :zeros, 92..103 # uso do banco
38
+ # :indicador_de_rateio, 104..104 # indicador de rateio de credito
39
+ # :zeros, 105..106
40
+ # :carteira, 107..107 # de novo?
41
+ parse.field :carteira, 107..107
42
+ parse.field :codigo_ocorrencia, 108..109
43
+ parse.field :data_ocorrencia, 110..115
44
+
45
+ # :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
46
+ # :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
47
+ # :brancos, 134..145 # complemento de registro
48
+
49
+ # :vencimento, 146..151 # data de vencimento do titulo (ddmmaa)
50
+ parse.field :data_vencimento, 146..151
51
+
52
+ # :valor_do_titulo, 152..164 # valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
53
+ parse.field :valor_titulo, 152..164
54
+
55
+ # :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
56
+ parse.field :banco_recebedor, 165..167
57
+
58
+ # :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
59
+ # :dac_ag_cobradora, 172..172 # dac da agencia cobradora
60
+ # :agencia_recebedora_com_dv, 168..172
61
+
62
+ # :especie, 173..174 # especie do titulo
63
+ parse.field :especie_documento, 173..174
64
+
65
+ # :tarifa_de_cobranca, 175..187 # valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
66
+ parse.field :valor_tarifa, 175..187
67
+
68
+ # :outras_despesas 188..200, # valor de outras despesas ou custos do protesto
69
+ # :juros_operacao_em_atraso, 201..213 # zeros?
70
+
71
+ # :valor_do_iof, 214..226 # valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
72
+ # :iof, 214..226
73
+
74
+ # :valor_abatimento, 227..239 # valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
75
+ parse.field :valor_abatimento, 227..239
76
+
77
+ # :descontos, 240..252 # valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
78
+ parse.field :desconto, 240..252
79
+
80
+ # :valor_recebido, 253..265 # valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
81
+ parse.field :valor_recebido, 253..265
82
+
83
+ # :juros_mora, 266..278 # valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
84
+ parse.field :juros_mora, 266..278
85
+
86
+ # :outros_creditos, 279..291 # valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
87
+ # :outros_recebimento, 279..291
88
+
89
+ # :brancos, 292..293
90
+ # :motivo_do_codigo_de_ocorrencia, 294..294
91
+
92
+ # :data_credito, 295..300 # data de credito desta liquidacao
93
+ parse.field :data_credito, 146..151
94
+
95
+ # :origem_pagamento, 301..303
96
+ # :brancos, 304..313
97
+ # :cheque_bradesco, 314..317
98
+ # :motivo_rejeicao, 318..327
99
+ # :brancos, 328..367
100
+ # :numero_do_cartorio, 368..369
101
+ # :numero_do_protocolo, 370..379
102
+ # :brancos, 380..393
103
+
104
+ parse.field :motivo_ocorrencia, 279..393
105
+
106
+ # :numero_sequencial, 394..399 # numero sequencial no arquivo
107
+ parse.field :sequencial, 394..399
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Bbrcobranca
4
+ module Retorno
5
+ module Cnab400
6
+ class Banrisul < Bbrcobranca::Retorno::Cnab400::Base
7
+ extend ParseLine::FixedWidth # Extendendo parseline
8
+
9
+ def self.load_lines(file, options = {})
10
+ default_options = { except: [1] } # por padrao ignora a primeira linha que é header
11
+ options = default_options.merge!(options)
12
+ super file, options
13
+ end
14
+
15
+ fixed_width_layout do |parse|
16
+ parse.field :codigo_registro, 0..0
17
+ parse.field :agencia_sem_dv, 17..20
18
+ parse.field :cedente_com_dv, 21..29
19
+ parse.field :nosso_numero, 62..71
20
+ parse.field :carteira, 107..107
21
+ parse.field :codigo_ocorrencia, 108..109
22
+ parse.field :data_ocorrencia, 110..115
23
+ parse.field :data_vencimento, 146..151
24
+ parse.field :valor_titulo, 152..164
25
+ parse.field :banco_recebedor, 165..167
26
+ parse.field :agencia_recebedora_com_dv, 168..172
27
+ parse.field :especie_documento, 173..174
28
+ parse.field :valor_tarifa, 175..187
29
+ parse.field :iof, 188..200
30
+ parse.field :valor_abatimento, 227..239
31
+ parse.field :desconto, 240..252
32
+ parse.field :valor_recebido, 253..265
33
+ parse.field :juros_mora, 266..278
34
+ parse.field :outros_recebimento, 279..291
35
+ parse.field :data_credito, 295..300
36
+ parse.field :motivo_ocorrencia, 382..391
37
+ parse.field :sequencial, 394..399
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,50 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'parseline'
3
+
4
+ module Bbrcobranca
5
+ module Retorno
6
+ module Cnab400
7
+ class Base < Bbrcobranca::Retorno::Base
8
+
9
+ # Load lines
10
+ def self.load_lines(file, options={})
11
+ return nil if file.blank?
12
+
13
+ codigo_banco = codigo_banco_do_arquivo(file)
14
+
15
+ case codigo_banco
16
+ when '001'
17
+ Bbrcobranca::Retorno::Cnab400::BancoBrasil.load_lines(file, options)
18
+ when "004"
19
+ Bbrcobranca::Retorno::Cnab400::BancoNordeste.load_lines(file, options)
20
+ when "041"
21
+ Bbrcobranca::Retorno::Cnab400::Banrisul.load_lines(file, options)
22
+ when "070"
23
+ Bbrcobranca::Retorno::Cnab400::BancoBrasilia.load_lines(file, options)
24
+ when "097"
25
+ Bbrcobranca::Retorno::Cnab400::Credisis.load_lines(file, options)
26
+ when "237"
27
+ Bbrcobranca::Retorno::Cnab400::Bradesco.load_lines(file, options)
28
+ when "341"
29
+ Bbrcobranca::Retorno::Cnab400::Itau.load_lines(file, options)
30
+ when "033", "353"
31
+ Bbrcobranca::Retorno::Cnab400::Santander.load_lines(file, options)
32
+ else
33
+ Bbrcobranca::Retorno::RetornoCnab400.load_lines(file, options)
34
+ end
35
+ end
36
+
37
+ # Codigo do banco lido do arquivo.
38
+ # Registro Header [76..78]
39
+ def self.codigo_banco_do_arquivo(file)
40
+ arquivo = File.open(file, "r")
41
+ header = arquivo.gets
42
+ codigo_banco = header.blank? ? nil : header[76..78]
43
+ arquivo.close
44
+ codigo_banco
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,124 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Bbrcobranca
4
+ module Retorno
5
+ module Cnab400
6
+ # Formato de Retorno CNAB 400
7
+ # Baseado em: http://www.bradesco.com.br/portal/PDF/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo/cobranca/4008-524-0121-08-layout-cobranca-versao-portugues.pdf
8
+ class Bradesco < Bbrcobranca::Retorno::Cnab400::Base
9
+ extend ParseLine::FixedWidth # Extendendo parseline
10
+
11
+ # Load lines
12
+ def self.load_lines(file, options = {})
13
+ default_options = { except: [1] } # por padrao ignora a primeira linha que é header
14
+ options = default_options.merge!(options)
15
+ super file, options
16
+ end
17
+
18
+ # Fixed width layout for Bradesco
19
+ fixed_width_layout do |parse|
20
+ # Todos os campos descritos no documento em ordem
21
+ # :tipo_de_registro, 0..0 # identificacao do registro transacao
22
+ parse.field :codigo_registro, 0..0
23
+
24
+ # :codigo_de_inscricao, 1..2 # identificacao do tipo de inscricao/empresa
25
+ # :numero_de_inscricao, 3..16 # numero de inscricao da empresa (cpf/cnpj)
26
+ # :zeros, 17..19
27
+
28
+ # Identificacao da empresa no banco
29
+ # :zeros, 20..20
30
+ # :carteira, 21..23
31
+ # :agencia_sem_dv, 24..28
32
+ # :cedente_com_dv 29..36
33
+ parse.field :carteira, 21..23
34
+ parse.field :agencia_sem_dv, 24..28
35
+ parse.field :cedente_com_dv, 29..36
36
+
37
+ # :numero_controle_empresa, 37..61, # numero de controle da empresa
38
+ # :zeros, 62..69
39
+
40
+ # :nosso_numero, 70..81 # identificacao do titulo no banco
41
+ parse.field :nosso_numero, 70..81
42
+
43
+ # :zeros, 82..91 # uso do banco
44
+ # :zeros, 92..103 # uso do banco
45
+ # :indicador_de_rateio, 104..104 # indicador de rateio de credito
46
+ # :zeros, 105..106
47
+ # :carteira, 107..107 # de novo?
48
+ parse.field :codigo_ocorrencia, 108..109
49
+ parse.field :data_ocorrencia, 110..115 # data de ocorrencia no banco (ddmmaa)
50
+ # :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
51
+ parse.field :documento_numero, 116..125
52
+ # :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
53
+ # :brancos, 134..145 # complemento de registro
54
+
55
+ # :vencimento, 146..151 # data de vencimento do titulo (ddmmaa)
56
+ parse.field :data_vencimento, 146..151
57
+
58
+ # :valor_do_titulo, 152..164 # valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
59
+ parse.field :valor_titulo, 152..164
60
+
61
+ # :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
62
+ parse.field :banco_recebedor, 165..167
63
+
64
+ # :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
65
+ # :dac_ag_cobradora, 172..172 # dac da agencia cobradora
66
+ parse.field :agencia_recebedora_com_dv, 168..172
67
+
68
+ # :especie, 173..174 # especie do titulo
69
+ parse.field :especie_documento, 173..174
70
+
71
+ # :tarifa_de_cobranca, 175..187 # valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
72
+ parse.field :valor_tarifa, 175..187
73
+
74
+ # :outras_despesas 188..200, # valor de outras despesas ou custos do protesto
75
+ # :juros_operacao_em_atraso, 201..213 # zeros?
76
+
77
+ # :valor_do_iof, 214..226 # valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
78
+ parse.field :iof, 214..226
79
+
80
+ # :valor_abatimento, 227..239 # valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
81
+ parse.field :valor_abatimento, 227..239
82
+
83
+ # :descontos, 240..252 # valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
84
+ parse.field :desconto, 240..252
85
+
86
+ # :valor_recebido, 253..265 # valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
87
+ parse.field :valor_recebido, 253..265
88
+
89
+ # :juros_mora, 266..278 # valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
90
+ parse.field :juros_mora, 266..278
91
+
92
+ # :outros_creditos, 279..291 # valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
93
+ parse.field :outros_recebimento, 279..291
94
+
95
+ # :brancos, 292..293
96
+ # :motivo_do_codigo_de_ocorrencia, 294..294
97
+
98
+ # :data_credito, 295..300 # data de credito desta liquidacao
99
+ parse.field :data_credito, 295..300
100
+
101
+ # :origem_pagamento, 301..303
102
+ # :brancos, 304..313
103
+ # :cheque_bradesco, 314..317
104
+ # :motivo_rejeicao, 318..327
105
+ # :brancos, 328..367
106
+ # :numero_do_cartorio, 368..369
107
+ # :numero_do_protocolo, 370..379
108
+ # :brancos, 380..393
109
+
110
+ parse.field :motivo_ocorrencia, 318..327, ->(motivos) do
111
+ motivos.scan(/.{2}/).reject(&:blank?).reject{|motivo| motivo == '00'}
112
+ end
113
+
114
+ # :numero_sequencial, 394..399 # numero sequencial no arquivo
115
+ parse.field :sequencial, 394..399
116
+ end
117
+
118
+ def agencia_com_dv
119
+ "#{agencia_sem_dv}-#{agencia_sem_dv.modulo11}"
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,115 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'parseline'
3
+
4
+ module Bbrcobranca
5
+ module Retorno
6
+ module Cnab400
7
+ # Formato de Retorno CNAB 400
8
+ class Credisis < Bbrcobranca::Retorno::Base
9
+ extend ParseLine::FixedWidth
10
+
11
+ def self.load_lines(file, options = {})
12
+ default_options = { except: [1] } # por padrao ignora a primeira linha que é header
13
+ options = default_options.merge!(options)
14
+
15
+ super file, options
16
+ end
17
+
18
+ # Fixed width layout for Bradesco
19
+ fixed_width_layout do |parse|
20
+ # Todos os campos descritos no documento em ordem
21
+ # :tipo_de_registro, 0..0 # identificacao do registro transacao
22
+ parse.field :codigo_registro, 0..0
23
+
24
+ # :codigo_de_inscricao, 1..2 # identificacao do tipo de inscricao/empresa
25
+ # :numero_de_inscricao, 3..16 # numero de inscricao da empresa (cpf/cnpj)
26
+ # :zeros, 17..19
27
+
28
+ # Identificacao da empresa no banco
29
+ # :zeros, 20..20
30
+ # :carteira, 21..23
31
+ # :agencia_sem_dv, 24..28
32
+ # :cedente_com_dv 29..36
33
+ # :carteira, 21..23
34
+ # :agencia_sem_dv, 24..28
35
+ # :cedente_com_dv, 29..36
36
+
37
+ # :numero_controle_empresa, 37..61, # numero de controle da empresa
38
+ # :zeros, 62..69
39
+
40
+ # :nosso_numero, 62..72 # identificacao do titulo no banco
41
+ parse.field :nosso_numero, 62..72
42
+
43
+ # :zeros, 82..91 # uso do banco
44
+ # :zeros, 92..103 # uso do banco
45
+ # :indicador_de_rateio, 104..104 # indicador de rateio de credito
46
+ # :zeros, 105..106
47
+ # :carteira, 107..107 # de novo?
48
+ # :cod_de_ocorrencia, 108..109 # código de ocorrencia
49
+ # :data_de_ocorrencia, 110..115 # data de ocorrencia no banco (ddmmaa)
50
+ # :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
51
+ # :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
52
+ # :brancos, 134..145 # complemento de registro
53
+
54
+ # :vencimento, 146..151 # data de vencimento do titulo (ddmmaa)
55
+ parse.field :data_vencimento, 146..151
56
+
57
+ # :valor_do_titulo, 152..164 # valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
58
+ parse.field :valor_titulo, 152..164
59
+
60
+ # :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
61
+ # :banco_recebedor, 165..167
62
+
63
+ # :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
64
+ # :dac_ag_cobradora, 172..172 # dac da agencia cobradora
65
+ # :agencia_recebedora_com_dv, 168..172
66
+
67
+ # :especie, 173..174 # especie do titulo
68
+ # :especie_documento, 173..174
69
+
70
+ # :tarifa_de_cobranca, 175..187 # valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
71
+ # :valor_tarifa, 175..187
72
+
73
+ # :outras_despesas 188..200, # valor de outras despesas ou custos do protesto
74
+ # :juros_operacao_em_atraso, 201..213 # zeros?
75
+
76
+ # :valor_do_iof, 214..226 # valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
77
+ # :iof, 214..226
78
+
79
+ # :valor_abatimento, 227..239 # valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
80
+ # :valor_abatimento, 227..239
81
+
82
+ # :descontos, 240..252 # valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
83
+ # :desconto, 240..252
84
+
85
+ # :valor_recebido, 253..265 # valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
86
+ parse.field :valor_recebido, 253..265
87
+
88
+ # :juros_mora, 266..278 # valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
89
+ # :juros_mora, 266..278
90
+
91
+ # :outros_creditos, 279..291 # valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
92
+ # :outros_recebimento, 279..291
93
+
94
+ # :brancos, 292..293
95
+ # :motivo_do_codigo_de_ocorrencia, 294..294
96
+
97
+ # :data_credito, 295..300 # data de credito desta liquidacao
98
+ parse.field :data_credito, 175..180
99
+
100
+ # :origem_pagamento, 301..303
101
+ # :brancos, 304..313
102
+ # :cheque_bradesco, 314..317
103
+ # :motivo_rejeicao, 318..327
104
+ # :brancos, 328..367
105
+ # :numero_do_cartorio, 368..369
106
+ # :numero_do_protocolo, 370..379
107
+ # :brancos, 380..393
108
+
109
+ # :numero_sequencial, 394..399 # numero sequencial no arquivo
110
+ parse.field :sequencial, 394..399
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end