Class: BrBoleto::Conta::Santander

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

Instance Attribute Summary collapse

Attributes inherited from Base

#agencia, #carteira, #codigo_carteira, #conta_corrente, #convenio, #convenio_dv, #cpf_cnpj, #endereco, #modalidade, #razao_social, #valid_agencia_length, #valid_carteira_inclusion, #valid_carteira_length, #valid_carteira_maximum, #valid_carteira_minimum, #valid_carteira_required, #valid_codigo_carteira_length, #valid_codigo_carteira_required, #valid_conta_corrente_length, #valid_conta_corrente_maximum, #valid_conta_corrente_minimum, #valid_conta_corrente_required, #valid_convenio_inclusion, #valid_convenio_length, #valid_convenio_maximum, #valid_convenio_minimum, #valid_convenio_required, #valid_endereco_required, #valid_modalidade_inclusion, #valid_modalidade_length, #valid_modalidade_maximum, #valid_modalidade_minimum, #valid_modalidade_required

Instance Method Summary collapse

Methods inherited from Base

#codigo_banco_formatado, #cpf_cnpj_formatado, #cpf_cnpj_formatado_com_label, #tipo_cobranca, #tipo_cpf_cnpj

Methods included from Helper::DefaultCodes

#codigos_movimento_retorno_para_ocorrencia_A_240, #codigos_movimento_retorno_para_ocorrencia_A_400, #codigos_movimento_retorno_para_ocorrencia_B_240, #codigos_movimento_retorno_para_ocorrencia_B_400, #codigos_movimento_retorno_para_ocorrencia_C_240, #codigos_movimento_retorno_para_ocorrencia_C_400, #codigos_movimento_retorno_para_ocorrencia_D_240, #codigos_movimento_retorno_para_ocorrencia_D_400, #default_codigo_juros, #equivalent_codigo_desconto, #equivalent_codigo_juros, #equivalent_codigo_moeda_400, #equivalent_codigo_motivo_ocorrencia_A_240, #equivalent_codigo_motivo_ocorrencia_B_240, #equivalent_codigo_motivo_ocorrencia_B_400, #equivalent_codigo_motivo_ocorrencia_C_240, #equivalent_codigo_motivo_ocorrencia_C_400, #equivalent_codigo_motivo_ocorrencia_D_240, #equivalent_codigo_motivo_ocorrencia_D_400, #equivalent_codigo_movimento_retorno_240, #equivalent_codigo_ocorrencia_pagador_240, #equivalent_codigo_ocorrencia_pagador_400, #equivalent_codigo_protesto_400, #equivalent_distribuicao_boleto, #equivalent_identificacao_emissao_240, #equivalent_identificacao_emissao_400, #equivalent_tipo_impressao_240, #equivalent_tipo_impressao_400, #get_codigo_desconto, #get_codigo_juros, #get_codigo_moeda, #get_codigo_motivo_ocorrencia, #get_codigo_movimento_remessa, #get_codigo_movimento_retorno, #get_codigo_multa, #get_codigo_ocorrencia_pagador, #get_codigo_protesto, #get_distribuicao_boleto, #get_especie_titulo, #get_identificacao_emissao, #get_tipo_cobranca, #get_tipo_impressao

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Attribute Details

#codigo_transmissaoObject

Código de Transmissão Consultar seu gerente para pegar esse código. Geralmente está no e-mail enviado pelo banco.



16
17
18
# File 'lib/br_boleto/conta/santander.rb', line 16

def codigo_transmissao
  @codigo_transmissao
end

#valid_codigo_transmissao_requiredObject

Código de Transmissão



20
21
22
# File 'lib/br_boleto/conta/santander.rb', line 20

def valid_codigo_transmissao_required
  @valid_codigo_transmissao_required
end

Instance Method Details

#agencia_codigo_cedenteString

Campo Agência / Código do Cedente Exemplo: 9999 / 9999999

Returns:

  • (String)

    Agência com 4 caracteres / Convênio com 7 caracteres



