bbrcobranca 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1 -0
- data/LICENSE +20 -0
- data/README.md +12 -0
- data/Rakefile +13 -0
- data/lib/bbrcobranca.rb +196 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasil.eps +5402 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasilia.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/banconordeste.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/banestes.eps +5198 -0
- data/lib/bbrcobranca/arquivos/logos/banestes_carne.eps +5206 -0
- data/lib/bbrcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/bbrcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/bbrcobranca/arquivos/logos/bradesco.eps +5210 -0
- data/lib/bbrcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
- data/lib/bbrcobranca/arquivos/logos/caixa.eps +5111 -0
- data/lib/bbrcobranca/arquivos/logos/caixa_carne.eps +5115 -0
- data/lib/bbrcobranca/arquivos/logos/cecred.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/cecred_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/credisis.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/credisis_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/hsbc.eps +5124 -0
- data/lib/bbrcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
- data/lib/bbrcobranca/arquivos/logos/itau.eps +5318 -0
- data/lib/bbrcobranca/arquivos/logos/itau_carne.eps +5322 -0
- data/lib/bbrcobranca/arquivos/logos/santander.eps +5305 -0
- data/lib/bbrcobranca/arquivos/logos/santander_carne.eps +5313 -0
- data/lib/bbrcobranca/arquivos/logos/sicoob.eps +5375 -0
- data/lib/bbrcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
- data/lib/bbrcobranca/arquivos/logos/sicredi.eps +5379 -0
- data/lib/bbrcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
- data/lib/bbrcobranca/arquivos/logos/unicred.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/unicred_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/templates/modelo_carne.eps +1112 -0
- data/lib/bbrcobranca/arquivos/templates/modelo_generico.eps +0 -0
- data/lib/bbrcobranca/boleto/banco_brasil.rb +157 -0
- data/lib/bbrcobranca/boleto/banco_brasilia.rb +102 -0
- data/lib/bbrcobranca/boleto/banco_nordeste.rb +79 -0
- data/lib/bbrcobranca/boleto/banestes.rb +85 -0
- data/lib/bbrcobranca/boleto/banrisul.rb +94 -0
- data/lib/bbrcobranca/boleto/base.rb +256 -0
- data/lib/bbrcobranca/boleto/bradesco.rb +99 -0
- data/lib/bbrcobranca/boleto/bradesco_grb.rb +85 -0
- data/lib/bbrcobranca/boleto/caixa.rb +121 -0
- data/lib/bbrcobranca/boleto/cecred.rb +86 -0
- data/lib/bbrcobranca/boleto/credisis.rb +116 -0
- data/lib/bbrcobranca/boleto/hsbc.rb +94 -0
- data/lib/bbrcobranca/boleto/itau.rb +138 -0
- data/lib/bbrcobranca/boleto/itau_adimplere.rb +159 -0
- data/lib/bbrcobranca/boleto/santander.rb +84 -0
- data/lib/bbrcobranca/boleto/santander_adimplere.rb +73 -0
- data/lib/bbrcobranca/boleto/sicoob.rb +119 -0
- data/lib/bbrcobranca/boleto/sicredi.rb +142 -0
- data/lib/bbrcobranca/boleto/template/base.rb +25 -0
- data/lib/bbrcobranca/boleto/template/rghost.rb +315 -0
- data/lib/bbrcobranca/boleto/template/rghost_carne.rb +317 -0
- data/lib/bbrcobranca/boleto/unicred.rb +141 -0
- data/lib/bbrcobranca/calculo.rb +115 -0
- data/lib/bbrcobranca/calculo_data.rb +62 -0
- data/lib/bbrcobranca/currency.rb +69 -0
- data/lib/bbrcobranca/formatacao.rb +103 -0
- data/lib/bbrcobranca/formatacao_string.rb +35 -0
- data/lib/bbrcobranca/limpeza.rb +20 -0
- data/lib/bbrcobranca/remessa/base.rb +76 -0
- data/lib/bbrcobranca/remessa/cnab240/banco_brasil.rb +246 -0
- data/lib/bbrcobranca/remessa/cnab240/base.rb +512 -0
- data/lib/bbrcobranca/remessa/cnab240/base_correspondente.rb +299 -0
- data/lib/bbrcobranca/remessa/cnab240/caixa.rb +163 -0
- data/lib/bbrcobranca/remessa/cnab240/cecred.rb +151 -0
- data/lib/bbrcobranca/remessa/cnab240/sicoob.rb +226 -0
- data/lib/bbrcobranca/remessa/cnab240/sicoob_banco_brasil.rb +94 -0
- data/lib/bbrcobranca/remessa/cnab240/sicredi.rb +177 -0
- data/lib/bbrcobranca/remessa/cnab240/unicred.rb +9 -0
- data/lib/bbrcobranca/remessa/cnab400/banco_brasil.rb +169 -0
- data/lib/bbrcobranca/remessa/cnab400/banco_brasilia.rb +166 -0
- data/lib/bbrcobranca/remessa/cnab400/banco_nordeste.rb +160 -0
- data/lib/bbrcobranca/remessa/cnab400/banrisul.rb +155 -0
- data/lib/bbrcobranca/remessa/cnab400/base.rb +119 -0
- data/lib/bbrcobranca/remessa/cnab400/bradesco.rb +130 -0
- data/lib/bbrcobranca/remessa/cnab400/citibank.rb +138 -0
- data/lib/bbrcobranca/remessa/cnab400/credisis.rb +128 -0
- data/lib/bbrcobranca/remessa/cnab400/itau.rb +157 -0
- data/lib/bbrcobranca/remessa/cnab400/santander.rb +231 -0
- data/lib/bbrcobranca/remessa/cnab400/sicoob.rb +308 -0
- data/lib/bbrcobranca/remessa/cnab400/unicred.rb +143 -0
- data/lib/bbrcobranca/remessa/pagamento.rb +288 -0
- data/lib/bbrcobranca/retorno/base.rb +49 -0
- data/lib/bbrcobranca/retorno/cnab240/base.rb +42 -0
- data/lib/bbrcobranca/retorno/cnab240/caixa.rb +48 -0
- data/lib/bbrcobranca/retorno/cnab240/cecred.rb +102 -0
- data/lib/bbrcobranca/retorno/cnab240/santander.rb +95 -0
- data/lib/bbrcobranca/retorno/cnab240/sicoob.rb +99 -0
- data/lib/bbrcobranca/retorno/cnab240/sicredi.rb +79 -0
- data/lib/bbrcobranca/retorno/cnab400/banco_brasil.rb +127 -0
- data/lib/bbrcobranca/retorno/cnab400/banco_brasilia.rb +89 -0
- data/lib/bbrcobranca/retorno/cnab400/banco_nordeste.rb +112 -0
- data/lib/bbrcobranca/retorno/cnab400/banrisul.rb +42 -0
- data/lib/bbrcobranca/retorno/cnab400/base.rb +50 -0
- data/lib/bbrcobranca/retorno/cnab400/bradesco.rb +124 -0
- data/lib/bbrcobranca/retorno/cnab400/credisis.rb +115 -0
- data/lib/bbrcobranca/retorno/cnab400/itau.rb +143 -0
- data/lib/bbrcobranca/retorno/cnab400/santander.rb +57 -0
- data/lib/bbrcobranca/retorno/cnab400/unicred.rb +118 -0
- data/lib/bbrcobranca/retorno/retorno_cbr643.rb +49 -0
- data/lib/bbrcobranca/retorno/retorno_cnab240.rb +97 -0
- data/lib/bbrcobranca/retorno/retorno_cnab400.rb +70 -0
- data/lib/bbrcobranca/util/date.rb +20 -0
- data/lib/bbrcobranca/util/empresa.rb +28 -0
- data/lib/bbrcobranca/util/errors.rb +76 -0
- data/lib/bbrcobranca/validations.rb +232 -0
- data/lib/bbrcobranca/version.rb +6 -0
- data/spec/arquivos/CBR64310.RET +28 -0
- data/spec/arquivos/CNAB240.RET +74 -0
- data/spec/arquivos/CNAB240CECRED.RET +10 -0
- data/spec/arquivos/CNAB240SANTANDER.RET +8 -0
- data/spec/arquivos/CNAB240SICOOB.RET +10 -0
- data/spec/arquivos/CNAB240SICREDI.CRT +8 -0
- data/spec/arquivos/CNAB400.RET +54 -0
- data/spec/arquivos/CNAB400BANCOBRASILIA.RET +3 -0
- data/spec/arquivos/CNAB400BANCONORDESTE.RET +3 -0
- data/spec/arquivos/CNAB400BANRISUL.RET +3 -0
- data/spec/arquivos/CNAB400BRADESCO.RET +8 -0
- data/spec/arquivos/CNAB400CREDISIS.RET +3 -0
- data/spec/arquivos/CNAB400ITAU.RET +54 -0
- data/spec/arquivos/CNAB400SANTANDER.RET +54 -0
- data/spec/arquivos/CNAB400UNICRED.RET +3 -0
- data/spec/bbrcobranca_spec.rb +34 -0
- data/spec/brcobranca/base_spec.rb +170 -0
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +334 -0
- data/spec/brcobranca/boleto/banco_brasilia_spec.rb +152 -0
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +161 -0
- data/spec/brcobranca/boleto/banestes_spec.rb +194 -0
- data/spec/brcobranca/boleto/banrisul_spec.rb +182 -0
- data/spec/brcobranca/boleto/bradesco_spec.rb +211 -0
- data/spec/brcobranca/boleto/caixa_spec.rb +161 -0
- data/spec/brcobranca/boleto/cecred_spec.rb +147 -0
- data/spec/brcobranca/boleto/credisis_spec.rb +159 -0
- data/spec/brcobranca/boleto/hsbc_spec.rb +172 -0
- data/spec/brcobranca/boleto/itau_spec.rb +262 -0
- data/spec/brcobranca/boleto/santander_spec.rb +143 -0
- data/spec/brcobranca/boleto/sicoob_spec.rb +193 -0
- data/spec/brcobranca/boleto/sicredi_spec.rb +190 -0
- data/spec/brcobranca/boleto/unicred_spec.rb +149 -0
- data/spec/brcobranca/boletos_em_lote_spec.rb +38 -0
- data/spec/brcobranca/calculo_data_spec.rb +33 -0
- data/spec/brcobranca/calculo_spec.rb +185 -0
- data/spec/brcobranca/currency_spec.rb +79 -0
- data/spec/brcobranca/formatacao_spec.rb +46 -0
- data/spec/brcobranca/formatacao_string_spec.rb +24 -0
- data/spec/brcobranca/limpeza_spec.rb +10 -0
- data/spec/brcobranca/remessa/base_spec.rb +67 -0
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +217 -0
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +91 -0
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +163 -0
- data/spec/brcobranca/remessa/cnab240/cecred_spec.rb +164 -0
- data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +268 -0
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +198 -0
- data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +201 -0
- data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +193 -0
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +187 -0
- data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +183 -0
- data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +187 -0
- data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +190 -0
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +53 -0
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +201 -0
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +126 -0
- data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +188 -0
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +190 -0
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +152 -0
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +217 -0
- data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +185 -0
- data/spec/brcobranca/remessa/pagamento_spec.rb +227 -0
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +23 -0
- data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +31 -0
- data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +36 -0
- data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +39 -0
- data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +41 -0
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +57 -0
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +58 -0
- data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +25 -0
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +58 -0
- data/spec/brcobranca/retorno/cnab400/santander_spec.rb +39 -0
- data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +42 -0
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +69 -0
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +57 -0
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +52 -0
- data/spec/brcobranca/rghost_spec.rb +29 -0
- data/spec/brcobranca/util/empresa_spec.rb +36 -0
- data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-itau-cnab400.rem +4 -0
- data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +4 -0
- data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +3 -0
- data/spec/spec.opts +8 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/support/remessa_helpers.rb +13 -0
- data/spec/support/shared_examples/busca_logotipo.rb +15 -0
- data/spec/support/shared_examples/cnab240.rb +259 -0
- data/spec/support/shared_examples/cnab400.rb +180 -0
- data/spec/support/shared_examples/formatos_validos.rb +36 -0
- metadata +422 -0
@@ -0,0 +1,70 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# DEPRECATED
|
4
|
+
#
|
5
|
+
# Classe original desenvolvida a partir do layout do Itau.
|
6
|
+
# Movido para: cnab400/itau.rb
|
7
|
+
#
|
8
|
+
require 'parseline'
|
9
|
+
module Bbrcobranca
|
10
|
+
module Retorno
|
11
|
+
# Formato de Retorno CNAB 400
|
12
|
+
|
13
|
+
# Baseado em: http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf
|
14
|
+
class RetornoCnab400 < Base
|
15
|
+
extend ParseLine::FixedWidth # Extendendo parseline
|
16
|
+
|
17
|
+
def self.load_lines(file, options = {})
|
18
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
19
|
+
options = default_options.merge!(options)
|
20
|
+
|
21
|
+
super file, options
|
22
|
+
end
|
23
|
+
|
24
|
+
fixed_width_layout do |parse|
|
25
|
+
parse.field :codigo_registro, 0..0
|
26
|
+
parse.field :agencia_com_dv, 17..20 # FIXME - SEM DIV
|
27
|
+
parse.field :cedente_com_dv, 23..28
|
28
|
+
parse.field :nosso_numero, 62..69
|
29
|
+
parse.field :carteira_variacao, 82..84
|
30
|
+
parse.field :carteira, 107..107
|
31
|
+
parse.field :codigo_ocorrencia, 108..109
|
32
|
+
parse.field :data_ocorrencia, 110..115
|
33
|
+
parse.field :data_vencimento, 146..151
|
34
|
+
parse.field :valor_titulo, 152..164
|
35
|
+
parse.field :banco_recebedor, 165..167
|
36
|
+
parse.field :agencia_recebedora_com_dv, 168..172
|
37
|
+
parse.field :especie_documento, 173..174
|
38
|
+
parse.field :valor_tarifa, 175..187
|
39
|
+
parse.field :iof, 214..226
|
40
|
+
parse.field :valor_abatimento, 227..239
|
41
|
+
parse.field :desconto, 240..252
|
42
|
+
parse.field :valor_recebido, 253..265
|
43
|
+
parse.field :juros_mora, 266..278
|
44
|
+
parse.field :outros_recebimento, 279..291
|
45
|
+
parse.field :data_credito, 295..300
|
46
|
+
parse.field :motivo_ocorrencia, 377..384, ->(motivos) do
|
47
|
+
motivos.scan(/.{2}/).reject(&:blank?).reject{|motivo| motivo == '00'}
|
48
|
+
end
|
49
|
+
parse.field :sequencial, 394..399
|
50
|
+
|
51
|
+
# Campos da classe base que não encontrei a relação com CNAB400
|
52
|
+
# parse.field :tipo_cobranca,80..80
|
53
|
+
# parse.field :tipo_cobranca_anterior,81..81
|
54
|
+
# parse.field :natureza_recebimento,86..87
|
55
|
+
# parse.field :convenio,31..37
|
56
|
+
# parse.field :comando,108..109
|
57
|
+
# parse.field :juros_desconto,201..213
|
58
|
+
# parse.field :iof_desconto,214..226
|
59
|
+
# parse.field :desconto_concedito,240..252
|
60
|
+
# parse.field :outras_despesas,279..291
|
61
|
+
# parse.field :abatimento_nao_aproveitado,292..304
|
62
|
+
# parse.field :data_liquidacao,295..300
|
63
|
+
# parse.field :valor_lancamento,305..317
|
64
|
+
# parse.field :indicativo_lancamento,318..318
|
65
|
+
# parse.field :indicador_valor,319..319
|
66
|
+
# parse.field :valor_ajuste,320..331
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# @author Eduardo Reboucas
|
4
|
+
#
|
5
|
+
# Para manter compatibilidade com ActiveModel
|
6
|
+
|
7
|
+
require 'date'
|
8
|
+
require 'time'
|
9
|
+
|
10
|
+
class Date
|
11
|
+
def self.current
|
12
|
+
Time.respond_to?(:zone) && Time.zone ? Time.zone.today : Date.today
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Time
|
17
|
+
def self.current
|
18
|
+
Time.respond_to?(:zone) && Time.zone ? Time.zone.now : Time.now
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# @author Kivanio Barbosa
|
4
|
+
module Bbrcobranca
|
5
|
+
# Métodos auxiliares
|
6
|
+
module Util
|
7
|
+
class Empresa
|
8
|
+
def initialize(documento, zero = true)
|
9
|
+
@documento = documento
|
10
|
+
@zero = zero
|
11
|
+
end
|
12
|
+
|
13
|
+
# Tipo de empresa (fisica ou juridica)
|
14
|
+
# de acordo com o documento (CPF/CNPJ)
|
15
|
+
# 1 = CPF
|
16
|
+
# 2 = CNPJ
|
17
|
+
#
|
18
|
+
# @return [String]
|
19
|
+
# @param [String] documento Número do documento da empresa
|
20
|
+
# @param [Boollean] zero Incluir zero a esquerda
|
21
|
+
def tipo
|
22
|
+
@tipo = @documento.somente_numeros.size <= 11 ? '1' : '2'
|
23
|
+
@tipo = @tipo.rjust(2, '0') if @zero
|
24
|
+
@tipo
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Bbrcobranca
|
2
|
+
module Util
|
3
|
+
class Errors
|
4
|
+
|
5
|
+
include Enumerable
|
6
|
+
|
7
|
+
CALLBACKS_OPTIONS = [:if, :unless, :on, :allow_nil, :allow_blank, :strict]
|
8
|
+
MESSAGE_OPTIONS = [:message]
|
9
|
+
|
10
|
+
attr_reader :messages, :details
|
11
|
+
|
12
|
+
def initialize(base)
|
13
|
+
@base = base
|
14
|
+
@messages = apply_default_array({})
|
15
|
+
@details = apply_default_array({})
|
16
|
+
end
|
17
|
+
|
18
|
+
def add(attribute, message = :invalid, options = {})
|
19
|
+
message = message.call if message.respond_to?(:call)
|
20
|
+
detail = normalize_detail(message, options)
|
21
|
+
message = normalize_message(attribute, message, options)
|
22
|
+
details[attribute.to_sym] << detail
|
23
|
+
messages[attribute.to_sym] << message
|
24
|
+
end
|
25
|
+
|
26
|
+
def size
|
27
|
+
@messages.values.flatten.size
|
28
|
+
end
|
29
|
+
alias :count :size
|
30
|
+
|
31
|
+
def generate_message(attribute, type = :invalid, options = {})
|
32
|
+
:"errors.attributes.#{attribute}.#{type}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def full_messages
|
36
|
+
@messages.values.flatten
|
37
|
+
end
|
38
|
+
alias :to_a :full_messages
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def apply_default_array(hash)
|
43
|
+
hash.default_proc = proc { |h, key| h[key] = [] }
|
44
|
+
hash
|
45
|
+
end
|
46
|
+
|
47
|
+
def normalize_message(attribute, message, options)
|
48
|
+
case message
|
49
|
+
when Symbol
|
50
|
+
generate_message(attribute, message, except(options, *CALLBACKS_OPTIONS))
|
51
|
+
else
|
52
|
+
if message.start_with?(variable_name(attribute))
|
53
|
+
message
|
54
|
+
else
|
55
|
+
"#{variable_name(attribute)} #{message}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def normalize_detail(message, options)
|
61
|
+
{ error: message }.merge(except(options, *CALLBACKS_OPTIONS + MESSAGE_OPTIONS))
|
62
|
+
end
|
63
|
+
|
64
|
+
def except(hash, *keys)
|
65
|
+
dup = hash.dup
|
66
|
+
keys.each { |key| dup.delete(key) }
|
67
|
+
dup
|
68
|
+
end
|
69
|
+
|
70
|
+
def variable_name(symbol)
|
71
|
+
symbol.to_s.tr("_", " ").capitalize
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,232 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# @author Eduardo Reboucas
|
3
|
+
require 'bbrcobranca/util/errors'
|
4
|
+
|
5
|
+
module Bbrcobranca
|
6
|
+
|
7
|
+
# Métodos auxiliares de validação para evitar ActiveSupport e ActiveModel com
|
8
|
+
# mínimo de impacto nas definições das validações existentes
|
9
|
+
|
10
|
+
module Validations
|
11
|
+
|
12
|
+
def self.included(base)
|
13
|
+
base.extend(ClassMethods)
|
14
|
+
end
|
15
|
+
|
16
|
+
module ClassMethods
|
17
|
+
|
18
|
+
attr_reader :presences
|
19
|
+
attr_reader :lengths
|
20
|
+
attr_reader :numericals
|
21
|
+
attr_reader :inclusions
|
22
|
+
attr_reader :eachs
|
23
|
+
|
24
|
+
def validates_presence_of(*attr_names)
|
25
|
+
@presences ||= []
|
26
|
+
@presences = @presences << attr_names
|
27
|
+
end
|
28
|
+
|
29
|
+
def validates_length_of(*attr_names)
|
30
|
+
@lengths ||= []
|
31
|
+
@lengths = @lengths << attr_names
|
32
|
+
end
|
33
|
+
|
34
|
+
def validates_numericality_of(*attr_names)
|
35
|
+
@numericals ||= []
|
36
|
+
@numericals = @numericals << attr_names
|
37
|
+
end
|
38
|
+
|
39
|
+
def validates_inclusion_of(*attr_names)
|
40
|
+
@inclusions ||= []
|
41
|
+
@inclusions = @inclusions << attr_names
|
42
|
+
end
|
43
|
+
|
44
|
+
def validates_each(*attr_names, &block)
|
45
|
+
@eachs ||= {}
|
46
|
+
attr_names.each do |attr_name|
|
47
|
+
@eachs[attr_name] = block
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def with_options(options, &block)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
def errors
|
57
|
+
@errors ||= Bbrcobranca::Util::Errors.new(self)
|
58
|
+
end
|
59
|
+
|
60
|
+
def valid?
|
61
|
+
#puts "** #{self.class}"
|
62
|
+
#puts "** #{self.class.superclass}"
|
63
|
+
all_valid = true
|
64
|
+
all_valid = false if !check_eachs
|
65
|
+
all_valid = false if !check_presences
|
66
|
+
all_valid = false if !check_numericals
|
67
|
+
all_valid = false if !check_lengths
|
68
|
+
all_valid = false if !check_inclusions
|
69
|
+
return all_valid
|
70
|
+
end
|
71
|
+
|
72
|
+
def invalid?
|
73
|
+
!valid?
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def check_eachs
|
79
|
+
eachs = {}
|
80
|
+
if self.class.superclass.superclass.respond_to?(:eachs)
|
81
|
+
eachs.merge!(self.class.superclass.superclass.eachs || {})
|
82
|
+
end
|
83
|
+
if self.class.superclass.respond_to?(:eachs)
|
84
|
+
eachs.merge!(self.class.superclass.eachs || {})
|
85
|
+
end
|
86
|
+
if self.class.eachs
|
87
|
+
eachs.merge!(self.class.eachs)
|
88
|
+
end
|
89
|
+
return true if eachs.keys.size == 0
|
90
|
+
eachs.each do |attr_name, block|
|
91
|
+
value = ''
|
92
|
+
begin
|
93
|
+
value = self.send(attr_name)
|
94
|
+
rescue
|
95
|
+
end
|
96
|
+
block.call(self, attr_name, value)
|
97
|
+
end
|
98
|
+
return errors.size == 0
|
99
|
+
end
|
100
|
+
|
101
|
+
def check_presences
|
102
|
+
presences = []
|
103
|
+
if self.class.superclass.superclass.respond_to?(:presences)
|
104
|
+
presences = self.class.superclass.superclass.presences || []
|
105
|
+
end
|
106
|
+
if self.class.superclass.respond_to?(:presences)
|
107
|
+
presences += self.class.superclass.presences || []
|
108
|
+
end
|
109
|
+
if self.class.presences
|
110
|
+
presences += self.class.presences
|
111
|
+
end
|
112
|
+
all_present = true
|
113
|
+
presences.each do |presence|
|
114
|
+
presence.select { |p| p.is_a? Symbol}.each do |variable|
|
115
|
+
if blank?(self.send(variable))
|
116
|
+
all_present = false
|
117
|
+
errors.add variable, presence[-1][:message]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
return all_present
|
122
|
+
end
|
123
|
+
|
124
|
+
def check_numericals
|
125
|
+
numericals = []
|
126
|
+
if self.class.superclass.respond_to?(:numericals)
|
127
|
+
numericals = self.class.superclass.numericals || []
|
128
|
+
end
|
129
|
+
if self.class.numericals
|
130
|
+
numericals += self.class.numericals
|
131
|
+
end
|
132
|
+
return true if !numericals
|
133
|
+
all_numerical = true
|
134
|
+
numericals.each do |numerical|
|
135
|
+
numerical.select { |p| p.is_a? Symbol}.each do |variable|
|
136
|
+
if self.respond_to?(variable) && self.send(variable) && (self.send(variable).to_s =~ /\A[+-]?\d+\z/).nil?
|
137
|
+
all_numerical = false
|
138
|
+
errors.add variable, numerical[-1][:message]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
return all_numerical
|
143
|
+
end
|
144
|
+
|
145
|
+
def check_lengths
|
146
|
+
lengths = []
|
147
|
+
if self.class.superclass.superclass.respond_to?(:lengths)
|
148
|
+
lengths = self.class.superclass.superclass.lengths || []
|
149
|
+
end
|
150
|
+
if self.class.superclass.respond_to?(:lengths)
|
151
|
+
lengths += self.class.superclass.lengths || []
|
152
|
+
end
|
153
|
+
if self.class.lengths
|
154
|
+
lengths += self.class.lengths
|
155
|
+
end
|
156
|
+
return true if !lengths
|
157
|
+
all_checked = true
|
158
|
+
lengths.each do |rule|
|
159
|
+
variable = rule[0]
|
160
|
+
next if !self.respond_to?(variable)
|
161
|
+
value = self.send(variable)
|
162
|
+
if rule[-1][:in]
|
163
|
+
if !value
|
164
|
+
all_checked = false
|
165
|
+
errors.add variable, rule[-1][:message]
|
166
|
+
elsif value.size < rule[-1][:in].first || value.size > rule[-1][:in].last
|
167
|
+
all_checked = false
|
168
|
+
errors.add variable, rule[-1][:message]
|
169
|
+
end
|
170
|
+
end
|
171
|
+
if rule[-1][:is]
|
172
|
+
if !value
|
173
|
+
all_checked = false
|
174
|
+
errors.add variable, rule[-1][:message]
|
175
|
+
elsif value.to_s.size != rule[-1][:is]
|
176
|
+
all_checked = false
|
177
|
+
errors.add variable, rule[-1][:message]
|
178
|
+
end
|
179
|
+
end
|
180
|
+
if rule[-1][:minimum] && rule[-1][:maximum]
|
181
|
+
if !value || value.size < rule[-1][:minimum] || value.size > rule[-1][:maximum]
|
182
|
+
all_checked = false
|
183
|
+
errors.add variable, rule[-1][:message]
|
184
|
+
end
|
185
|
+
elsif rule[-1][:maximum]
|
186
|
+
if value && value.size > rule[-1][:maximum]
|
187
|
+
all_checked = false
|
188
|
+
errors.add variable, rule[-1][:message]
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
return all_checked
|
193
|
+
end
|
194
|
+
|
195
|
+
def check_inclusions
|
196
|
+
inclusions = []
|
197
|
+
if self.class.superclass.superclass.respond_to?(:inclusions)
|
198
|
+
inclusions = self.class.superclass.superclass.inclusions || []
|
199
|
+
end
|
200
|
+
if self.class.superclass.respond_to?(:inclusions)
|
201
|
+
inclusions += self.class.superclass.inclusions || []
|
202
|
+
end
|
203
|
+
if self.class.inclusions
|
204
|
+
inclusions += self.class.inclusions
|
205
|
+
end
|
206
|
+
return true if !inclusions
|
207
|
+
all_checked = true
|
208
|
+
inclusions.each do |rule|
|
209
|
+
variable = rule[0]
|
210
|
+
next if !self.respond_to?(variable)
|
211
|
+
value = self.send(variable)
|
212
|
+
next if !value
|
213
|
+
if rule[-1][:in]
|
214
|
+
if !rule[-1][:in].include?(value)
|
215
|
+
all_checked = false
|
216
|
+
errors.add variable, rule[-1][:message]
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
return all_checked
|
221
|
+
end
|
222
|
+
|
223
|
+
def variable_name(symbol)
|
224
|
+
symbol.to_s.tr("_", " ").capitalize
|
225
|
+
end
|
226
|
+
|
227
|
+
def blank?(obj)
|
228
|
+
return obj !~ /\S/ if obj.is_a? String
|
229
|
+
obj.respond_to?(:empty?) ? obj.empty? : !obj
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
02RETORNO01COBRANCA 33251000289353000000INSTITUTO MATO-GROSSENSE DO AL001BANCO DO BRASIL2001090000007 000000009703754590 1622420 000001
|
2
|
+
70000000000000000332510002893531622420 1622420000000000310000001 01900000000000 1806200109 000000000000000906400114923002201090000500000000000000000000000000000000000000000000000000000000000000000000000000009064000000000000000000000000000000000000000000000000856420000000000000 0000000000000000000000000000000000000000000000000004000002
|
3
|
+
70000000000000000332510002893531622420 1622420000000003010000001 01900000000000 1806200109 000000000000002235239909430002201090000500000000000000000000000000000000000000000000000000000000000000000000000000022352000000000000000000000000000000000000000000000002185220000000000000 0000000000000000000000000000000000000000000000000010000003
|
4
|
+
70000000000000000332510002893531622420 1622420000000003110000001 01900000000000 1806200109 00000000000000165330012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000016533000000000000000000000000000000000000000000000001603320000000000000 0000000000000000000000000000000000000000000000000002000004
|
5
|
+
70000000000000000332510002893531622420 1622420000000003210000001 01900000000000 1806200109 00000000000000157740012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000015774000000000000000000000000000000000000000000000001527420000000000000 0000000000000000000000000000000000000000000000000002000005
|
6
|
+
70000000000000000332510002893531622420 1622420000000003310000001 01900000000000 1806200109 00000000000000414440012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000041444000000000000000000000000000000000000000000000004094420000000000000 0000000000000000000000000000000000000000000000000002000006
|
7
|
+
70000000000000000332510002893531622420 1622420000000003410000001 01900000000000 1806200109 00000000000000610280012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000061028000000000000000000000000000000000000000000000006052820000000000000 0000000000000000000000000000000000000000000000000002000007
|
8
|
+
70000000000000000332510002893531622420 1622420000000003510000001 01900000000000 1806200109 00000000000000608040012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000060804000000000000000000000000000000000000000000000006030420000000000000 0000000000000000000000000000000000000000000000000002000008
|
9
|
+
70000000000000000332510002893531622420 1622420000000003610000001 01900000000000 1806200109 000000000000005610074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000010000009
|
10
|
+
70000000000000000332510002893531622420 1622420000000003710000001 01900000000000 1806200109 000000000000000565474808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005654000000000000000000000000000000000000000000000000515420000000000000 0000000000000000000000000000000000000000000000000010000010
|
11
|
+
70000000000000000332510002893531622420 1622420000000003810000001 01900000000000 1806200109 000000000000005610074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000010000011
|
12
|
+
70000000000000000332510002893531622420 1622420000000003910000001 01900000000000 1806200109 000000000000000528074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005280000000000000000000000000000000000000000000000000478020000000000000 0000000000000000000000000000000000000000000000000010000012
|
13
|
+
70000000000000000332510002893531622420 1622420000000004010000001 01900000000000 1806200109 000000000000005610074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000010000013
|
14
|
+
70000000000000000332510002893531622420 1622420000000004110000001 01900000000000 1806200109 000000000000000528074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005280000000000000000000000000000000000000000000000000478020000000000000 0000000000000000000000000000000000000000000000000010000014
|
15
|
+
70000000000000000332510002893531622420 1622420000000004210000001 01900000000000 1806200109 000000000000005610000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000004000015
|
16
|
+
70000000000000000332510002893531622420 1622420000000004310000001 01900000000000 1806200109 000000000000001672000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000016720000000000000000000000000000000000000000000000001622020000000000000 0000000000000000000000000000000000000000000000000004000016
|
17
|
+
70000000000000000332510002893531622420 1622420000000004410000001 01900000000000 1806200109 000000000000000535300136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005353000000000000000000000000000000000000000000000000485320000000000000 0000000000000000000000000000000000000000000000000004000017
|
18
|
+
70000000000000000332510002893531622420 1622420000000004510000001 01900000000000 1806200109 000000000000005210700130376002201090000500000000000000000000000000000000000000000000000000000000000000000000000000052107000000000000000000000000000000000000000000000005160720000000000000 0000000000000000000000000000000000000000000000000008000018
|
19
|
+
70000000000000000332510002893531622420 1622420000000004610000001 01900000000000 1806200109 000000000000006043600114923002201090000500000000000000000000000000000000000000000000000000000000000000000000000000060436000000000000000000000000000000000000000000000005993620000000000000 0000000000000000000000000000000000000000000000000002000019
|
20
|
+
70000000000000000332510002893531622420 1622420000000004710000001 01900000000000 1806200109 000000000000005610000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000004000020
|
21
|
+
70000000000000000332510002893531622420 1622420000000004810000001 01900000000000 1806200109 000000000000000495000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000004950000000000000000000000000000000000000000000000000445020000000000000 0000000000000000000000000000000000000000000000000004000021
|
22
|
+
70000000000000000332510002893531622420 1622420000000005010000001 01900000000000 1806200109 000000000000005707000114923002201090000500000000000000000000000000000000000000000000000000000000000000000000000000057070000000000000000000000000000000000000000000000005657020000000000000 0000000000000000000000000000000000000000000000000002000022
|
23
|
+
70000000000000000332510002893531622420 1622420000000005110000001 01900000000000 1806200109 000000000000005638600106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056386000000000000000000000000000000000000000000000005588620000000000000 0000000000000000000000000000000000000000000000000002000023
|
24
|
+
70000000000000000332510002893531622420 1622420000000005210000001 01900000000000 1806200109 000000000000005610000106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000002000024
|
25
|
+
70000000000000000332510002893531622420 1622420000000005310000001 01900000000000 1806200109 000000000000005856400106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000058564000000000000000000000000000000000000000000000005806420000000000000 0000000000000000000000000000000000000000000000000002000025
|
26
|
+
70000000000000000332510002893531622420 1622420000000005410000001 01900000000000 1806200109 000000000000005704600106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000057046000000000000000000000000000000000000000000000005654620000000000000 0000000000000000000000000000000000000000000000000002000026
|
27
|
+
70000000000000000332510002893531622420 1622420000000005510000001 01900000000000 1806200109 000000000000005673800106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056738000000000000000000000000000000000000000000000005623820000000000000 0000000000000000000000000000000000000000000000000002000027
|
28
|
+
9201001 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000028
|