Class: Brcobranca::Remessa::Cnab240::BaseCorrespondente
- Defined in:
- lib/brcobranca/remessa/cnab240/base_correspondente.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#codigo_carteira ⇒ Object
codigo da carteira opcoes: 1 - cobranca simples 2 - cobranca caucionada 3 - cobranca descontada 7 – modalidade Simples quando carteira 17 (apenas Banco do Brasil).
-
#convenio ⇒ Object
convenio do cedente.
-
#distribuicao_boleto ⇒ Object
identificacao da distribuicao do boleto (verificar opcoes nas classes referentes aos bancos).
-
#emissao_boleto ⇒ Object
identificacao da emissao do boleto (verificar opcoes nas classes referentes aos bancos).
-
#especie_titulo ⇒ Object
especie do titulo (verificar o padrao nas classes referentes aos bancos).
-
#forma_cadastramento ⇒ Object
forma de cadastramento dos titulos (campo nao tratado pelo Banco do Brasil) opcoes: 1 - com cadastramento (cobrança registrada) 2 - sem cadastramento (cobrança sem registro).
-
#mensagem_1 ⇒ Object
mensagem 1.
-
#mensagem_2 ⇒ Object
mensagem 2.
-
#tipo_documento ⇒ Object
tipo de documento (verificar o padrao nas classes referentes aos bancos).
Attributes inherited from Base
#aceite, #agencia, #carteira, #conta_corrente, #digito_conta, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa
Instance Method Summary collapse
-
#cod_banco ⇒ Object
Codigo do banco.
-
#codigo_convenio ⇒ Object
Codigo do convenio.
-
#codigo_protesto ⇒ Object
Codigo para protesto.
-
#complemento_header ⇒ Object
Complemento do registro.
-
#convenio_lote ⇒ Object
Informacoes do convenio para o lote.
-
#data_geracao ⇒ String
Data de geracao do arquivo.
-
#formata_nosso_numero(nosso_numero) ⇒ String
Retorna o nosso numero.
-
#gera_arquivo ⇒ String
Gera o arquivo remessa.
-
#hora_geracao ⇒ String
Hora de geracao do arquivo.
- #identificacao_avalista(pagamento) ⇒ Object
- #identificacao_sacado(pagamento) ⇒ Object
-
#info_conta ⇒ Object
Informacoes da conta do cedente.
-
#initialize(campos = {}) ⇒ BaseCorrespondente
constructor
A new instance of BaseCorrespondente.
-
#monta_header_arquivo ⇒ String
Monta o registro header do arquivo.
-
#monta_lote(_nro_lote) ⇒ Array
Monta um lote para o arquivo.
-
#monta_segmento_p(pagamento, sequencial) ⇒ String
Monta o registro segmento P do arquivo.
-
#monta_segmento_q(pagamento, sequencial) ⇒ String
Monta o registro segmento Q do arquivo.
-
#monta_trailer_arquivo(nro_lotes, sequencial) ⇒ String
Monta o registro trailer do arquivo.
Methods inherited from Base
#quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira
Methods included from Validations
#errors, included, #invalid?, #valid?
Constructor Details
#initialize(campos = {}) ⇒ BaseCorrespondente
Returns a new instance of BaseCorrespondente.
40 41 42 43 44 45 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 40 def initialize(campos = {}) campos = { codigo_carteira: '1', forma_cadastramento: '1', tipo_documento: ' ' }.merge!(campos) super(campos) end |
Instance Attribute Details
#codigo_carteira ⇒ Object
codigo da carteira
opcoes:
1 - cobranca simples
2 - cobranca caucionada
3 - cobranca descontada
7 – modalidade Simples quando carteira 17 (apenas Banco do Brasil)
19 20 21 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 19 def codigo_carteira @codigo_carteira end |
#convenio ⇒ Object
convenio do cedente
8 9 10 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 8 def convenio @convenio end |
#distribuicao_boleto ⇒ Object
identificacao da distribuicao do boleto (verificar opcoes nas classes referentes aos bancos)
28 29 30 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 28 def distribuicao_boleto @distribuicao_boleto end |
#emissao_boleto ⇒ Object
identificacao da emissao do boleto (verificar opcoes nas classes referentes aos bancos)
26 27 28 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 26 def emissao_boleto @emissao_boleto end |
#especie_titulo ⇒ Object
especie do titulo (verificar o padrao nas classes referentes aos bancos)
30 31 32 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 30 def especie_titulo @especie_titulo end |
#forma_cadastramento ⇒ Object
forma de cadastramento dos titulos (campo nao tratado pelo Banco do Brasil)
opcoes:
1 - com cadastramento (cobrança registrada)
2 - sem cadastramento (cobrança sem registro)
24 25 26 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 24 def forma_cadastramento @forma_cadastramento end |
#mensagem_1 ⇒ Object
mensagem 1
10 11 12 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 10 def mensagem_1 @mensagem_1 end |
#mensagem_2 ⇒ Object
mensagem 2
12 13 14 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 12 def mensagem_2 @mensagem_2 end |
#tipo_documento ⇒ Object
tipo de documento (verificar o padrao nas classes referentes aos bancos)
32 33 34 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 32 def tipo_documento @tipo_documento end |
Instance Method Details
#cod_banco ⇒ Object
Codigo do banco
Este metodo deve ser sobrescrevido na classe do banco
275 276 277 278 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 275 def cod_banco raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#codigo_convenio ⇒ Object
Codigo do convenio
Este metodo deve ser sobrescrevido na classe do banco
293 294 295 296 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 293 def codigo_convenio raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#codigo_protesto ⇒ Object
Codigo para protesto
Sobreescreva caso necessário
301 302 303 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 301 def codigo_protesto '0' end |
#complemento_header ⇒ Object
Complemento do registro
Este metodo deve ser sobrescrevido na classe do banco
257 258 259 260 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 257 def complemento_header raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#convenio_lote ⇒ Object
Informacoes do convenio para o lote
Este metodo deve ser sobrescrevido na classe do banco
266 267 268 269 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 266 def convenio_lote raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#data_geracao ⇒ String
Data de geracao do arquivo
51 52 53 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 51 def data_geracao Date.current.strftime('%d%m%Y') end |
#formata_nosso_numero(nosso_numero) ⇒ String
Retorna o nosso numero
169 170 171 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 169 def formata_nosso_numero(nosso_numero) "#{convenio.to_s.rjust(10, '0')}#{nosso_numero.to_s.rjust(7, '0')}" end |
#gera_arquivo ⇒ String
Gera o arquivo remessa
239 240 241 242 243 244 245 246 247 248 249 250 251 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 239 def gera_arquivo raise Brcobranca::RemessaInvalida, self if invalid? arquivo = [monta_header_arquivo] # contador de do lotes contador = 1 arquivo.push monta_lote(contador) arquivo << monta_trailer_arquivo(contador, ((pagamentos.size * 2) + (contador * 2) + 2)) arquivo.join("\r\n").remove_accents.upcase end |
#hora_geracao ⇒ String
Hora de geracao do arquivo
59 60 61 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 59 def hora_geracao (Time.respond_to?(:current) ? Time.current : Time.now).strftime('%H%M%S') end |
#identificacao_avalista(pagamento) ⇒ Object
177 178 179 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 177 def identificacao_avalista(pagamento) "0#{pagamento.identificacao_avalista(false)}" end |
#identificacao_sacado(pagamento) ⇒ Object
173 174 175 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 173 def identificacao_sacado(pagamento) "0#{pagamento.identificacao_sacado(false)}" end |
#info_conta ⇒ Object
Informacoes da conta do cedente
Este metodo deve ser sobrescrevido na classe do banco
284 285 286 287 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 284 def info_conta raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#monta_header_arquivo ⇒ String
Monta o registro header do arquivo
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 67 def monta_header_arquivo header_arquivo = '' # CAMPO TAMANHO header_arquivo += cod_banco # codigo do banco 3 header_arquivo << '0000' # zeros 4 header_arquivo << '1' # registro header do lote 1 header_arquivo << 'R' # tipo operacao: R-remessa 1 header_arquivo << ''.rjust(7, '0') # zeros 7 header_arquivo << ''.rjust(2, ' ') # brancos 2 header_arquivo << info_conta # informacoes da conta 22 header_arquivo << ''.rjust(30, ' ') # brancos 30 header_arquivo << empresa_mae.format_size(30) # nome da empresa 30 header_arquivo << ''.rjust(80, ' ') # brancos 80 header_arquivo << sequencial_remessa.to_s.rjust(8, '0') # numero seq. arquivo 8 header_arquivo << data_geracao # data geracao 8 header_arquivo << complemento_header # complemento do arquivo 44 header_arquivo end |
#monta_lote(_nro_lote) ⇒ Array
Monta um lote para o arquivo
numero do lote no arquivo
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 216 def monta_lote(_nro_lote) # contador dos registros do lote contador = 1 # header lote = [] pagamentos.each do |pagamento| raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid? lote << monta_segmento_p(pagamento, contador) contador += 1 lote << monta_segmento_q(pagamento, contador) contador += 1 end contador += 1 # trailer lote end |
#monta_segmento_p(pagamento, sequencial) ⇒ String
Monta o registro segmento P do arquivo
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 94 def monta_segmento_p(pagamento, sequencial) # # DESCRICAO TAMANHO segmento_p = ''.rjust(7, '0') # codigo banco 7 segmento_p += '3' # tipo de registro 1 segmento_p << sequencial.to_s.rjust(5, '0') # num. sequencial do registro no lote 5 segmento_p << 'P' # cod. segmento 1 segmento_p << ' ' # uso exclusivo 1 segmento_p << '01' # cod. movimento remessa 2 segmento_p << ''.rjust(23, ' ') # brancos 23 segmento_p << formata_nosso_numero(pagamento.nosso_numero) # uso exclusivo 17 segmento_p << codigo_carteira # codigo da carteira 1 segmento_p << tipo_documento # tipo de documento 2 segmento_p << emissao_boleto # identificaco emissao 1 segmento_p << ' ' # branco 1 segmento_p << complemento_p(pagamento) # informacoes da conta 15 segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') # data de venc. 8 segmento_p << pagamento.formata_valor(15) # valor documento 15 segmento_p << ''.rjust(6, '0') # zeros 6 segmento_p << aceite # aceite 1 segmento_p << ' ' # brancos 2 segmento_p << pagamento.data_emissao.strftime('%d%m%Y') # data de emissao titulo 8 segmento_p << '1' # tipo da mora 1 segmento_p << pagamento.formata_valor_mora(15).to_s # valor da mora 15 segmento_p << ''.rjust(9, '0') # zeros 9 segmento_p << pagamento.formata_data_desconto('%d%m%Y') # data desconto 8 segmento_p << pagamento.formata_valor_desconto(15) # valor desconto 15 segmento_p << ''.rjust(15, ' ') # filler 15 segmento_p << pagamento.formata_valor_abatimento(15) # valor abatimento 15 segmento_p << ''.rjust(25, ' ') # identificacao titulo empresa 25 segmento_p << codigo_protesto # cod. para protesto 1 segmento_p << '00' # dias para protesto 2 segmento_p << ''.rjust(4, '0') # zero 4 segmento_p << '09' # cod. da moeda 2 segmento_p << ''.rjust(10, '0') # uso exclusivo 10 segmento_p << '0' # zero 1 segmento_p end |
#monta_segmento_q(pagamento, sequencial) ⇒ String
Monta o registro segmento Q do arquivo
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 141 def monta_segmento_q(pagamento, sequencial) segmento_q = '' # CAMPO TAMANHO segmento_q += ''.rjust(7, '0') # zeros 3 segmento_q << '3' # registro detalhe 1 segmento_q << sequencial.to_s.rjust(5, '0') # lote de servico 5 segmento_q << 'Q' # cod. segmento 1 segmento_q << ' ' # brancos 1 segmento_q << '01' # cod. movimento remessa 2 segmento_q << identificacao_sacado(pagamento) # tipo insc. sacado 2 segmento_q << pagamento.documento_sacado.to_s.rjust(14, '0') # documento sacado 14 segmento_q << pagamento.nome_sacado.format_size(40) # nome cliente 40 segmento_q << pagamento.endereco_sacado.format_size(40) # endereco cliente 40 segmento_q << pagamento.bairro_sacado.format_size(15) # bairro 15 segmento_q << pagamento.cep_sacado[0..4] # cep 5 segmento_q << pagamento.cep_sacado[5..7] # sufixo cep 3 segmento_q << pagamento.cidade_sacado.format_size(15) # cidade 15 segmento_q << pagamento.uf_sacado # uf 2 segmento_q << identificacao_avalista(pagamento) # identificacao do sacador 2 segmento_q << pagamento.documento_avalista.to_s.rjust(14, '0') # documento sacador 15 segmento_q << pagamento.nome_avalista.format_size(40) # nome avalista 40 segmento_q << ''.rjust(31, ' ') # zeros 0 segmento_q end |
#monta_trailer_arquivo(nro_lotes, sequencial) ⇒ String
Monta o registro trailer do arquivo
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/brcobranca/remessa/cnab240/base_correspondente.rb', line 190 def monta_trailer_arquivo(nro_lotes, sequencial) # CAMPO TAMANHO # codigo banco 3 # lote de servico 4 # tipo de registro 1 # uso FEBRABAN 9 # nro de lotes 6 # nro de registros(linhas) 6 # uso FEBRABAN 211 "#{cod_banco}99999#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{sequencial.to_s.rjust(6, '0')}#{''.rjust(211, ' ')}" end |