79
80
81
# File 'lib/br_boleto/conta/santander.rb', line 79

def agencia_codigo_cedente
  "#{agencia} / #{convenio}"
end

#agencia_dvObject



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

def agencia_dv
  # utilizando a agencia com 4 digitos
  # para calcular o digito
  @agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(agencia).to_s
end

#carteira_formatadaObject

Formata a carteira dependendo se ela é registrada ou não. Para cobrança COM registro usar: COBRANCA SIMPLES ECR Para Cobrança SEM registro usar: COBRANCA SIMPLES CSR



86
87
88
89
90
91
92
# File 'lib/br_boleto/conta/santander.rb', line 86

def carteira_formatada
  if @carteira.to_s.in?(carteiras_com_registro)
    "COBRANÇA SIMPLES ECR"
  else
    'COBRANÇA SIMPLES CSR'
  end
end

#carteiras_com_registroObject

Retorna as carteiras com registro do banco Santander. Você pode sobrescrever esse método na subclasse caso exista mais carteiras com registro no Santander.



97
98
99
# File 'lib/br_boleto/conta/santander.rb', line 97

def carteiras_com_registro
  %w(101 121)
end

#codigo_bancoObject



41
42
43
# File 'lib/br_boleto/conta/santander.rb', line 41

def codigo_banco
  '033'
end

#codigo_banco_dvObject

Dígito do código do banco descrito na documentação



46
47
48
# File 'lib/br_boleto/conta/santander.rb', line 46

def codigo_banco_dv
  '7'
end

#conta_corrente_dvObject



68
69
70
# File 'lib/br_boleto/conta/santander.rb', line 68

def conta_corrente_dv
  @conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(conta_corrente).to_s
end

#default_codigo_multaObject



176
177
178
# File 'lib/br_boleto/conta/santander.rb', line 176

def default_codigo_multa
  '0'
end

#default_valuesObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/br_boleto/conta/santander.rb', line 26

def default_values
  super.merge({
    carteira:                      '101',        
    valid_carteira_required:       true, # <- Validação dinâmica que a modalidade é obrigatória
    valid_carteira_length:         3,    # <- Validação dinâmica que a modalidade deve ter 3 digitos
    valid_carteira_inclusion:      %w[101 102 121], # <- Validação dinâmica de valores aceitos para a modalidade
    codigo_carteira:               '1',   # Cobrança Simples
    valid_codigo_carteira_length:   1,    # <- Validação dinâmica que a modalidade deve ter 1 digito
    valid_conta_corrente_required: true,  # <- Validação dinâmica que a conta_corrente é obrigatória
    valid_conta_corrente_maximum:  9,     # <- Validação que a conta_corrente deve ter no máximo 9 digitos
    valid_convenio_required:       true,  # <- Validação que a convenio deve ter obrigatório
    valid_convenio_maximum:        7,     # <- Validação que a convenio deve ter no máximo 7 digitos
  })
end

#equivalent_codigo_moeda_240Object

Código da Moeda CNAB240



212
213
214
# File 'lib/br_boleto/conta/santander.rb', line 212

def equivalent_codigo_moeda_240
  super.merge({'09' => '00' }) # 00 = Real
end

#equivalent_codigo_motivo_ocorrencia_A_400(codigo_movimento_gem) ⇒ Object

Código do Motivo da ocorrência :



236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
# File 'lib/br_boleto/conta/santander.rb', line 236

