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,160 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab400
|
5
|
+
class BancoNordeste < Bbrcobranca::Remessa::Cnab400::Base
|
6
|
+
# 1 - Emitido pelo banco
|
7
|
+
# 2 - Emitido pelo cliente
|
8
|
+
attr_accessor :emissao_boleto
|
9
|
+
|
10
|
+
validates_presence_of :agencia, :conta_corrente, message: 'não pode estar em branco.'
|
11
|
+
validates_presence_of :documento_cedente, :digito_conta, message: 'não pode estar em branco.'
|
12
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ter 4 dígitos.'
|
13
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ter 7 dígitos.'
|
14
|
+
validates_length_of :documento_cedente, minimum: 11, maximum: 14, message: 'deve ter entre 11 e 14 dígitos.'
|
15
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ter 2 dígitos.'
|
16
|
+
validates_length_of :digito_conta, maximum: 1, message: 'deve ter 1 dígito.'
|
17
|
+
validates_inclusion_of :carteira, in: %w(21 41 51), message: 'não é válida.'
|
18
|
+
|
19
|
+
# Nova instancia do Banco do Nordeste
|
20
|
+
def initialize(campos = {})
|
21
|
+
campos = {
|
22
|
+
aceite: 'N',
|
23
|
+
emissao_boleto: '2'
|
24
|
+
}.merge!(campos)
|
25
|
+
|
26
|
+
super(campos)
|
27
|
+
end
|
28
|
+
|
29
|
+
def agencia=(valor)
|
30
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
31
|
+
end
|
32
|
+
|
33
|
+
def conta_corrente=(valor)
|
34
|
+
@conta_corrente = valor.to_s.rjust(7, '0') if valor
|
35
|
+
end
|
36
|
+
|
37
|
+
def carteira=(valor)
|
38
|
+
@carteira = valor.to_s.rjust(2, '0') if valor
|
39
|
+
end
|
40
|
+
|
41
|
+
def cod_banco
|
42
|
+
'004'
|
43
|
+
end
|
44
|
+
|
45
|
+
def nome_banco
|
46
|
+
'B.DO NORDESTE'.ljust(15, ' ')
|
47
|
+
end
|
48
|
+
|
49
|
+
# Informacoes da conta corrente do cedente
|
50
|
+
#
|
51
|
+
# @return [String]
|
52
|
+
#
|
53
|
+
def info_conta
|
54
|
+
# CAMPO TAMANHO
|
55
|
+
# agencia 4
|
56
|
+
# zeros 2
|
57
|
+
# conta corrente 7
|
58
|
+
# digito da conta 1
|
59
|
+
# complemento 6
|
60
|
+
"#{agencia}00#{conta_corrente}#{digito_conta}#{''.rjust(6, ' ')}"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Complemento do header
|
64
|
+
# (no caso do Banco do Nordeste, sao apenas espacos em branco)
|
65
|
+
#
|
66
|
+
# @return [String]
|
67
|
+
#
|
68
|
+
def complemento
|
69
|
+
''.rjust(294, ' ')
|
70
|
+
end
|
71
|
+
|
72
|
+
# Codigo da carteira de acordo com a documentacao do Banco do Nordeste
|
73
|
+
#
|
74
|
+
# @return [String]
|
75
|
+
#
|
76
|
+
def codigo_carteira
|
77
|
+
return "I" if carteira.to_s == "51"
|
78
|
+
|
79
|
+
carteiras = {
|
80
|
+
"1" => { "21" => "1", "41" => "2" }, # 1 - Emitido pelo banco
|
81
|
+
"2" => { "21" => "4", "41" => "5" } # 2 - Emitido pelo cliente
|
82
|
+
}
|
83
|
+
|
84
|
+
carteiras[emissao_boleto.to_s][carteira.to_s]
|
85
|
+
end
|
86
|
+
|
87
|
+
# Dígito verificador do nosso número.
|
88
|
+
#
|
89
|
+
# @param nosso_numero
|
90
|
+
#
|
91
|
+
# @return [String] 1 caracteres numéricos.
|
92
|
+
def digito_nosso_numero(nosso_numero)
|
93
|
+
nosso_numero.to_s.rjust(7, '0').modulo11(
|
94
|
+
multiplicador: (2..8).to_a,
|
95
|
+
mapeamento: { 1 => 0, 10 => 0, 11 => 0 }
|
96
|
+
) { |total| 11 - (total % 11) }
|
97
|
+
end
|
98
|
+
|
99
|
+
# Detalhe do arquivo
|
100
|
+
#
|
101
|
+
# @param pagamento [PagamentoCnab400]
|
102
|
+
# objeto contendo as informacoes referentes ao boleto (valor, vencimento, cliente)
|
103
|
+
# @param sequencial
|
104
|
+
# num. sequencial do registro no arquivo
|
105
|
+
#
|
106
|
+
# @return [String]
|
107
|
+
#
|
108
|
+
def monta_detalhe(pagamento, sequencial)
|
109
|
+
raise Bbrcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
110
|
+
|
111
|
+
detalhe = '1' # identificacao transacao 9[01]
|
112
|
+
detalhe << ''.rjust(16, ' ') # filler [16]
|
113
|
+
detalhe << agencia # agencia 9[04]
|
114
|
+
detalhe << ''.rjust(2, '0') # complemento de registro (zeros) 9[02]
|
115
|
+
detalhe << conta_corrente # conta corrente 9[07]
|
116
|
+
detalhe << digito_conta # dac 9[01]
|
117
|
+
detalhe << pagamento.formata_percentual_multa.to_s[0..1] # taxa - multa [02]
|
118
|
+
detalhe << ''.rjust(4, ' ') # filler [04]
|
119
|
+
detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25]
|
120
|
+
detalhe << pagamento.nosso_numero.to_s.rjust(7, '0') # nosso numero 9[07]
|
121
|
+
detalhe << digito_nosso_numero(pagamento.nosso_numero).to_s # dv nosso numero 9[01]
|
122
|
+
detalhe << ''.rjust(10, '0') # numero do contrato [10]
|
123
|
+
detalhe << ''.rjust(6, '0') # data do segundo pagamento [06]
|
124
|
+
detalhe << ''.rjust(13, '0') # valor do segundo pagamento [13]
|
125
|
+
detalhe << ''.rjust(8, ' ') # filler [08]
|
126
|
+
detalhe << codigo_carteira # codigo da carteira X[01]
|
127
|
+
detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
|
128
|
+
detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10]
|
129
|
+
detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06]
|
130
|
+
detalhe << pagamento.formata_valor # valor do documento 9[13]
|
131
|
+
detalhe << cod_banco # codigo banco 9[03]
|
132
|
+
detalhe << ''.rjust(4, '0') # agencia cobradora - deixar zero 9[05]
|
133
|
+
detalhe << ' ' # filler [01]
|
134
|
+
detalhe << '01' # especie do titulo X[02]
|
135
|
+
detalhe << aceite # aceite (A/N) X[01]
|
136
|
+
detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06]
|
137
|
+
detalhe << ''.rjust(4, '0') # instrucao - deixar zero [04]
|
138
|
+
detalhe << pagamento.formata_valor_mora # valor mora ao dia 9[13]
|
139
|
+
detalhe << pagamento.formata_data_desconto # data limite para desconto 9[06]
|
140
|
+
detalhe << pagamento.formata_valor_desconto # valor do desconto 9[13]
|
141
|
+
detalhe << pagamento.formata_valor_iof # valor do iof 9[13]
|
142
|
+
detalhe << pagamento.formata_valor_abatimento # valor do abatimento 9[13]
|
143
|
+
detalhe << pagamento.identificacao_sacado # identificacao do pagador 9[02]
|
144
|
+
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14]
|
145
|
+
detalhe << pagamento.nome_sacado.format_size(40) # nome do pagador X[40]
|
146
|
+
detalhe << pagamento.endereco_sacado.format_size(40) # endereco do pagador X[40]
|
147
|
+
detalhe << pagamento.bairro_sacado.format_size(12) # bairro do pagador X[12]
|
148
|
+
detalhe << pagamento.cep_sacado # cep do pagador 9[08]
|
149
|
+
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15]
|
150
|
+
detalhe << pagamento.uf_sacado # uf do pagador X[02]
|
151
|
+
detalhe << pagamento.nome_avalista.format_size(40) # nome do sacador/avalista X[30]
|
152
|
+
detalhe << "99" # prazo para protesto [02]
|
153
|
+
detalhe << "0" # código da moeda X[01]
|
154
|
+
detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06]
|
155
|
+
detalhe
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab400
|
5
|
+
class Banrisul < Bbrcobranca::Remessa::Cnab400::Base
|
6
|
+
attr_accessor :convenio
|
7
|
+
|
8
|
+
validates_presence_of :agencia, :convenio, :sequencial_remessa, message: 'não pode estar em branco.'
|
9
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ter 4 dígitos.'
|
10
|
+
validates_length_of :sequencial_remessa, maximum: 7, message: 'deve ter 7 dígitos.'
|
11
|
+
validates_length_of :convenio, maximum: 13, message: 'deve ter 13 dígitos.'
|
12
|
+
validates_length_of :carteira, maximum: 1, message: 'deve ter 1 dígito.'
|
13
|
+
|
14
|
+
def agencia=(valor)
|
15
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
16
|
+
end
|
17
|
+
|
18
|
+
def convenio=(valor)
|
19
|
+
@convenio = valor.to_s.rjust(13, '0') if valor
|
20
|
+
end
|
21
|
+
|
22
|
+
def sequencial_remessa=(valor)
|
23
|
+
@sequencial_remessa = valor.to_s.rjust(7, '0') if valor
|
24
|
+
end
|
25
|
+
|
26
|
+
def info_conta
|
27
|
+
codigo_cedente.ljust(20, ' ')
|
28
|
+
end
|
29
|
+
|
30
|
+
def cod_banco
|
31
|
+
'041'
|
32
|
+
end
|
33
|
+
|
34
|
+
def nome_banco
|
35
|
+
'BANRISUL'.ljust(15, ' ')
|
36
|
+
end
|
37
|
+
|
38
|
+
def complemento
|
39
|
+
''.rjust(294, ' ')
|
40
|
+
end
|
41
|
+
|
42
|
+
def codigo_cedente
|
43
|
+
convenio
|
44
|
+
end
|
45
|
+
|
46
|
+
def digito_nosso_numero(nosso_numero)
|
47
|
+
nosso_numero.duplo_digito
|
48
|
+
end
|
49
|
+
|
50
|
+
# Header do arquivo remessa
|
51
|
+
#
|
52
|
+
# @return [String]
|
53
|
+
#
|
54
|
+
def monta_header
|
55
|
+
# CAMPO TAMANHO VALOR
|
56
|
+
# tipo do registro [1] 0
|
57
|
+
# operacao [1] 1
|
58
|
+
# literal remessa [7] REMESSA
|
59
|
+
# brancos [16]
|
60
|
+
# info. conta [20]
|
61
|
+
# empresa mae [30]
|
62
|
+
# cod. banco [3]
|
63
|
+
# nome banco [15]
|
64
|
+
# data geracao [6] formato DDMMAA
|
65
|
+
# complemento registro [294]
|
66
|
+
# num. sequencial [6] 000001
|
67
|
+
"01REMESSA #{info_conta}#{empresa_mae.format_size(30)}#{cod_banco}#{nome_banco}#{data_geracao}#{complemento}000001"
|
68
|
+
end
|
69
|
+
|
70
|
+
def monta_detalhe(pagamento, sequencial)
|
71
|
+
raise Bbrcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
72
|
+
|
73
|
+
detalhe = '1' # identificação do registro 9[01] 001 a 001
|
74
|
+
detalhe << ''.rjust(16, ' ') # brancos 9[16] 002 a 017
|
75
|
+
detalhe << codigo_cedente.rjust(13, ' ') # código do cedente X[13] 018 a 030
|
76
|
+
detalhe << ''.rjust(7, ' ') # brancos X[07] 031 a 037
|
77
|
+
detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ')# num. controle X[25] 038 a 062
|
78
|
+
detalhe << pagamento.nosso_numero.to_s.rjust(8, '0') # identificação do título (nosso número) 9[08] 063 a 070
|
79
|
+
detalhe << digito_nosso_numero(pagamento.nosso_numero) # dígitos de conferência do nosso número (dv) 9[02] 071 a 072
|
80
|
+
detalhe << ''.rjust(32, ' ') # mensagem no bloqueto X[32] 073 a 104
|
81
|
+
detalhe << ''.rjust(3, ' ') # brancos X[03] 105 a 107
|
82
|
+
detalhe << carteira # carteira 9[01] 108 a 108
|
83
|
+
detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02] 109 a 110
|
84
|
+
detalhe << pagamento.documento_ou_numero.to_s.ljust(10, ' ')# numero do documento alfanum. X[10] 111 a 120
|
85
|
+
detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data de vencimento 9[06] 121 a 126
|
86
|
+
detalhe << pagamento.formata_valor # valor do titulo 9[13] 127 a 139
|
87
|
+
detalhe << cod_banco # banco encarregado 9[03] 140 a 142
|
88
|
+
detalhe << ''.rjust(5, ' ') # agencia depositaria (brancos) 9[05] 143 a 147
|
89
|
+
detalhe << '08' # especie do titulo 9[02] 148 a 149
|
90
|
+
detalhe << 'N' # identificacao (sempre N) X[01] 150 a 150
|
91
|
+
detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06] 151 a 156
|
92
|
+
detalhe << codigo_primeira_instrucao(pagamento) # 1a instrucao 9[02] 157 a 158
|
93
|
+
detalhe << pagamento.cod_segunda_instrucao # 2a instrucao 9[02] 159 a 160
|
94
|
+
detalhe << tipo_mora(pagamento) # tipo de mora (diária ou mensal) 9[13] 161 a 161
|
95
|
+
detalhe << formata_valor_mora(12, pagamento) # mora 9[13] 162 a 173
|
96
|
+
detalhe << pagamento.formata_data_desconto # data desconto 9[06] 174 a 179
|
97
|
+
detalhe << pagamento.formata_valor_desconto # valor desconto 9[13] 180 a 192
|
98
|
+
detalhe << pagamento.formata_valor_iof # valor iof 9[13] 193 a 205
|
99
|
+
detalhe << pagamento.formata_valor_abatimento # valor abatimento 9[13] 206 a 218
|
100
|
+
detalhe << pagamento.identificacao_sacado # identificacao do pagador 9[02] 219 a 220
|
101
|
+
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # cpf/cnpj do pagador 9[14] 221 a 234
|
102
|
+
detalhe << pagamento.nome_sacado.format_size(35) # nome do pagador 9[35] 235 a 269
|
103
|
+
detalhe << ''.rjust(5, ' ') # brancos 9[05] 270 a 274
|
104
|
+
detalhe << pagamento.endereco_sacado.format_size(40) # endereco do pagador X[40] 275 a 314
|
105
|
+
detalhe << ''.rjust(7, ' ') # brancos X[07] 315 a 321
|
106
|
+
detalhe << formata_percentual_multa(pagamento) # percentual multa X[02] 322 a 324
|
107
|
+
detalhe << '00' # num.dias para a multa após o vencimento 9[02] 325 a 326
|
108
|
+
detalhe << pagamento.cep_sacado # cep do pagador 9[08] 327 a 334
|
109
|
+
detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador 9[15] 335 a 349
|
110
|
+
detalhe << pagamento.uf_sacado # uf do pagador 9[02] 350 a 351
|
111
|
+
detalhe << '0000' # taxa ao dia para pag. antecipado 9[04] 352 a 355
|
112
|
+
detalhe << ' ' # branco 9[01] 356 a 356
|
113
|
+
detalhe << ''.rjust(13, '0') # valor para cálc. do desconto 9[13] 357 a 369
|
114
|
+
detalhe << pagamento.dias_protesto.to_s.rjust(2, '0') # dias para protesto 9[02] 370 a 371
|
115
|
+
detalhe << ''.rjust(23, ' ') # brancos X[23] 370 a 394
|
116
|
+
detalhe << sequencial.to_s.rjust(6, '0') # numero do registro do arquivo 9[06] 395 a 400
|
117
|
+
detalhe
|
118
|
+
end
|
119
|
+
|
120
|
+
def monta_trailer(sequencial)
|
121
|
+
trailer = "9"
|
122
|
+
trailer << ''.rjust(26, ' ') # brancos X[26] 002 a 027
|
123
|
+
trailer << valor_titulos_carteira(13) # total geral/valores dos títulos 9[13] 028 a 040
|
124
|
+
trailer << ''.rjust(354, ' ') # brancos X[354] 041 a 394
|
125
|
+
trailer << sequencial.to_s.rjust(6, '0') # sequencial 9[06] 395 a 400
|
126
|
+
trailer
|
127
|
+
end
|
128
|
+
|
129
|
+
private
|
130
|
+
|
131
|
+
def codigo_primeira_instrucao(pagamento)
|
132
|
+
return "18" if pagamento.percentual_multa.to_f > 0.00
|
133
|
+
pagamento.cod_primeira_instrucao
|
134
|
+
end
|
135
|
+
|
136
|
+
def tipo_mora(pagamento)
|
137
|
+
return ' ' if pagamento.tipo_mora == '3'
|
138
|
+
pagamento.tipo_mora
|
139
|
+
end
|
140
|
+
|
141
|
+
def formata_percentual_multa(pagamento)
|
142
|
+
raise ValorInvalido, 'Deve ser um Float' if !(pagamento.percentual_multa.to_s =~ /\./)
|
143
|
+
|
144
|
+
sprintf('%.1f', pagamento.percentual_multa).delete('.').rjust(3, '0')
|
145
|
+
end
|
146
|
+
|
147
|
+
def formata_valor_mora(tamanho, pagamento)
|
148
|
+
return ''.rjust(tamanho, ' ') if pagamento.tipo_mora == '3'
|
149
|
+
pagamento.formata_valor_mora(tamanho)
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab400
|
5
|
+
class Base < Bbrcobranca::Remessa::Base
|
6
|
+
validates_presence_of :carteira, message: 'não pode estar em branco.'
|
7
|
+
|
8
|
+
# Data da geracao do arquivo seguindo o padrao DDMMAA
|
9
|
+
#
|
10
|
+
# @return [String]
|
11
|
+
#
|
12
|
+
def data_geracao
|
13
|
+
Date.current.strftime('%d%m%y')
|
14
|
+
end
|
15
|
+
|
16
|
+
# Header do arquivo remessa
|
17
|
+
#
|
18
|
+
# @return [String]
|
19
|
+
#
|
20
|
+
def monta_header
|
21
|
+
# CAMPO TAMANHO VALOR
|
22
|
+
# tipo do registro [1] 0
|
23
|
+
# operacao [1] 1
|
24
|
+
# literal remessa [7] REMESSA
|
25
|
+
# Código do serviço [2] 01
|
26
|
+
# cod. servico [15] COBRANCA
|
27
|
+
# info. conta [20]
|
28
|
+
# empresa mae [30]
|
29
|
+
# cod. banco [3]
|
30
|
+
# nome banco [15]
|
31
|
+
# data geracao [6] formato DDMMAA
|
32
|
+
# complemento registro [294]
|
33
|
+
# num. sequencial [6] 000001
|
34
|
+
"01REMESSA01COBRANCA #{info_conta}#{empresa_mae.format_size(30)}#{cod_banco}#{nome_banco}#{data_geracao}#{complemento}000001"
|
35
|
+
end
|
36
|
+
|
37
|
+
# Trailer do arquivo remessa
|
38
|
+
#
|
39
|
+
# @param sequencial
|
40
|
+
# num. sequencial do registro no arquivo
|
41
|
+
#
|
42
|
+
# @return [String]
|
43
|
+
#
|
44
|
+
def monta_trailer(sequencial)
|
45
|
+
# CAMPO TAMANHO VALOR
|
46
|
+
# identificacao registro [1] 9
|
47
|
+
# complemento [393]
|
48
|
+
# num. sequencial [6]
|
49
|
+
"9#{''.rjust(393, ' ')}#{sequencial.to_s.rjust(6, '0')}"
|
50
|
+
end
|
51
|
+
|
52
|
+
# Registro detalhe do arquivo remessa
|
53
|
+
#
|
54
|
+
# Este metodo deve ser sobrescrevido na classe do banco
|
55
|
+
#
|
56
|
+
def monta_detalhe(_pagamento, _sequencial)
|
57
|
+
raise Bbrcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
58
|
+
end
|
59
|
+
|
60
|
+
# Gera o arquivo com os registros
|
61
|
+
#
|
62
|
+
# @return [String]
|
63
|
+
def gera_arquivo
|
64
|
+
raise Bbrcobranca::RemessaInvalida, self unless valid?
|
65
|
+
|
66
|
+
# contador de registros no arquivo
|
67
|
+
contador = 1
|
68
|
+
ret = [monta_header]
|
69
|
+
pagamentos.each do |pagamento|
|
70
|
+
contador += 1
|
71
|
+
ret << monta_detalhe(pagamento, contador)
|
72
|
+
if pagamento.codigo_multa.to_i > 0 && self.respond_to?(:monta_detalhe_multa)
|
73
|
+
contador += 1
|
74
|
+
ret << monta_detalhe_multa(pagamento, contador)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
ret << monta_trailer(contador + 1)
|
78
|
+
|
79
|
+
remittance = ret.join("\n").to_ascii.upcase
|
80
|
+
remittance << "\n"
|
81
|
+
|
82
|
+
remittance.encode(remittance.encoding, universal_newline: true).encode(remittance.encoding, crlf_newline: true)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Informacoes referentes a conta do cedente
|
86
|
+
#
|
87
|
+
# Este metodo deve ser sobrescrevido na classe do banco
|
88
|
+
#
|
89
|
+
def info_conta
|
90
|
+
raise Bbrcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
91
|
+
end
|
92
|
+
|
93
|
+
# Numero do banco na camara de compensacao
|
94
|
+
#
|
95
|
+
# Este metodo deve ser sobrescrevido na classe do banco
|
96
|
+
#
|
97
|
+
def cod_banco
|
98
|
+
raise Bbrcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
99
|
+
end
|
100
|
+
|
101
|
+
# Nome por extenso do banco cobrador
|
102
|
+
#
|
103
|
+
# Este metodo deve ser sobrescrevido na classe do banco
|
104
|
+
#
|
105
|
+
def nome_banco
|
106
|
+
raise Bbrcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
107
|
+
end
|
108
|
+
|
109
|
+
# Complemento do registro header
|
110
|
+
#
|
111
|
+
# Este metodo deve ser sobrescrevido na classe do banco
|
112
|
+
#
|
113
|
+
def complemento
|
114
|
+
raise Bbrcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module Bbrcobranca
|
3
|
+
module Remessa
|
4
|
+
module Cnab400
|
5
|
+
class Bradesco < Bbrcobranca::Remessa::Cnab400::Base
|
6
|
+
# codigo da empresa (informado pelo Bradesco no cadastramento)
|
7
|
+
attr_accessor :codigo_empresa
|
8
|
+
|
9
|
+
validates_presence_of :agencia, :conta_corrente, message: 'não pode estar em branco.'
|
10
|
+
validates_presence_of :codigo_empresa, :sequencial_remessa,
|
11
|
+
:digito_conta, message: 'não pode estar em branco.'
|
12
|
+
validates_length_of :codigo_empresa, maximum: 20, message: 'deve ser menor ou igual a 20 dígitos.'
|
13
|
+
validates_length_of :agencia, maximum: 5, message: 'deve ter 5 dígitos.'
|
14
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ter 7 dígitos.'
|
15
|
+
validates_length_of :sequencial_remessa, maximum: 7, message: 'deve ter 7 dígitos.'
|
16
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ter no máximo 2 dígitos.'
|
17
|
+
validates_length_of :digito_conta, maximum: 1, message: 'deve ter 1 dígito.'
|
18
|
+
|
19
|
+
def agencia=(valor)
|
20
|
+
@agencia = valor.to_s.rjust(5, '0') if valor
|
21
|
+
end
|
22
|
+
|
23
|
+
def conta_corrente=(valor)
|
24
|
+
@conta_corrente = valor.to_s.rjust(7, '0') if valor
|
25
|
+
end
|
26
|
+
|
27
|
+
def codigo_empresa=(valor)
|
28
|
+
@codigo_empresa = valor.to_s.rjust(20, '0') if valor
|
29
|
+
end
|
30
|
+
|
31
|
+
def sequencial_remessa=(valor)
|
32
|
+
@sequencial_remessa = valor.to_s.rjust(7, '0') if valor
|
33
|
+
end
|
34
|
+
|
35
|
+
def info_conta
|
36
|
+
codigo_empresa
|
37
|
+
end
|
38
|
+
|
39
|
+
def cod_banco
|
40
|
+
'237'
|
41
|
+
end
|
42
|
+
|
43
|
+
def nome_banco
|
44
|
+
'BRADESCO'.ljust(15, ' ')
|
45
|
+
end
|
46
|
+
|
47
|
+
def complemento
|
48
|
+
"#{''.rjust(8, ' ')}MX#{sequencial_remessa}#{''.rjust(277, ' ')}"
|
49
|
+
end
|
50
|
+
|
51
|
+
def identificacao_empresa
|
52
|
+
# identificacao da empresa no banco
|
53
|
+
identificacao = '0' # vazio [1]
|
54
|
+
identificacao << carteira.to_s.rjust(3, '0') # carteira [3]
|
55
|
+
identificacao << agencia # codigo da agencia (sem dv) [5]
|
56
|
+
identificacao << conta_corrente # codigo da conta [7]
|
57
|
+
identificacao << digito_conta # digito da conta [1]
|
58
|
+
end
|
59
|
+
|
60
|
+
def digito_nosso_numero(nosso_numero)
|
61
|
+
"#{carteira}#{nosso_numero.to_s.rjust(11, '0')}".modulo11(
|
62
|
+
multiplicador: [2, 3, 4, 5, 6, 7],
|
63
|
+
mapeamento: { 10 => 'P', 11 => 0 }
|
64
|
+
) { |total| 11 - (total % 11) }
|
65
|
+
end
|
66
|
+
|
67
|
+
# Formata o endereco do sacado
|
68
|
+
# de acordo com os caracteres disponiveis (40)
|
69
|
+
# concatenando o endereco, cidade e uf
|
70
|
+
#
|
71
|
+
def formata_endereco_sacado(pgto)
|
72
|
+
endereco = "#{pgto.endereco_sacado}, #{pgto.cidade_sacado}/#{pgto.uf_sacado}"
|
73
|
+
return endereco.ljust(40, ' ') if endereco.size <= 40
|
74
|
+
"#{pgto.endereco_sacado[0..19]} #{pgto.cidade_sacado[0..14]}/#{pgto.uf_sacado}".format_size(40)
|
75
|
+
end
|
76
|
+
|
77
|
+
def monta_detalhe(pagamento, sequencial)
|
78
|
+
raise Bbrcobranca::RemessaInvalida, pagamento if pagamento.invalid?
|
79
|
+
|
80
|
+
detalhe = '1' # identificacao do registro 9[01] 001 a 001
|
81
|
+
detalhe << ''.rjust(5, '0') # agencia de debito (op) 9[05] 002 a 006
|
82
|
+
detalhe << ''.rjust(1, '0') # digito da agencia de debito (op) X[01] 007 a 007
|
83
|
+
detalhe << ''.rjust(5, '0') # razao da conta corrente de debito (op) 9[05] 008 a 012
|
84
|
+
detalhe << ''.rjust(7, '0') # conta corrente (op) 9[07] 013 a 019
|
85
|
+
detalhe << ''.rjust(1, '0') # digito da conta corrente (op) X[01] 020 a 020
|
86
|
+
detalhe << identificacao_empresa # identficacao da empresa X[17] 021 a 037
|
87
|
+
detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # num. controle X[25] 038 a 062
|
88
|
+
detalhe << ''.rjust(3, '0') # codigo do banco (debito automatico apenas) 9[03] 063 a 065
|
89
|
+
detalhe << pagamento.codigo_multa # campo da multa (0 = sem, 2 = com) 9[01] 066 a 066 *
|
90
|
+
detalhe << pagamento.formata_percentual_multa # percentual multa 9[04] 067 a 070 *
|
91
|
+
detalhe << pagamento.nosso_numero.to_s.rjust(11, '0') # identificacao do titulo (nosso numero) 9[11] 071 a 081
|
92
|
+
detalhe << digito_nosso_numero(pagamento.nosso_numero).to_s # digito de conferencia do nosso numero (dv) X[01] 082 a 082
|
93
|
+
detalhe << ''.rjust(10, '0') # desconto por dia 9[10] 083 a 092
|
94
|
+
detalhe << '2' # condicao emissao boleto (2 = cliente) 9[01] 093 a 093
|
95
|
+
detalhe << 'N' # emite boleto para debito X[01] 094 a 094
|
96
|
+
detalhe << ''.rjust(10, ' ') # operacao no banco (brancos) X[10] 095 a 104
|
97
|
+
detalhe << ' ' # indicador rateio X[01] 105 a 105
|
98
|
+
detalhe << '2' # endereco para aviso debito (op 2 = ignora) 9[01] 106 a 106
|
99
|
+
detalhe << ''.rjust(2, ' ') # brancos X[02] 107 a 108
|
100
|
+
detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02]
|
101
|
+
detalhe << pagamento.numero.to_s.ljust(10, ' ') # numero do documento alfanum. X[10] 111 a 120
|
102
|
+
detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data de vencimento 9[06] 121 a 126
|
103
|
+
detalhe << pagamento.formata_valor # valor do titulo 9[13] 127 a 139
|
104
|
+
detalhe << ''.rjust(3, '0') # banco encarregado (zeros) 9[03] 140 a 142
|
105
|
+
detalhe << ''.rjust(5, '0') # agencia depositaria (zeros) 9[05] 143 a 147
|
106
|
+
detalhe << '01' # especie do titulo 9[02] 148 a 149
|
107
|
+
detalhe << 'N' # identificacao (sempre N) X[01] 150 a 150
|
108
|
+
detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06] 151 a 156
|
109
|
+
detalhe << ''.rjust(2, '0') # 1a instrucao 9[02] 157 a 158
|
110
|
+
detalhe << ''.rjust(2, '0') # 2a instrucao 9[02] 159 a 160
|
111
|
+
detalhe << pagamento.formata_valor_mora # mora 9[13] 161 a 173
|
112
|
+
detalhe << pagamento.formata_data_desconto # data desconto 9[06] 174 a 179
|
113
|
+
detalhe << pagamento.formata_valor_desconto # valor desconto 9[13] 180 a 192
|
114
|
+
detalhe << pagamento.formata_valor_iof # valor iof 9[13] 193 a 205
|
115
|
+
detalhe << pagamento.formata_valor_abatimento # valor abatimento 9[13] 206 a 218
|
116
|
+
detalhe << pagamento.identificacao_sacado # identificacao do pagador 9[02] 219 a 220
|
117
|
+
detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # cpf/cnpj do pagador 9[14] 221 a 234
|
118
|
+
detalhe << pagamento.nome_sacado.format_size(40) # nome do pagador 9[40] 235 a 274
|
119
|
+
detalhe << formata_endereco_sacado(pagamento) # endereco do pagador X[40] 275 a 314
|
120
|
+
detalhe << ''.rjust(12, ' ') # 1a mensagem X[12] 315 a 326
|
121
|
+
detalhe << pagamento.cep_sacado[0..4] # cep do pagador 9[05] 327 a 331
|
122
|
+
detalhe << pagamento.cep_sacado[5..7] # sufixo do cep do pagador 9[03] 332 a 334
|
123
|
+
detalhe << ''.rjust(60, ' ') # sacador/2a mensagem - verificar X[60] 335 a 394
|
124
|
+
detalhe << sequencial.to_s.rjust(6, '0') # numero do registro do arquivo 9[06] 395 a 400
|
125
|
+
detalhe
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|