Class: BrBoleto::Remessa::Cnab400::Santander

Inherits:
Base show all
Defined in:
lib/br_boleto/remessa/cnab400/santander.rb

Instance Attribute Summary

Attributes inherited from Base

#data_hora_arquivo, #sequencial_remessa

Instance Method Summary collapse

Methods inherited from Base

#dados_do_arquivo, #dados_do_pagamento, #informacoes_do_banco

Methods included from Helper::Trailer

#monta_trailer, #trailer_arquivo_posicao_001_a_001, #trailer_arquivo_posicao_394_a_400

Methods included from Helper::Detalhe

#detalhe_posicao_001_001, #detalhe_posicao_002_003, #detalhe_posicao_004_017, #detalhe_posicao_018_037, #detalhe_posicao_038_062, #detalhe_posicao_109_110, #detalhe_posicao_111_120, #detalhe_posicao_121_160, #detalhe_posicao_161_218, #detalhe_posicao_219_394, #detalhe_posicao_395_400, #monta_detalhe

Methods included from Helper::Header

#header_posicao_001_a_001, #header_posicao_003_a_009, #header_posicao_010_a_011, #header_posicao_012_a_026, #header_posicao_027_a_046, #header_posicao_047_a_076, #header_posicao_077_a_094, #header_posicao_095_a_100, #header_posicao_101_a_394, #header_posicao_395_a_400, #monta_header

Methods inherited from Base

#data_geracao, #hora_geracao, #pagamento_valid_cod_desconto_length, #pagamento_valid_distribuicao_boleto_length, #pagamento_valid_emissao_boleto_length, #pagamento_valid_tipo_impressao_required, #persisted?

Methods included from HaveConta

#conta, #conta=

Methods inherited from ActiveModelBase

#assign_attributes, #default_values, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Method Details

#complemento_registroObject

Complemento do registro POSIÇÂO TAM. Descrição


101 a 116 016 Zeros 117 a 391 274 Brancos 392 a 394 003 Zeros

Tamanho: 294



31
32
33
34
35
36
37
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 31

def complemento_registro
  complemento = ''
  complemento << ''.adjust_size_to(16, '0', :right)
  complemento << ''.adjust_size_to(275)
  complemento << ''.adjust_size_to(3, '0', :right)
  complemento
end

#complemento_remessaObject

Ultimo digito da conta corrente + digito da conta corrente



192
193
194
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 192

def complemento_remessa
  "#{conta.conta_corrente[-1]}#{conta.conta_corrente_dv}"
end

#conta_classObject



6
7
8
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 6

def conta_class
  BrBoleto::Conta::Santander
end

#detalhe_multas_e_juros_do_pagamento(pagamento, sequencial) ⇒ Object

Informações referente aos juros e multas do pagamento Posição: 161 a 218 POSIÇÂO TAM. Descrição 161 a 173 013 Valor a ser cobrado por Dia de Atraso 174 a 179 006 Data Limite P/Concessão de Desconto 180 a 192 013 Valor do Desconto 193 a 205 013 Valor do IOF 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado Tamanho: 58



136
137
138
139
140
141
142
143
144
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 136

def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
  detalhe = ''
  detalhe << pagamento.valor_juros_monetario_formatado(13)
  detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
  detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
  detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
  detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
  detalhe
end

#detalhe_posicao_063_076(pagamento, sequencial) ⇒ Object

Detalhe posição: 063 até 76 POSIÇÂO TAM. Descrição


063 a 070 008 Nosso Número 071 a 076 006 Data do segundo desconto (Zeros)

Tamanho: 14



56
57
58
59
60
61
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 56

def detalhe_posicao_063_076(pagamento, sequencial)
  detalhe = ''
  detalhe << "#{nosso_numero_formatado(pagamento)}".adjust_size_to(8, '0', :right)
  detalhe << ''.adjust_size_to(6, '0', :right)
  detalhe
end

#detalhe_posicao_077_108(pagamento, sequencial) ⇒ Object

Detalhe posição: 77 até 108 POSIÇÂO TAM. Descrição


077 a 077 001 Branco 078 a 078 001 Informação de multa 079 a 082 004 Percentual multa por atraso % 083 a 084 002 Unidade de valor moeda corrente (00) 085 a 097 013 Valor do título em outra unidade 098 a 101 004 Brancos 102 a 107 006 Data para cobrança de multa 108 a 108 001 Cod. Carteira

Tamanho: 32



82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 82

def detalhe_posicao_077_108(pagamento, sequencial)
  detalhe = ''
  detalhe << ' '
  detalhe << "#{conta.get_codigo_multa(pagamento.codigo_multa)}".adjust_size_to(1, '0', :right)
  detalhe << "#{pagamento.valor_multa_formatado(4)}".adjust_size_to(4, '0', :right)
  detalhe << '00'
  detalhe << ''.adjust_size_to(13, '0', :right)
  detalhe << ''.adjust_size_to(4)
  detalhe << "#{pagamento.data_multa_formatado}".adjust_size_to(6, '0', :right)
  detalhe << "#{conta.get_tipo_cobranca(conta.codigo_carteira, 400)}".adjust_size_to(1, '1') 
  detalhe