def equivalent_codigo_motivo_ocorrencia_A_400 codigo_movimento_gem
  super.merge(
    #  Padrão    Código para  
    {# do Banco    a GEM
      '001'  =>  'A08',  # NOSSO NUMERO NAO NUMERICO
      '002'  =>  'A33',  # VALOR DO ABATIMENTO NAO NUMERICO
      '003'  =>  'A16',  # DATA VENCIMENTO NAO NUMERICA
      '005'  =>  'A10',  # CODIGO DA CARTEIRA NAO NUMERICO
      '006'  =>  'A10',  # CODIGO DA CARTEIRA INVALIDO
      '007'  =>  'A21',  # ESPECIE DO DOCUMENTO INVALIDA
      '010'  =>  'A278', # CODIGO PRIMEIRA INSTRUCAO NAO NUMERICA
      '011'  =>  'A280', # CODIGO SEGUNDA INSTRUCAO NAO NUMERICA
      '013'  =>  'A20',  # VALOR DO TITULO NAO NUMERICO
      '014'  =>  'A27',  # VALOR DE MORA NAO NUMERICO
      '015'  =>  'A24',  # DATA EMISSAO NAO NUMERICA
      '016'  =>  'A16',  # DATA DE VENCIMENTO INVALIDA
      '017'  =>  'A61',  # CODIGO DA AGENCIA COBRADORA NAO NUMERICA
      '019'  =>  'A48',  # NUMERO DO CEP NAO NUMERICO
      '020'  =>  'A46',  # TIPO INSCRICAO NAO NUMERICO
      '021'  =>  'A46',  # NUMERO DO CGC OU CPF NAO NUMERICO
      '022'  =>  'A244', # CODIGO OCORRENCIA INVALIDO
      '023'  =>  'A08',  # NOSSO NUMERO INV.P/MODALIDADE
      '025'  =>  'A28',  # VALOR DESCONTO NAO NUMERICO
      '029'  =>  'A27',  # VALOR DE MORA INVALIDO
      '030'  =>  'A256', # DT VENC MENOR DE 15 DIAS DA DT PROCES
      '039'  =>  'A254', # PERFIL NAO ACEITA TITULO EM BCO CORRESP
      '040'  =>  'A255', # COBR RAPIDA NAO ACEITA-SE BCO CORRESP
      '042'  =>  'A07',  # CONTA COBRANCA INVALIDA
      '049'  =>  'A86',  # SEU NUMERO NAO CONFERE COM O CARNE
      '052'  =>  'A227', # OCOR. NAO ACATADA,TITULO LIOUIDADO
      '053'  =>  'A227', # OCOR. NAO ACATADA, TITULO BAIXADO
      '057'  =>  'A322', # CEP DO SACADO INCORRETO
      '058'  =>  'A06',  # CGC/CPF INCORRETO
      '063'  =>  'A49',  # CEP NAO ENCONTRADO NA TABELA DE PRACAS
      '073'  =>  'A34',  # ABATIMENTO MAIOR/IGUAL AO VALOR TITULO
      '074'  =>  'A29',  # PRIM. DESCONTO MAIOR/IGUAL VALOR TITULO
      '075'  =>  'A29',  # SEG. DESCONTO MAIOR/IGUAL VALOR TITULO
      '076'  =>  'A29',  # TERC. DESCONTO MAIOR/IGUAL VALOR TITULO
      '086'  =>  'A80',  # DATA SEGUNDO DESCONTO INVALIDA
      '087'  =>  'A80',  # DATA TERCEIRO DESCONTO INVALIDA
      '091'  =>  'A31',  # JA EXISTE CONCESSAO DE DESCONTO
      '092'  =>  'A09',  # NOSSO NUMERO JA CADASTRADO
      '093'  =>  'A20',  # VALOR DO TITULO NAO INFORMADO
      '098'  =>  'A24',  # DATA EMISSAO INVALIDA
      '100'  =>  'A17',  # DATA EMISSAO MAIOR OUE A DATA VENCIMENTO
      '104'  =>  'A52',  # UNIDADE DA FEDERACAO NAO INFORMADA
      '106'  =>  'A06',  # CGCICPF NAO INFORMADO
      '107'  =>  'A52',  # UNIDADE DA FEDERACAO INCORRETA 00108 DIGITO CGC/CPF INCORRETO
      '110'  =>  'A80',  # DATA PRIMEIRO DESCONTO INVALIDA
      '111'  =>  'A80',  # DATA DESCONTO NAO NUMERICA
      '112'  =>  'A28',  # VALOR DESCONTO NAO INFORMADO
      '113'  =>  'A28',  # VALOR DESCONTO INVALIDO
      '114'  =>  'A33',  # VALOR ABATIMENTO NAO INFORMADO
      '115'  =>  'A34',  # VALOR ABATIMENTO MAIOR VALOR TITULO
      '116'  =>  'A58',  # DATA MULTA NAO NUMERICA
      '117'  =>  'A29',  # VALOR DESCONTO MAIOR VALOR TITULO
      '118'  =>  'A58',  # DATA MULTA NAO INFORMADA
      '120'  =>  'A59',  # PERCENTUAL MULTA NAO NUMERICO
      '121'  =>  'A59',  # PERCENTUAL MULTA NAO INFORMADO
      '122'  =>  'A32',  # VALOR IOF MAIOR OUE VALOR TITULO
      '123'  =>  'A322', # CEP DO SACADO NAO NUMERICO
      '124'  =>  'A48',  # CEP SACADO NAO ENCONTRADO
      '129'  =>  'A21',  # ESPEC DE DOCUMENTO NAO NUMERICA
      '130'  =>  'A11',  # FORMA DE CADASTRAMENTO NAO NUMERICA
      '131'  =>  'A11',  # FORMA DE CADASTRAMENTO INVALIDA
      '132'  =>  'A11',  # FORMA CADAST. 2 INVALIDA PARA CARTEIRA 3
      '133'  =>  'A11',  # FORMA CADAST. 2 INVALIDA PARA CARTEIRA 4
      '134'  =>  'A05',  # CODIGO DO MOV. REMESSA NAO NUMERICO
      '135'  =>  'A05',  # CODIGO DO MOV. REMESSA INVALIDO
      '139'  =>  'A02',  # TIPO DE REGISTRO INVALIDO
      '140'  =>  'A03',  # COD. SEOUEC.DO REG. DETALHE INVALIDO
      '142'  =>  'A07',  # NUM.AG.CEDENTE/DIG.NAO NUMERICO
      '143'  =>  'A07',  # NUM. CONTA CEDENTE/DIG. NAO NUMERICO
      '144'  =>  'A12',  # TIPO DE DOCUMENTO NAO NUMERICO
      '145'  =>  'A12',  # TIPO DE DOCUMENTO INVALIDO
      '149'  =>  'A26',  # CODIGO DE MORA INVALIDO
      '150'  =>  'A26',  # CODIGO DE MORA NAO NUMERICO
      '151'  =>  'A27',  # VL.MORA IGUAL A ZEROS P. COD.MORA 1
      '152'  =>  'A27',  # VL. TAXA MORA IGUAL A ZEROS P.COD MORA 2
      '153'  =>  'A27',  # VL. MORA DIFERENTE DE ZEROS P.COD.MORA 3
      '154'  =>  'A27',  # VL. MORA NAO NUMERICO P. COD MORA 2
      '155'  =>  'A27',  # VL. MORA INVALIDO P. COD.MORA 4
      '160'  =>  'A319', # BAIRRO DO SACADO NAO INFORMADO
      '161'  =>  'A53',  # TIPO INSC.CPF/CGC SACADOR/AVAL.NAO NUM.
      '170'  =>  'A11',  # FORMA DE CADASTRAMENTO 2 INV.P.CART.5
      '199'  =>  'A53',  # TIPO INSC.CGC/CPF SACADOR.AVAL.INVAL.
      '200'  =>  'A53',  # NUM.INSC.(CGC)SACADOR/AVAL.NAO NUMERICO
      '212'  =>  'A79',  # DATA DO JUROS DE MORA NAO NUMERICO (D3P)
      '242'  =>  'A57',  # COD. DA MULTA NAO NUMERICO (D3R)
      '243'  =>  'A57',  # COD. MULTA INVALIDO (D3R)
      '244'  =>  'A59',  # VALOR DA MULTA NAO NUMERICO (D3R)
      '245'  =>  'A58',  # DATA DA MULTA NAO NUMERICO (D3R)
      '258'  =>  'A27',  # VL.MORA NAO NUMERICO P.COD=4(D3P)
      '263'  =>  'A278', # INSTRUCAO PARA TITULO NAO REGISTRADO
      '264'  =>  'A23',  # CODIGO DE ACEITE (A/N) INVALIDO.
    })
