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,308 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
module Bbrcobranca
|
4
|
+
module Remessa
|
5
|
+
module Cnab400
|
6
|
+
class Sicoob < Bbrcobranca::Remessa::Cnab400::Base
|
7
|
+
# convenio do cedente
|
8
|
+
attr_accessor :convenio
|
9
|
+
|
10
|
+
attr_accessor :modalidade_carteira
|
11
|
+
# identificacao da emissao do boleto (attr na classe base)
|
12
|
+
# opcoes:
|
13
|
+
# ‘1’ = Banco Emite
|
14
|
+
# ‘2’ = Cliente Emite
|
15
|
+
|
16
|
+
attr_accessor :distribuicao_boleto
|
17
|
+
#
|
18
|
+
# identificacao da distribuicao do boleto (attr na classe base)
|
19
|
+
# opcoes:
|
20
|
+
# ‘1’ = Banco distribui
|
21
|
+
# ‘2’ = Cliente distribui
|
22
|
+
|
23
|
+
attr_accessor :tipo_formulario
|
24
|
+
# Tipo Formulário - 01 posição (15 a 15):
|
25
|
+
# "1" -auto-copiativo
|
26
|
+
# "3" -auto-envelopável
|
27
|
+
# "4" -A4 sem envelopamento
|
28
|
+
# "6" -A4 sem envelopamento 3 vias
|
29
|
+
|
30
|
+
# convenio do cedente
|
31
|
+
attr_accessor :convenio
|
32
|
+
|
33
|
+
validates_presence_of :agencia, :conta_corrente, :carteira, :convenio, :modalidade_carteira, :tipo_formulario, :digito_conta, :sequencial_remessa, :documento_cedente, message: 'não pode estar em branco.'
|
34
|
+
# Remessa 400 - 8 digitos
|
35
|
+
# Remessa 240 - 12 digitos
|
36
|
+
validates_length_of :conta_corrente, is: 8, message: 'deve ter 8 dígitos.'
|
37
|
+
validates_length_of :agencia, is: 4, message: 'deve ter 4 dígitos.'
|
38
|
+
validates_length_of :modalidade_carteira, is: 1, message: 'deve ter 1 dígitos.'
|
39
|
+
validates_length_of :digito_conta, maximum: 1, message: 'deve ter 1 dígito.'
|
40
|
+
validates_length_of :sequencial_remessa, maximum: 7, message: 'deve ter 7 dígitos.'
|
41
|
+
validates_length_of :carteira, is: 2, message: 'deve ter 2 dígitos.'
|
42
|
+
validates_length_of :documento_cedente, minimum: 11, maximum: 14, message: 'deve ter entre 11 e 14 dígitos.'
|
43
|
+
|
44
|
+
# Com DV
|
45
|
+
validates_length_of :convenio, is: 9, message: 'deve ter 9 dígitos.'
|
46
|
+
|
47
|
+
def initialize(campos = {})
|
48
|
+
campos = {
|
49
|
+
distribuicao_boleto: '2',
|
50
|
+
tipo_formulario: '4',
|
51
|
+
modalidade_carteira: '2',
|
52
|
+
sequencial_remessa: '0000001',
|
53
|
+
carteira: '01'
|
54
|
+
}.merge!(campos)
|
55
|
+
super(campos)
|
56
|
+
end
|
57
|
+
|
58
|
+
def cod_banco
|
59
|
+
'756'
|
60
|
+
end
|
61
|
+
|
62
|
+
def nome_banco
|
63
|
+
'BANCOOBCED'.format_size(15)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Informacoes do Código de Transmissão
|
67
|
+
#
|
68
|
+
# @return [String]
|
69
|
+
#
|
70
|
+
def info_conta
|
71
|
+
# CAMPO TAMANHO
|
72
|
+
# 030 004 9(004) Prefixo da Cooperativa: vide planilha "Capa" deste arquivo
|
73
|
+
# 031 001 A(001) Dígito Verificador do Prefixo: vide planilha "Capa" deste arquivo
|
74
|
+
# 039 008 9(008) Código do Cliente/Beneficiário: vide planilha "Capa" deste arquivo
|
75
|
+
# 040 001 A(001) Dígito Verificador do Código: vide planilha "Capa" deste arquivo
|
76
|
+
# 046 006 9(006) Número do convênio líder: Brancos
|
77
|
+
"#{agencia}#{digito_agencia}#{convenio} "
|
78
|
+
end
|
79
|
+
|
80
|
+
def digito_agencia
|
81
|
+
# utilizando a agencia com 4 digitos
|
82
|
+
# para calcular o digito
|
83
|
+
agencia.modulo11(mapeamento: { 10 => '0' }).to_s
|
84
|
+
end
|
85
|
+
|
86
|
+
# Complemento do header
|
87
|
+
#
|
88
|
+
# @return [String]
|
89
|
+
#
|
90
|
+
def complemento
|
91
|
+
''.rjust(287, ' ')
|
92
|
+
end
|
93
|
+
|
94
|
+
# Header do arquivo remessa
|
95
|
+
#
|
96
|
+
# @return [String]
|
97
|
+
#
|
98
|
+
def monta_header
|
99
|
+
# CAMPO TAMANHO VALOR
|
100
|
+
# 001 001 9(001) Identificação do Registro Header: “0” (zero)
|
101
|
+
# 002 001 9(001) Tipo de Operação: “1” (um)
|
102
|
+
# 009 007 A(007) Identificação por Extenso do Tipo de Operação: "REMESSA"
|
103
|
+
# 011 002 9(002) Identificação do Tipo de Serviço: “01” (um)
|
104
|
+
# 019 008 A(008) Identificação por Extenso do Tipo de Serviço: “COBRANÇA”
|
105
|
+
# 026 007 A(007) Complemento do Registro: Brancos
|
106
|
+
# 030 004 9(004) Prefixo da Cooperativa: vide planilha "Capa" deste arquivo
|
107
|
+
# 031 001 A(001) Dígito Verificador do Prefixo: vide planilha "Capa" deste arquivo
|
108
|
+
# 039 008 9(008) Código do Cliente/Beneficiário: vide planilha "Capa" deste arquivo
|
109
|
+
# 040 001 A(001) Dígito Verificador do Código: vide planilha "Capa" deste arquivo
|
110
|
+
# 046 006 9(006) Número do convênio líder: Brancos
|
111
|
+
# 076 030 A(030) Nome do Beneficiário: vide planilha "Capa" deste arquivo
|
112
|
+
# 094 018 A(018) Identificação do Banco: "756BANCOOBCED"
|
113
|
+
# 100 006 9(006) Data da Gravação da Remessa: formato ddmmaa
|
114
|
+
# 107 007 9(007) Seqüencial da Remessa: número seqüencial acrescido de 1 a cada remessa. Inicia com "0000001"
|
115
|
+
# 394 287 A(287) Complemento do Registro: Brancos
|
116
|
+
# 400 006 9(006) Seqüencial do Registro:”000001”
|
117
|
+
|
118
|
+
"01REMESSA01COBRANCA #{info_conta}#{empresa_mae.format_size(30)}#{cod_banco}#{nome_banco}#{data_geracao}#{sequencial_remessa}#{complemento}000001"
|
119
|
+
end
|
120
|
+
|
121
|
+
# Detalhe do arquivo
|
122
|
+
#
|
123
|
+
# @param pagamento [PagamentoCnab400]
|
124
|
+
# objeto contendo as informacoes referentes ao boleto (valor, vencimento, cliente)
|
125
|
+
# @param sequencial
|
126
|
+
# num. sequencial do registro no arquivo
|
127
|
+
#
|
128
|
+
# @return [String]
|
129
|
+
#
|
130
|
+
def monta_detalhe(pagamento, sequencial)
|
131
|
+
raise Bbrcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
132
|
+
|
133
|
+
detalhe = '1' # identificacao transacao 9[01]
|
134
|
+
detalhe << Bbrcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
135
|
+
detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
|
136
|
+
detalhe << agencia # Prefixo da Cooperativa 9[4]
|
137
|
+
detalhe << digito_agencia # Digito da Cooperativa 9[1]
|
138
|
+
detalhe << conta_corrente # Conta corrente 9[8]
|
139
|
+
detalhe << digito_conta # Digito da conta corrente 9[1]
|
140
|
+
detalhe << '000000' # Convênio de Cobrança do Beneficiário: "000000" 9[6]
|
141
|
+
detalhe << ''.rjust(25, ' ') # Número de Controle do Participante: Brancos X[25]
|
142
|
+
detalhe << pagamento.nosso_numero.to_s.rjust(12, '0') # nosso numero com DV 9[12]
|
143
|
+
detalhe << pagamento.parcela.to_s.rjust(2, '0') # Número da Parcela: "01" se parcela única 9[02]
|
144
|
+
detalhe << '00' # Grupo de Valor: "00" 9[02]
|
145
|
+
detalhe << ' ' # Complemento do Registro: Brancos X[03]
|
146
|
+
|
147
|
+
# "Indicativo de Mensagem ou Sacador/Avalista:
|
148
|
+
# Brancos: Poderá ser informada nas posições 352 a 391 (SEQ 50) qualquer mensagem para ser impressa no boleto;
|
149
|
+
# “A”: Deverá ser informado nas posições 352 a 391 (SEQ 50) o nome e CPF/CNPJ do sacador"
|
150
|
+
detalhe << ' ' # X[01]
|
151
|
+
detalhe << ' ' # Prefixo do Título: Brancos X[03]
|
152
|
+
detalhe << '000' # Variação da Carteira: "000" 9[03]
|
153
|
+
detalhe << '0' # Conta Caução: "0" 9[01]
|
154
|
+
|
155
|
+
# "Número do Contrato Garantia:
|
156
|
+
# Para Carteira 1 preencher ""00000"";
|
157
|
+
# Para Carteira 3 preencher com o número do contrato sem DV."
|
158
|
+
detalhe << '00000' # Número do Contrato Garantia 9[05]
|
159
|
+
detalhe << '0' # DV do contrato 9[01]
|
160
|
+
detalhe << '000000' # Numero do borderô: preencher em caso de carteira 3 9[06]
|
161
|
+
detalhe << ' ' # Complemento do Registro: Brancos X[04]
|
162
|
+
|
163
|
+
# "Tipo de Emissão:
|
164
|
+
# 1 - Cooperativa
|
165
|
+
# 2 - Cliente"
|
166
|
+
detalhe << modalidade_carteira # Tipo de Emissão 9[01]
|
167
|
+
|
168
|
+
# "Carteira/Modalidade:
|
169
|
+
# 01 = Simples Com Registro
|
170
|
+
# 02 = Simples Sem Registro
|
171
|
+
# 03 = Garantida Caucionada "
|
172
|
+
detalhe << carteira # codigo da carteira 9[02]
|
173
|
+
|
174
|
+
# "Comando/Movimento:
|
175
|
+
# 01 = Registro de Títulos
|
176
|
+
# 02 = Solicitação de Baixa
|
177
|
+
# 04 = Concessão de Abatimento
|
178
|
+
# 05 = Cancelamento de Abatimento
|
179
|
+
# 06 = Alteração de Vencimento
|
180
|
+
# 08 = Alteração de Seu Número
|
181
|
+
# 09 = Instrução para Protestar
|
182
|
+
# 10 = Instrução para Sustar Protesto
|
183
|
+
# 11 = Instrução para Dispensar Juros
|
184
|
+
# 12 = Alteração de Pagador
|
185
|
+
# 31 = Alteração de Outros Dados
|
186
|
+
# 34 = Baixa - Pagamento Direto ao Beneficiário
|
187
|
+
|
188
|
+
detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
|
189
|
+
detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
|
190
|
+
detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
|
191
|
+
detalhe << pagamento.formata_valor # valor do documento 9[13]
|
192
|
+
detalhe << cod_banco # codigo banco 9[03]
|
193
|
+
detalhe << agencia # Prefixo da Cooperativa 9[4]
|
194
|
+
detalhe << digito_agencia # Digito da Cooperativa 9[1]
|
195
|
+
|
196
|
+
# "Espécie do Título :
|
197
|
+
# 01 = Duplicata Mercantil
|
198
|
+
# 02 = Nota Promissória
|
199
|
+
# 03 = Nota de Seguro
|
200
|
+
# 05 = Recibo
|
201
|
+
# 06 = Duplicata Rural
|
202
|
+
# 08 = Letra de Câmbio
|
203
|
+
# 09 = Warrant
|
204
|
+
# 10 = Cheque
|
205
|
+
# 12 = Duplicata de Serviço
|
206
|
+
# 13 = Nota de Débito
|
207
|
+
# 14 = Triplicata Mercantil
|
208
|
+
# 15 = Triplicata de Serviço
|
209
|
+
# 18 = Fatura
|
210
|
+
# 20 = Apólice de Seguro
|
211
|
+
# 21 = Mensalidade Escolar
|
212
|
+
# 22 = Parcela de Consórcio
|
213
|
+
# 99 = Outros"
|
214
|
+
detalhe << pagamento.especie_titulo # Espécie de documento 9[02]
|
215
|
+
detalhe << '0' # aceite (A=1/N=0) X[01]
|
216
|
+
detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06]
|
217
|
+
|
218
|
+
# "Primeira instrução codificada:
|
219
|
+
# Regras de impressão de mensagens nos boletos:
|
220
|
+
# * Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada.
|
221
|
+
# * Primeira instrução (SEQ 34) = 01 e segunda (SEQ 35) = 01, desconsidera-se as instruções CNAB e imprime as mensagens relatadas no trailler do arquivo.
|
222
|
+
# * Primeira e segunda instrução diferente das situações acima, imprimimos o conteúdo CNAB:
|
223
|
+
# 00 = AUSENCIA DE INSTRUCOES
|
224
|
+
# 01 = COBRAR JUROS
|
225
|
+
# 03 = PROTESTAR 3 DIAS UTEIS APOS VENCIMENTO
|
226
|
+
# 04 = PROTESTAR 4 DIAS UTEIS APOS VENCIMENTO
|
227
|
+
# 05 = PROTESTAR 5 DIAS UTEIS APOS VENCIMENTO
|
228
|
+
# 07 = NAO PROTESTAR
|
229
|
+
# 10 = PROTESTAR 10 DIAS UTEIS APOS VENCIMENTO
|
230
|
+
# 15 = PROTESTAR 15 DIAS UTEIS APOS VENCIMENTO
|
231
|
+
# 20 = PROTESTAR 20 DIAS UTEIS APOS VENCIMENTO
|
232
|
+
# 22 = CONCEDER DESCONTO SO ATE DATA ESTIPULADA
|
233
|
+
# 42 = DEVOLVER APOS 15 DIAS VENCIDO
|
234
|
+
# 43 = DEVOLVER APOS 30 DIAS VENCIDO"
|
235
|
+
detalhe << '00' # Instrução para o título 9[02]
|
236
|
+
detalhe << '00' # Número de dias válidos para instrução 9[02]
|
237
|
+
detalhe << pagamento.formata_valor_mora(6) # valor mora ao dia 9[06]
|
238
|
+
detalhe << pagamento.formata_valor_multa(6) # taxa de multa 9[06]
|
239
|
+
detalhe << distribuicao_boleto # indentificacao entrega 9[01]
|
240
|
+
detalhe << pagamento.formata_data_desconto # data limite para desconto 9[06]
|
241
|
+
detalhe << pagamento.formata_valor_desconto # valor do desconto 9[13]
|
242
|
+
|
243
|
+
# "193-193 – Código da moeda
|
244
|
+
# 194-205 – Valor IOF / Quantidade Monetária: ""000000000000""
|
245
|
+
# Se o código da moeda for REAL, o valor restante representa o IOF.
|
246
|
+
# Se o código da moeda for diferente de REAL, o valor restante será a quantidade monetária.
|
247
|
+
detalhe << pagamento.formata_valor_iof # valor do iof 9[13]
|
248
|
+
detalhe << pagamento.formata_valor_abatimento # valor do abatimento 9[13]
|
249
|
+
detalhe << pagamento.identificacao_sacado.rjust(2, '0') # identificacao do pagador 9[02]
|
250
|
+
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
|
251
|
+
detalhe << pagamento.nome_sacado.format_size(40).ljust(40, ' ') # nome do pagador X[40]
|
252
|
+
detalhe << pagamento.endereco_sacado.format_size(37).ljust(37, ' ') # endereco do pagador X[37]
|
253
|
+
detalhe << pagamento.bairro_sacado.format_size(15).ljust(15, ' ') # bairro do pagador X[15]
|
254
|
+
detalhe << pagamento.cep_sacado # cep do pagador 9[08]
|
255
|
+
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
|
256
|
+
detalhe << pagamento.uf_sacado # uf do pagador X[02]
|
257
|
+
|
258
|
+
# "Observações/Mensagem ou Sacador/Avalista:
|
259
|
+
# Quando o SEQ 14 – Indicativo de Mensagem ou Sacador/Avalista - for preenchido com Brancos,
|
260
|
+
# as informações constantes desse campo serão impressas no campo “texto de responsabilidade da Empresa”,
|
261
|
+
# no Recibo do Sacado e na Ficha de Compensação do boleto de cobrança.
|
262
|
+
# Quando o SEQ 14 – Indicativo de Mensagem ou Sacador/Avalista - for preenchido com “A” ,
|
263
|
+
# este campo deverá ser preenchido com o nome/razão social do Sacador/Avalista"
|
264
|
+
detalhe << ''.rjust(40, ' ') # X[40]
|
265
|
+
|
266
|
+
# "Número de Dias Para Protesto:
|
267
|
+
# Quantidade dias para envio protesto. Se = ""0"",
|
268
|
+
# utilizar dias protesto padrão do cliente cadastrado na cooperativa. "
|
269
|
+
detalhe << '00' # Número de Dias Para Protesto x[02]
|
270
|
+
detalhe << ' ' # Brancos X[1]
|
271
|
+
detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
|
272
|
+
detalhe
|
273
|
+
end
|
274
|
+
|
275
|
+
# Trailer do arquivo remessa
|
276
|
+
#
|
277
|
+
# @param sequencial
|
278
|
+
# num. sequencial do registro no arquivo
|
279
|
+
#
|
280
|
+
# @return [String]
|
281
|
+
#
|
282
|
+
def monta_trailer(sequencial)
|
283
|
+
# CAMPO TAMANHO VALOR
|
284
|
+
# 1 001 001 001 9(01) Identificação Registro Trailler: "9"
|
285
|
+
# 2 002 194 193 X(193) Complemento do Registro: Brancos
|
286
|
+
# 3 195 234 040 X(40) "Mensagem responsabilidade Beneficiário:
|
287
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
288
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
289
|
+
# 4 235 274 040 X(40) "Mensagem responsabilidade Beneficiário:
|
290
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
291
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
292
|
+
# 5 275 314 040 X(40) "Mensagem responsabilidade Beneficiário:
|
293
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
294
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
295
|
+
# 6 315 354 040 X(40) "Mensagem responsabilidade Beneficiário:
|
296
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
297
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
298
|
+
# 7 355 394 040 X(40) "Mensagem responsabilidade Beneficiário:
|
299
|
+
# Quando o SEQ 34 = ""01"" e o SEQ 35 = ""01"", preencher com mensagens/intruções de responsabilidade do Beneficiário
|
300
|
+
# Quando o SEQ 34 e SEQ 35 forem preenchidos com valores diferentes destes, preencher com Brancos"
|
301
|
+
# 8 395 400 006 9(06) Seqüencial do Registro: Incrementado em 1 a cada registro
|
302
|
+
|
303
|
+
"9#{''.rjust(393, '0')}#{sequencial.to_s.rjust(6, '0')}"
|
304
|
+
end
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab400
|
5
|
+
class Unicred < Bbrcobranca::Remessa::Cnab400::Base
|
6
|
+
attr_accessor :posto, :byte_idt
|
7
|
+
|
8
|
+
# Codigo de transmissao fornecido pelo banco
|
9
|
+
attr_accessor :codigo_transmissao
|
10
|
+
|
11
|
+
validates_presence_of :agencia, :conta_corrente, :documento_cedente,
|
12
|
+
:digito_conta, :codigo_transmissao, message: 'não pode estar em branco.'
|
13
|
+
|
14
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ter 4 dígitos.'
|
15
|
+
validates_length_of :conta_corrente, maximum: 5, message: 'deve ter 5 dígitos.'
|
16
|
+
validates_length_of :documento_cedente, minimum: 11, maximum: 14, message: 'deve ter entre 11 e 14 dígitos.'
|
17
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ter 2 dígitos.'
|
18
|
+
validates_length_of :digito_conta, maximum: 1, message: 'deve ter 1 dígito.'
|
19
|
+
validates_length_of :codigo_transmissao, maximum: 20, message: 'deve ter 20 dígitos.'
|
20
|
+
|
21
|
+
validates_inclusion_of :carteira, in: %w(01 03 04 05 06 07), message: 'não existente para este banco.'
|
22
|
+
|
23
|
+
# Nova instancia do Unicred
|
24
|
+
def initialize(campos = {})
|
25
|
+
campos = {
|
26
|
+
aceite: 'N'
|
27
|
+
}.merge!(campos)
|
28
|
+
|
29
|
+
super(campos)
|
30
|
+
end
|
31
|
+
|
32
|
+
def agencia=(valor)
|
33
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
34
|
+
end
|
35
|
+
|
36
|
+
def conta_corrente=(valor)
|
37
|
+
@conta_corrente = valor.to_s.rjust(5, '0') if valor
|
38
|
+
end
|
39
|
+
|
40
|
+
def carteira=(valor)
|
41
|
+
@carteira = valor.to_s.rjust(2, '0') if valor
|
42
|
+
end
|
43
|
+
|
44
|
+
def cod_banco
|
45
|
+
'748'
|
46
|
+
end
|
47
|
+
|
48
|
+
def nome_banco
|
49
|
+
'UNICRED'.ljust(15, ' ')
|
50
|
+
end
|
51
|
+
|
52
|
+
# Informacoes da conta corrente do cedente
|
53
|
+
#
|
54
|
+
# @return [String]
|
55
|
+
#
|
56
|
+
def info_conta
|
57
|
+
# CAMPO TAMANHO
|
58
|
+
# codigo da transmissao 20
|
59
|
+
"#{codigo_transmissao}"
|
60
|
+
end
|
61
|
+
|
62
|
+
# Complemento do header
|
63
|
+
# (no caso do Unicred, sao apenas espacos em branco)
|
64
|
+
#
|
65
|
+
# @return [String]
|
66
|
+
#
|
67
|
+
def complemento
|
68
|
+
''.rjust(294, ' ')
|
69
|
+
end
|
70
|
+
|
71
|
+
# Codigo da carteira de acordo com a documentacao do Unicred
|
72
|
+
#
|
73
|
+
# @return [String]
|
74
|
+
#
|
75
|
+
def codigo_carteira
|
76
|
+
codigo_carteira = carteira[1]
|
77
|
+
end
|
78
|
+
|
79
|
+
def identificador_complemento
|
80
|
+
" "
|
81
|
+
end
|
82
|
+
|
83
|
+
# Retorna o nosso numero
|
84
|
+
#
|
85
|
+
# @return [String]
|
86
|
+
def formata_nosso_numero(nosso_numero)
|
87
|
+
nosso_numero.somente_numeros.rjust(20, ' ')
|
88
|
+
end
|
89
|
+
|
90
|
+
# Detalhe do arquivo
|
91
|
+
#
|
92
|
+
# @param pagamento [PagamentoCnab400]
|
93
|
+
# objeto contendo as informacoes referentes ao boleto (valor, vencimento, cliente)
|
94
|
+
# @param sequencial
|
95
|
+
# num. sequencial do registro no arquivo
|
96
|
+
#
|
97
|
+
# @return [String]
|
98
|
+
#
|
99
|
+
def monta_detalhe(pagamento, sequencial)
|
100
|
+
raise Bbrcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
101
|
+
|
102
|
+
detalhe = '1' # identificacao transacao 9[01]
|
103
|
+
detalhe << Bbrcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02]
|
104
|
+
detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14]
|
105
|
+
detalhe << codigo_transmissao # código da transmissao 9[20]
|
106
|
+
detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # numero de controle do participante X[25]
|
107
|
+
detalhe << formata_nosso_numero(pagamento.nosso_numero) # nosso numero X[20]
|
108
|
+
detalhe << ''.rjust(25, ' ') # brancos X[25]
|
109
|
+
detalhe << codigo_carteira # codigo da carteira X[01]
|
110
|
+
detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
|
111
|
+
detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
|
112
|
+
detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
|
113
|
+
detalhe << pagamento.formata_valor # valor do documento 9[13]
|
114
|
+
detalhe << cod_banco # codigo banco 9[03]
|
115
|
+
detalhe << ''.rjust(5, '0') # agencia cobradora - deixar zero 9[05]
|
116
|
+
detalhe << '01' # especie do titulo X[02]
|
117
|
+
detalhe << aceite # aceite (A/N) X[01]
|
118
|
+
detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06]
|
119
|
+
detalhe << "".rjust(4, "0") # instrucao 9[04]
|
120
|
+
detalhe << "0" # zero 9[01]
|
121
|
+
detalhe << pagamento.formata_valor_mora(12) # valor mora ao dia 9[12]
|
122
|
+
detalhe << pagamento.formata_data_desconto # data limite para desconto 9[06]
|
123
|
+
detalhe << pagamento.formata_valor_desconto # valor do desconto 9[13]
|
124
|
+
detalhe << pagamento.formata_valor_iof # valor do iof 9[13]
|
125
|
+
detalhe << pagamento.formata_valor_abatimento # valor do abatimento 9[13]
|
126
|
+
detalhe << pagamento.identificacao_sacado # identificacao do pagador 9[02]
|
127
|
+
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
|
128
|
+
detalhe << pagamento.nome_sacado.format_size(40) # nome do pagador X[40]
|
129
|
+
detalhe << pagamento.endereco_sacado.format_size(40) # endereco do pagador X[40]
|
130
|
+
detalhe << pagamento.bairro_sacado.format_size(12) # bairro do pagador X[12]
|
131
|
+
detalhe << pagamento.cep_sacado # cep do pagador 9[08]
|
132
|
+
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
|
133
|
+
detalhe << pagamento.uf_sacado # uf do pagador X[02]
|
134
|
+
detalhe << pagamento.nome_avalista.format_size(40) # nome do sacador/avalista X[40]
|
135
|
+
detalhe << pagamento.dias_protesto.rjust(2, '0') # numero de dias para proteste 9[02]
|
136
|
+
detalhe << "9" # moeda 9[01]
|
137
|
+
detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
|
138
|
+
detalhe
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|