end

#header_posicao_002_a_002Object

Código da remessa Tipo: Numérico Tamanho: 001



19
20
21
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 19

def header_posicao_002_a_002
  '1'
end

#informacoes_da_conta(local) ⇒ Object

Informações da conta <- Específico para cada banco Posição: 018 até 037 (Detalhe) = Código de Transmissão Posição: 027 até 046 (Header) = Código de Transmissão Tamanho: 020



45
46
47
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 45

def informacoes_da_conta(local)
  "#{conta.codigo_transmissao}".adjust_size_to(20, '0', :right)
end

#informacoes_do_pagamento(pagamento, sequencial) ⇒ Object

Informações referente ao pagamento Posição 121 até 160 POSIÇÂO TAM. Descrição 121 a 126 006 Data do Vencimento do Título 127 a 139 013 Valor do Título 140 a 142 003 Banco Encarregado da Cobrança 143 a 147 005 Agência Depositária (preencher com zeros) 148 a 149 002 Espécie de Título 150 a 150 001 Identificação (Sempre ‘N’) 151 a 156 006 Data da emissão do Título 157 a 158 002 1a instrução 159 a 160 002 2a instrução Tamanho: 40



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 110

def informacoes_do_pagamento(pagamento, sequencial)
  dados = ''
  dados << pagamento.data_vencimento_formatado('%d%m%y')
  dados << pagamento.valor_documento_formatado(13)
  dados << "#{conta.codigo_banco}".adjust_size_to(3,'0', :right)
  dados << ''.adjust_size_to(5,'0', :right)
  dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
  dados << 'N'
  dados << pagamento.data_emissao_formatado('%d%m%y')

  # 1a / 2a Instrução, conforme documentação (pag. 20, Nota 11):
  dados << ''.adjust_size_to(2,'0', :right) # 1a Instrução
  dados << ''.adjust_size_to(2,'0', :right) # 2a Instrução
  dados
  
end

#informacoes_do_sacado(pagamento, sequencial) ⇒ Object

Tamanho: 176



169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 169

def informacoes_do_sacado(pagamento, sequencial)
  info = ''
  # Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
  info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
  info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
  info << "#{pagamento.pagador.nome}".adjust_size_to(40)
  info << "#{pagamento.pagador.endereco}".adjust_size_to(40)           
  info << "#{pagamento.pagador.bairro}".adjust_size_to(12)             
  info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right)    # CEP + Sufixo do CEP
  info << "#{pagamento.pagador.cidade}".adjust_size_to(15)             
  info << "#{pagamento.pagador.uf}".adjust_size_to(2)                  
  info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(30)      # Sacador/Avalista (Nome)
  info << ''.adjust_size_to(1)                                         # Complemento Registro (Brancos)
  info << 'I'                                                          # Identificador do Complemento (I)

  info << complemento_remessa
  info << ''.adjust_size_to(6)                                         # Brancos
  info << '00'                                                         # Quantidade de dias
  info << ''.adjust_size_to(1)                                         # Complemento Registro (Brancos)
  info                                                
end

#nosso_numero_formatado(pagamento) ⇒ Object



62
63
64
65
66
67
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 62

def nosso_numero_formatado(pagamento)
  # Por padrão o nosso número possui 13 dígitos, mas nesse caso para a remessa
  # serão utilizados apenas 8 dígitos.
  nosso_numero = "#{pagamento.nosso_numero}".adjust_size_to(13, '0', :right)
  nosso_numero[5..12] 
end

#trailer_arquivo_posicao_002_a_394(sequencial) ⇒ Object

Posição: 002 a 394 POSIÇÂO TAM. Descrição 002 a 007 006 Quantidade total de linhas no arquivo 008 a 020 013 Valor total dos títulos 021 a 394 374 Zeros

Tamanho: 393



205
206
207
208
209
210
211
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 205

def trailer_arquivo_posicao_002_a_394(sequencial)
  trailer = ''
  trailer << "#{sequencial}".adjust_size_to(6, '0', :right)
  trailer << "#{valor_documento(13)}".adjust_size_to(13, '0', :right)
  trailer << ''.adjust_size_to(374, '0')
  trailer
end

#valid_codigo_transmissao_requiredObject

VALIDAÇÕES ESPECÍFICAS DESTE OBJETO PARA A CONTA ############



11
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 11

def valid_codigo_transmissao_required; true end

#valor_documento(tamanho) ⇒ Object



212
213
214
215
# File 'lib/br_boleto/remessa/cnab400/santander.rb', line 212

def valor_documento(tamanho)
  valor_doc = pagamentos.map(&:valor_documento).sum 
  BrBoleto::Helper::Number.new(valor_doc).formata_valor_monetario(tamanho) 
end