end

#equivalent_codigo_movimento_remessa_240Object

Código Movimento da Remessa CNAB240



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/br_boleto/conta/santander.rb', line 131

def equivalent_codigo_movimento_remessa_240
  #  Padrão    Código para    Descrição 
  {# da GEM     o Banco
    '01'   =>  '01' ,       # Entrada de título
    '02'   =>  '02' ,       # Pedido de baixa
    '04'   =>  '04' ,       # Concessão de abatimento
    '05'   =>  '05' ,       # Cancelamento de abatimento
    '06'   =>  '06' ,       # Alteração de vencimento
    '07'   =>  '10' ,       # Concessão de Desconto
    '08'   =>  '11' ,       # Cancelamento de desconto
    '09'   =>  '09' ,       # Pedido de Protesto
    '10'   =>  '18' ,       # Pedido de Sustação de Protesto
    '21'   =>  '07' ,       # Alteração da identificação do título na empresa
    '22'   =>  '08' ,       # Alteração seu número
    '31'   =>  '31' ,       # Alteração de outros dados
    '41'   =>  '98' ,       # Não Protestar
  }
end

#equivalent_codigo_movimento_remessa_400Object

Código Movimento da Remessa CNAB400



151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/br_boleto/conta/santander.rb', line 151

def equivalent_codigo_movimento_remessa_400
  #  Padrão    Código para    Descrição 
  {# da GEM     o Banco
    '01'   =>  '01' ,       # Entrada de título
    '02'   =>  '02' ,       # Pedido de baixa
    '04'   =>  '04' ,       # Concessão de abatimento
    '05'   =>  '05' ,       # Cancelamento de abatimento
    '06'   =>  '06' ,       # Alteração de vencimento
    '21'   =>  '07' ,       # Alteração da identificação do título na empresa
    '22'   =>  '08' ,       # Alteração seu número
    '09'   =>  '09' ,       # Pedido de Protesto
    '10'   =>  '18' ,       # Sustar Protesto e Baixar Título
    '11'   =>  '18' ,       # Sustar Protesto e Manter em Carteira
  }
