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,151 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab240
|
5
|
+
class Cecred < Bbrcobranca::Remessa::Cnab240::Base
|
6
|
+
# digito da agencia
|
7
|
+
attr_accessor :digito_agencia
|
8
|
+
|
9
|
+
validates_presence_of :digito_agencia, :convenio, :conta_corrente, message: 'não pode estar em branco.'
|
10
|
+
validates_length_of :convenio, maximum: 6, message: 'deve ter 6 dígitos.'
|
11
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ter 7 dígitos.'
|
12
|
+
validates_length_of :digito_agencia, is: 1, message: 'deve ter 1 dígito.'
|
13
|
+
|
14
|
+
def initialize(campos = {})
|
15
|
+
campos = { emissao_boleto: '2',
|
16
|
+
forma_cadastramento: '0',
|
17
|
+
distribuicao_boleto: '2',
|
18
|
+
especie_titulo: '02' }.merge!(campos)
|
19
|
+
super(campos)
|
20
|
+
end
|
21
|
+
|
22
|
+
def convenio=(valor)
|
23
|
+
@convenio = valor.to_s.rjust(6, '0') if valor
|
24
|
+
end
|
25
|
+
|
26
|
+
def conta_corrente=(valor)
|
27
|
+
@conta_corrente = valor.to_s.rjust(7, '0') if valor
|
28
|
+
end
|
29
|
+
|
30
|
+
def cod_banco
|
31
|
+
'085'
|
32
|
+
end
|
33
|
+
|
34
|
+
def nome_banco
|
35
|
+
'CECRED'.ljust(30, ' ')
|
36
|
+
end
|
37
|
+
|
38
|
+
def versao_layout_arquivo
|
39
|
+
'087'
|
40
|
+
end
|
41
|
+
|
42
|
+
def versao_layout_lote
|
43
|
+
'045'
|
44
|
+
end
|
45
|
+
|
46
|
+
def codigo_convenio
|
47
|
+
convenio.ljust(20, ' ')
|
48
|
+
end
|
49
|
+
|
50
|
+
def uso_exclusivo_banco
|
51
|
+
''.rjust(20, ' ')
|
52
|
+
end
|
53
|
+
|
54
|
+
def uso_exclusivo_empresa
|
55
|
+
''.ljust(20, ' ')
|
56
|
+
end
|
57
|
+
|
58
|
+
def convenio_lote
|
59
|
+
codigo_convenio
|
60
|
+
end
|
61
|
+
|
62
|
+
def info_conta
|
63
|
+
# CAMPO # TAMANHO
|
64
|
+
# agencia 5
|
65
|
+
# digito agencia 1
|
66
|
+
# conta corrente 12
|
67
|
+
# dv da conta 1
|
68
|
+
# dv agencia/conta 1
|
69
|
+
"#{agencia_conta_corrente}#{agencia_conta_corrente_dv}"
|
70
|
+
end
|
71
|
+
|
72
|
+
def agencia_conta_corrente
|
73
|
+
"#{agencia.to_s.rjust(5, '0')}#{digito_agencia}#{conta_corrente.rjust(12, '0')}#{conta_corrente_dv}"
|
74
|
+
end
|
75
|
+
|
76
|
+
def conta_corrente_dv
|
77
|
+
conta_corrente.modulo11(mapeamento: { 10 => 0 })
|
78
|
+
end
|
79
|
+
|
80
|
+
def agencia_conta_corrente_dv
|
81
|
+
" "
|
82
|
+
end
|
83
|
+
|
84
|
+
def complemento_header
|
85
|
+
"#{''.rjust(29, ' ')}"
|
86
|
+
end
|
87
|
+
|
88
|
+
def complemento_trailer
|
89
|
+
"#{''.rjust(69, '0')}#{''.rjust(148, ' ')}"
|
90
|
+
end
|
91
|
+
|
92
|
+
def tipo_documento
|
93
|
+
"1"
|
94
|
+
end
|
95
|
+
|
96
|
+
def complemento_p(pagamento)
|
97
|
+
# CAMPO TAMANHO
|
98
|
+
# conta_corrente 12
|
99
|
+
# dv conta corrente 1
|
100
|
+
# dv agencia/conta 1
|
101
|
+
# ident. titulo 20
|
102
|
+
"#{conta_corrente.rjust(12, '0')}#{conta_corrente_dv}#{agencia_conta_corrente_dv}#{ajusta_nosso_numero(pagamento)}"
|
103
|
+
end
|
104
|
+
|
105
|
+
def ajusta_nosso_numero(pagamento)
|
106
|
+
"#{conta_corrente}#{conta_corrente_dv}#{pagamento.nosso_numero.to_s.rjust(9, '0')}".ljust(20, ' ')
|
107
|
+
end
|
108
|
+
|
109
|
+
def identificacao_titulo_empresa(pagamento)
|
110
|
+
pagamento.documento_ou_numero.to_s.ljust(25, " ")
|
111
|
+
end
|
112
|
+
|
113
|
+
def complemento_trailer
|
114
|
+
# CAMPO TAMANHO
|
115
|
+
# Qt. Títulos em Cobrança Simples 6
|
116
|
+
# Vl. Títulos em Carteira Simples 15 + 2 decimais
|
117
|
+
# Qt. Títulos em Cobrança Vinculada 6
|
118
|
+
# Vl. Títulos em Carteira Vinculada 15 + 2 decimais
|
119
|
+
# Qt. Títulos em Cobrança Caucionada 6
|
120
|
+
# Vl. Títulos em Carteira Caucionada 15 + 2 decimais
|
121
|
+
# Qt. Títulos em Cobrança Descontada 6
|
122
|
+
# Vl. Títulos em Carteira Descontada 15 + 2 decimais
|
123
|
+
total_cobranca_simples = "#{quantidade_titulos_cobranca}#{valor_titulos_carteira}"
|
124
|
+
total_cobranca_vinculada = "".rjust(23, "0")
|
125
|
+
total_cobranca_caucionada = "".rjust(23, "0")
|
126
|
+
total_cobranca_descontada = "".rjust(23, "0")
|
127
|
+
|
128
|
+
"#{total_cobranca_simples}#{total_cobranca_vinculada}#{total_cobranca_caucionada}"\
|
129
|
+
"#{total_cobranca_descontada}".ljust(217, ' ')
|
130
|
+
end
|
131
|
+
|
132
|
+
def total_segmentos(pagamentos)
|
133
|
+
pagamentos.inject(0) { |total, pagamento| total += pagamento.codigo_multa != '0' ? 3 : 2 }
|
134
|
+
end
|
135
|
+
|
136
|
+
def monta_segmento_r(pagamento, nro_lote, contador)
|
137
|
+
return nil if pagamento.codigo_multa == '0'
|
138
|
+
super(pagamento, nro_lote, contador)
|
139
|
+
end
|
140
|
+
|
141
|
+
def codigo_baixa(pagamento)
|
142
|
+
'2'
|
143
|
+
end
|
144
|
+
|
145
|
+
def dias_baixa(pagamento)
|
146
|
+
''.rjust(3, ' ')
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
@@ -0,0 +1,226 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab240
|
5
|
+
class Sicoob < Bbrcobranca::Remessa::Cnab240::Base
|
6
|
+
|
7
|
+
attr_accessor :modalidade_carteira
|
8
|
+
# identificacao da emissao do boleto (attr na classe base)
|
9
|
+
# opcoes:
|
10
|
+
# ‘1’ = Banco Emite
|
11
|
+
# ‘2’ = Cliente Emite
|
12
|
+
#
|
13
|
+
# identificacao da distribuicao do boleto (attr na classe base)
|
14
|
+
# opcoes:
|
15
|
+
# ‘1’ = Banco distribui
|
16
|
+
# ‘2’ = Cliente distribui
|
17
|
+
|
18
|
+
attr_accessor :tipo_formulario
|
19
|
+
# Tipo Formulário - 01 posição (15 a 15):
|
20
|
+
# "1" -auto-copiativo
|
21
|
+
# "3" -auto-envelopável
|
22
|
+
# "4" -A4 sem envelopamento
|
23
|
+
# "6" -A4 sem envelopamento 3 vias
|
24
|
+
|
25
|
+
attr_accessor :parcela
|
26
|
+
# Parcela - 02 posições (11 a 12) - "01" se parcela única
|
27
|
+
|
28
|
+
attr_accessor :posto
|
29
|
+
# Mantém a informação do posto de atendimento dentro da agência.
|
30
|
+
|
31
|
+
validates_presence_of :modalidade_carteira, :tipo_formulario, :parcela, :convenio, message: 'não pode estar em branco.'
|
32
|
+
# Remessa 400 - 8 digitos
|
33
|
+
# Remessa 240 - 12 digitos
|
34
|
+
validates_length_of :conta_corrente, maximum: 8, message: 'deve ter 8 dígitos.'
|
35
|
+
validates_length_of :agencia, is: 4, message: 'deve ter 4 dígitos.'
|
36
|
+
validates_length_of :modalidade_carteira, is: 2, message: 'deve ter 2 dígitos.'
|
37
|
+
|
38
|
+
def initialize(campos = {})
|
39
|
+
campos = { emissao_boleto: '2',
|
40
|
+
distribuicao_boleto: '2',
|
41
|
+
especie_titulo: '02',
|
42
|
+
tipo_formulario: '4',
|
43
|
+
parcela: '01',
|
44
|
+
modalidade_carteira: '01',
|
45
|
+
forma_cadastramento: '0',
|
46
|
+
posto: '00'}.merge!(campos)
|
47
|
+
super(campos)
|
48
|
+
end
|
49
|
+
|
50
|
+
def cod_banco
|
51
|
+
'756'
|
52
|
+
end
|
53
|
+
|
54
|
+
def nome_banco
|
55
|
+
'SICOOB'.ljust(30, ' ')
|
56
|
+
end
|
57
|
+
|
58
|
+
def versao_layout_arquivo
|
59
|
+
'081'
|
60
|
+
end
|
61
|
+
|
62
|
+
def versao_layout_lote
|
63
|
+
'040'
|
64
|
+
end
|
65
|
+
|
66
|
+
def uso_exclusivo_banco
|
67
|
+
''.rjust(20, ' ')
|
68
|
+
end
|
69
|
+
|
70
|
+
def uso_exclusivo_empresa
|
71
|
+
''.rjust(20, ' ')
|
72
|
+
end
|
73
|
+
|
74
|
+
def digito_agencia
|
75
|
+
# utilizando a agencia com 4 digitos
|
76
|
+
# para calcular o digito
|
77
|
+
agencia.modulo11(mapeamento: { 10 => '0' }).to_s
|
78
|
+
end
|
79
|
+
|
80
|
+
def digito_conta
|
81
|
+
# utilizando a conta corrente com 5 digitos
|
82
|
+
# para calcular o digito
|
83
|
+
conta_corrente.modulo11(mapeamento: { 10 => '0' }).to_s
|
84
|
+
end
|
85
|
+
|
86
|
+
def dv_agencia_cobradora
|
87
|
+
' '
|
88
|
+
end
|
89
|
+
|
90
|
+
def codigo_convenio
|
91
|
+
# CAMPO TAMANHO
|
92
|
+
# num. convenio 20 BRANCOS
|
93
|
+
''.rjust(20, ' ')
|
94
|
+
end
|
95
|
+
|
96
|
+
alias_method :convenio_lote, :codigo_convenio
|
97
|
+
|
98
|
+
def info_conta
|
99
|
+
# CAMPO TAMANHO
|
100
|
+
# agencia 5
|
101
|
+
# digito agencia 1
|
102
|
+
# conta corrente 12
|
103
|
+
# digito conta 1
|
104
|
+
# digito agencia/conta 1
|
105
|
+
"#{agencia.rjust(5, '0')}#{digito_agencia}#{conta_corrente.rjust(12, '0')}#{digito_conta} "
|
106
|
+
end
|
107
|
+
|
108
|
+
def complemento_header
|
109
|
+
''.rjust(29, ' ')
|
110
|
+
end
|
111
|
+
|
112
|
+
def complemento_trailer
|
113
|
+
# CAMPO TAMANHO
|
114
|
+
# Qt. Títulos em Cobrança Simples 6
|
115
|
+
# Vl. Títulos em Carteira Simples 15 + 2 decimais
|
116
|
+
# Qt. Títulos em Cobrança Vinculada 6
|
117
|
+
# Vl. Títulos em Carteira Vinculada 15 + 2 decimais
|
118
|
+
# Qt. Títulos em Cobrança Caucionada 6
|
119
|
+
# Vl. Títulos em Carteira Caucionada 15 + 2 decimais
|
120
|
+
# Qt. Títulos em Cobrança Descontada 6
|
121
|
+
# Vl. Títulos em Carteira Descontada 15 + 2 decimais
|
122
|
+
total_cobranca_simples = "#{quantidade_titulos_cobranca}#{valor_titulos_carteira}"
|
123
|
+
total_cobranca_vinculada = "".rjust(23, "0")
|
124
|
+
total_cobranca_caucionada = "".rjust(23, "0")
|
125
|
+
total_cobranca_descontada = "".rjust(23, "0")
|
126
|
+
|
127
|
+
"#{total_cobranca_simples}#{total_cobranca_vinculada}#{total_cobranca_caucionada}"\
|
128
|
+
"#{total_cobranca_descontada}".ljust(217, ' ')
|
129
|
+
end
|
130
|
+
|
131
|
+
# Monta o registro trailer do arquivo
|
132
|
+
#
|
133
|
+
# @param nro_lotes [Integer]
|
134
|
+
# numero de lotes no arquivo
|
135
|
+
# @param sequencial [Integer]
|
136
|
+
# numero de registros(linhas) no arquivo
|
137
|
+
#
|
138
|
+
# @return [String]
|
139
|
+
#
|
140
|
+
def monta_trailer_arquivo(nro_lotes, sequencial)
|
141
|
+
# CAMPO TAMANHO
|
142
|
+
# codigo banco 3
|
143
|
+
# lote de servico 4
|
144
|
+
# tipo de registro 1
|
145
|
+
# uso FEBRABAN 9
|
146
|
+
# nro de lotes 6
|
147
|
+
# nro de registros(linhas) 6
|
148
|
+
# uso FEBRABAN 211
|
149
|
+
"#{cod_banco}99999#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{sequencial.to_s.rjust(6, '0')}#{''.rjust(6, '0')}#{''.rjust(205, ' ')}"
|
150
|
+
end
|
151
|
+
|
152
|
+
def complemento_p(pagamento)
|
153
|
+
# CAMPO TAMANHO
|
154
|
+
# conta corrente 12
|
155
|
+
# digito conta 1
|
156
|
+
# digito agencia/conta 1
|
157
|
+
# ident. titulo no banco 20
|
158
|
+
"#{conta_corrente.rjust(12, '0')}#{digito_conta} #{formata_nosso_numero(pagamento.nosso_numero)}"
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
def monta_segmento_r(pagamento, nro_lote, sequencial)
|
163
|
+
segmento_r = '' # CAMPO TAMANHO
|
164
|
+
segmento_r << cod_banco # codigo banco 3
|
165
|
+
segmento_r << nro_lote.to_s.rjust(4, '0') # lote de servico 4
|
166
|
+
segmento_r << '3' # lote de servico 1
|
167
|
+
segmento_r << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5
|
168
|
+
segmento_r << 'R' # cod. segmento 1
|
169
|
+
segmento_r << ' ' # uso exclusivo 1
|
170
|
+
segmento_r << '01' # cod. movimento remessa 2
|
171
|
+
segmento_r << "0" # cod. desconto 2 1
|
172
|
+
segmento_r << "".rjust(8, '0') # data desconto 2 8
|
173
|
+
segmento_r << "".rjust(15, '0') # valor desconto 2 15
|
174
|
+
segmento_r << "0" # cod. desconto 3 1
|
175
|
+
segmento_r << "".rjust(8, '0') # data desconto 3 8
|
176
|
+
segmento_r << "".rjust(15, '0') # valor desconto 3 15
|
177
|
+
segmento_r << pagamento.codigo_multa # codigo multa 1
|
178
|
+
segmento_r << data_multa(pagamento) # data multa 8
|
179
|
+
segmento_r << pagamento.formata_percentual_multa(15) # valor multa 15
|
180
|
+
segmento_r << ''.rjust(10, ' ') # info pagador 10
|
181
|
+
segmento_r << ''.rjust(40, ' ') # mensagem 3 40
|
182
|
+
segmento_r << ''.rjust(40, ' ') # mensagem 4 40
|
183
|
+
segmento_r << ''.rjust(20, ' ') # Exclusivo FEBRABAN 20
|
184
|
+
segmento_r << ''.rjust(8, '0') # Cod. Ocor do Pagador 8
|
185
|
+
segmento_r << ''.rjust(3, '0') # Cod. do Banco conta débito 3
|
186
|
+
segmento_r << ''.rjust(5, '0') # Cod. da Agencia do débito 5
|
187
|
+
segmento_r << ' ' # Cod. verificador da agencia 1
|
188
|
+
segmento_r << ''.rjust(12, '0') # Conta corrente para débito 12
|
189
|
+
segmento_r << ' ' # Cod. verificador da conta 1
|
190
|
+
segmento_r << ' ' # Cod. verificador da Ag/Conta 1
|
191
|
+
segmento_r << '0' # Aviso débito automático 1
|
192
|
+
segmento_r << ''.rjust(9, ' ') # Uso FEBRABAN 9
|
193
|
+
segmento_r
|
194
|
+
end
|
195
|
+
|
196
|
+
def data_multa(pagamento)
|
197
|
+
return ''.rjust(8, '0') if pagamento.codigo_multa == '0'
|
198
|
+
pagamento.data_vencimento.strftime('%d%m%Y')
|
199
|
+
end
|
200
|
+
|
201
|
+
# Retorna o nosso numero
|
202
|
+
#
|
203
|
+
# @return [String]
|
204
|
+
#
|
205
|
+
# Nosso Número:
|
206
|
+
# - Se emissão a cargo do Cedente (vide planilha "Capa" deste arquivo):
|
207
|
+
# NumTitulo - 10 posições (1 a 10)
|
208
|
+
# Parcela - 02 posições (11 a 12) - "01" se parcela única
|
209
|
+
# Modalidade - 02 posições (13 a 14) - vide planilha "Capa" deste arquivo
|
210
|
+
# Tipo Formulário - 01 posição (15 a 15):
|
211
|
+
# "1" -auto-copiativo
|
212
|
+
# "3" -auto-envelopável
|
213
|
+
# "4" -A4 sem envelopamento
|
214
|
+
# "6" -A4 sem envelopamento 3 vias
|
215
|
+
# Em branco - 05 posições (16 a 20)
|
216
|
+
def formata_nosso_numero(nosso_numero)
|
217
|
+
"#{nosso_numero.to_s.rjust(10, '0')}#{parcela}#{modalidade_carteira}#{tipo_formulario} "
|
218
|
+
end
|
219
|
+
|
220
|
+
def dias_baixa(pagamento)
|
221
|
+
''.rjust(3, ' ')
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab240
|
5
|
+
class SicoobBancoBrasil < Bbrcobranca::Remessa::Cnab240::BaseCorrespondente
|
6
|
+
attr_accessor :codigo_cobranca
|
7
|
+
|
8
|
+
validates_length_of :agencia, is: 4, message: 'deve ter 4 dígitos.'
|
9
|
+
validates_length_of :convenio, maximum: 10, message: 'deve ter 10 dígitos.'
|
10
|
+
validates_length_of :conta_corrente, maximum: 10, message: 'deve ter 10 dígitos.'
|
11
|
+
validates_length_of :codigo_cobranca, maximum: 7, message: 'deve ter 7 dígitos.'
|
12
|
+
validates_length_of :sequencial_remessa, maximum: 8, message: 'deve ter 8 dígitos.'
|
13
|
+
validates_presence_of :sequencial_remessa, message: 'não pode estar em branco.'
|
14
|
+
|
15
|
+
def initialize(campos = {})
|
16
|
+
campos = {
|
17
|
+
emissao_boleto: '2',
|
18
|
+
distribuicao_boleto: '2',
|
19
|
+
codigo_carteira: '9',
|
20
|
+
tipo_documento: '02'
|
21
|
+
}.merge!(campos)
|
22
|
+
super(campos)
|
23
|
+
end
|
24
|
+
|
25
|
+
def cod_banco
|
26
|
+
'756'
|
27
|
+
end
|
28
|
+
|
29
|
+
def digito_conta
|
30
|
+
conta_corrente.modulo11(mapeamento: { 10 => 'X' }).to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
def info_conta
|
34
|
+
# CAMPO TAMANHO
|
35
|
+
# agencia 4
|
36
|
+
# codigo cobranca 7
|
37
|
+
# conta corrente 11
|
38
|
+
"#{agencia.rjust(4, '0')}#{codigo_cobranca.rjust(7, '0')}#{conta_corrente.rjust(10, '0')}#{digito_conta}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def complemento_header
|
42
|
+
"#{''.rjust(11, '0')}#{''.rjust(33, ' ')}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def complemento_p(pagamento)
|
46
|
+
# CAMPO TAMANHO
|
47
|
+
# num. doc. de corbanca 15
|
48
|
+
"#{pagamento.nosso_numero.to_s.rjust(15, '0')}"
|
49
|
+
end
|
50
|
+
|
51
|
+
def codigo_convenio
|
52
|
+
# CAMPO TAMANHO
|
53
|
+
# num. convenio 20 BRANCOS
|
54
|
+
''.rjust(20, ' ')
|
55
|
+
end
|
56
|
+
|
57
|
+
alias_method :convenio_lote, :codigo_convenio
|
58
|
+
|
59
|
+
def totaliza_valor_titulos
|
60
|
+
pagamentos.inject(0) { |sum, pag| sum += pag.valor.to_f }
|
61
|
+
end
|
62
|
+
|
63
|
+
def valor_titulos_carteira
|
64
|
+
total = sprintf "%.2f", totaliza_valor_titulos
|
65
|
+
total.somente_numeros.rjust(17, "0")
|
66
|
+
end
|
67
|
+
|
68
|
+
def complemento_trailer
|
69
|
+
''.rjust(217, ' ')
|
70
|
+
end
|
71
|
+
|
72
|
+
# Monta o registro trailer do arquivo
|
73
|
+
#
|
74
|
+
# @param nro_lotes [Integer]
|
75
|
+
# numero de lotes no arquivo
|
76
|
+
# @param sequencial [Integer]
|
77
|
+
# numero de registros(linhas) no arquivo
|
78
|
+
#
|
79
|
+
# @return [String]
|
80
|
+
#
|
81
|
+
def monta_trailer_arquivo(nro_lotes, sequencial)
|
82
|
+
# CAMPO TAMANHO
|
83
|
+
# zeros 7
|
84
|
+
# registro trailer lote 1
|
85
|
+
# uso FEBRABAN 9
|
86
|
+
# nro de lotes 6
|
87
|
+
# nro de registros(linhas) 6
|
88
|
+
# uso FEBRABAN 211
|
89
|
+
"#{''.rjust(7, '0')}5#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{valor_titulos_carteira}#{''.rjust(6, '0')}#{''.rjust(194, ' ')}"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|