end

#equivalent_codigo_movimento_retorno_400Object

Identificações de Ocorrência / Código de ocorrência:



217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/br_boleto/conta/santander.rb', line 217

def equivalent_codigo_movimento_retorno_400
  super.merge(
    #  Padrão    Código para  
    {# do Banco    a GEM
      '01'   =>  '104',  # título não existe
      '07'   =>  '102',  # liquidação por conta
      '08'   =>  '103',  # liquidação por saldo
      '15'   =>  '23',   # Enviado para Cartório
      '16'   =>  '25' ,  # tít. já baixado/liquidado
      '17'   =>  '101',  # liquidado em cartório
      '21'   =>  '23' ,  # Entrada em Cartório
      '22'   =>  '24' ,  # Retirado de cartório
      '24'   =>  '235',  # Custas de Cartório
      '25'   =>  '19' ,  # Protestar Título
      '26'   =>  '20' ,  # Sustar Protestonhado a Protesto: Identifica o recebimento da instrução de protesto
    })
end

#equivalent_codigo_multaObject

Código de Multa



168
169
170
171
172
173
174
175
# File 'lib/br_boleto/conta/santander.rb', line 168

def equivalent_codigo_multa
  #  Padrão    Código para    Descrição 
  {# da GEM     o Banco
    '1'    =>    '4',        # Com Multa
    '2'    =>    '4',        # Com Multa
    '3'    =>    '0',        # Sem Multa (Isento)
  }
end

#equivalent_codigo_protesto_240Object

Código para Protesto



202
203
204
205
206
207
208
209
# File 'lib/br_boleto/conta/santander.rb', line 202

def equivalent_codigo_protesto_240
  super.merge({
  #  Padrão    Código para
  # da GEM     o Banco
    '3'    =>    '0',  # Não Protestar
    '99'   =>    '3',  # Utilizar perfil cedente
  })
end

#equivalent_especie_titulo_240Object

Espécie do Título :



104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/br_boleto/conta/santander.rb', line 104

def equivalent_especie_titulo_240
  #  Padrão    Código para    Descrição 
  {# da GEM     o Banco
    '02'   =>  '02' ,       # DM  - DUPLICATA MERCANTIL
    '04'   =>  '04' ,       # DS  - DUPLICATA DE SERVICO
    '07'   =>  '07' ,       # LC  - LETRA DE CÂMBIO
    '12'   =>  '12' ,       # NP  - NOTA PROMISSORIA
    '13'   =>  '13' ,       # NR  - NOTA PROMISSORIA RURAL
    '17'   =>  '17' ,       # RC  - RECIBO
    '20'   =>  '20' ,       # AP  - APOLICE DE SEGURO
    '01'   =>  '97' ,       # CH  - CHEQUE
    '98'   =>  '98' ,       # NPD - NOTA PROMISSORIA DIRETA
  }
end

#equivalent_especie_titulo_400Object



118
119
120
121
122
123
124
125
126
127
128
# File 'lib/br_boleto/conta/santander.rb', line 118

def equivalent_especie_titulo_400
  #  Padrão    Código para    Descrição 
  {# da GEM     o Banco
    '02'   =>  '01' ,       # DM  - DUPLICATA MERCANTIL
    '04'   =>  '06' ,       # DS  - DUPLICATA DE SERVICO
    '07'   =>  '07' ,       # LC  - LETRA DE CÂMBIO
    '12'   =>  '02' ,       # NP  - NOTA PROMISSORIA
    '17'   =>  '05' ,       # RC  - RECIBO
    '20'   =>  '03' ,       # AP  - APOLICE DE SEGURO
  }
end

#equivalent_tipo_cobranca_240Object

Código da Carteira



181
182
183
184
185
186
187
188
189
190
191
# File 'lib/br_boleto/conta/santander.rb', line 181

def equivalent_tipo_cobranca_240
  super.merge({
  #  Padrão    Código para 
  # da GEM     o Banco
    '1'    =>   '5',   # Cobrança Simples (Rápida com Registro)
    '3'    =>   '3',   # Cobrança Caucionada (Eletrônica com Registro e Convencional com Registro)
    '4'    =>   '4',   # Cobrança Descontada (Eletrônica com Registro)
    '6'    =>   '6',   # Cobrança Caucionada (Rápida com Registro)
    '7'    =>   '1',   # Cobrança Simples (Sem Registro / Eletrônica com Registro)
  }) 
end

#equivalent_tipo_cobranca_400Object



192
193
194
195
196
197
198
199
# File 'lib/br_boleto/conta/santander.rb', line 192

def equivalent_tipo_cobranca_400
  super.merge({
  #  Padrão    Código para
  # da GEM     o Banco
    '7'    =>    '4',  # Cobrança Sem Registro
    '4'    =>    '7',  # Cobrança Descontada
  })
end

#nome_bancoObject



50
51
52
# File 'lib/br_boleto/conta/santander.rb', line 50

def nome_banco
  @nome_banco ||= 'SANTANDER'
end

#versao_layout_arquivo_cnab_240Object



54
55
56
# File 'lib/br_boleto/conta/santander.rb', line 54

def versao_layout_arquivo_cnab_240
  '040'
end

#versao_layout_lote_cnab_240Object



58
59
60
# File 'lib/br_boleto/conta/santander.rb', line 58

def versao_layout_lote_cnab_240
  '030'
end