Class: BrBoleto::Conta::Sicredi

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

Instance Attribute Summary collapse

Attributes inherited from Base

#agencia, #carteira, #codigo_carteira, #conta_corrente, #conta_corrente_dv, #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

#carteira_formatada, #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_400, #default_codigo_juros, #default_codigo_multa, #equivalent_codigo_juros, #equivalent_codigo_moeda_240, #equivalent_codigo_motivo_ocorrencia_A_240, #equivalent_codigo_motivo_ocorrencia_B_240, #equivalent_codigo_motivo_ocorrencia_C_240, #equivalent_codigo_motivo_ocorrencia_C_400, #equivalent_codigo_motivo_ocorrencia_D_400, #equivalent_codigo_movimento_remessa_240, #equivalent_codigo_movimento_remessa_400, #equivalent_codigo_multa, #equivalent_codigo_ocorrencia_pagador_240, #equivalent_codigo_ocorrencia_pagador_400, #equivalent_codigo_protesto_240, #equivalent_codigo_protesto_400, #equivalent_distribuicao_boleto, #equivalent_identificacao_emissao_240, #equivalent_tipo_cobranca_240, #equivalent_tipo_impressao_240, #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

#byte_idObject

Byte de identificação do cedente do bloqueto utilizado para compor o nosso número. Valores aceitos de 2 a 9, somente será “1” se forem boletos pré-impressos.



18
19
20
# File 'lib/br_boleto/conta/sicredi.rb', line 18

def byte_id
  @byte_id
end

#postoObject

Código do posto da cooperativa de crédito



14
15
16
# File 'lib/br_boleto/conta/sicredi.rb', line 14

def posto
  @posto
end

#valid_byte_id_inclusionObject

Returns the value of attribute valid_byte_id_inclusion.



23
24
25
# File 'lib/br_boleto/conta/sicredi.rb', line 23

def valid_byte_id_inclusion
  @valid_byte_id_inclusion
end

#valid_byte_id_lengthObject

VALIDAÇÕES DINÂMICAS ###############################



21
22
23
# File 'lib/br_boleto/conta/sicredi.rb', line 21

def valid_byte_id_length
  @valid_byte_id_length
end

#valid_byte_id_requiredObject

Returns the value of attribute valid_byte_id_required.



22
23
24
# File 'lib/br_boleto/conta/sicredi.rb', line 22

def valid_byte_id_required
  @valid_byte_id_required
end

#valid_posto_maximumObject

Returns the value of attribute valid_posto_maximum.



24
25
26
# File 'lib/br_boleto/conta/sicredi.rb', line 24

def valid_posto_maximum
  @valid_posto_maximum
end

#valid_posto_requiredObject

Returns the value of attribute valid_posto_required.



25
26
27
# File 'lib/br_boleto/conta/sicredi.rb', line 25

def valid_posto_required
  @valid_posto_required
end

Instance Method Details

#agencia_codigo_cedenteString

Campo Agência / Código do Cedente Exemplo: AAAA.PP.CCCCC



96
97
98
# File 'lib/br_boleto/conta/sicredi.rb', line 96

def agencia_codigo_cedente
  "#{agencia}.#{posto}.#{codigo_cedente}"
end

#agencia_dvObject



89
90
91
# File 'lib/br_boleto/conta/sicredi.rb', line 89

def agencia_dv
  @agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9.new(agencia).to_s
end

#codigo_bancoObject



60
61
62
# File 'lib/br_boleto/conta/sicredi.rb', line 60

def codigo_banco
  '748'
end

#codigo_banco_dvObject

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



65
66
67
# File 'lib/br_boleto/conta/sicredi.rb', line 65

def codigo_banco_dv
  'X'
end

#codigos_movimento_retorno_para_ocorrencia_D_240Object

Código do Motivo da ocorrência :



227
228
229
# File 'lib/br_boleto/conta/sicredi.rb', line 227

def codigos_movimento_retorno_para_ocorrencia_D_240
  %w[27]
end

#default_valuesObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/br_boleto/conta/sicredi.rb', line 38

def default_values
  super.merge({
    carteira:                      '1',
    valid_carteira_required:       true,    # <- Validação dinâmica que a modalidade é obrigatória
    valid_carteira_length:         1,       # <- Validação dinâmica que a modalidade deve ter 1 digito
    valid_carteira_inclusion:      %w[1 3], # <- Validação dinâmica de valores aceitos para a modalidade
    valid_conta_corrente_required: true,    # <- Validação dinâmica que a conta_corrente é obrigatória
    valid_conta_corrente_maximum:  5,       # <- Validação que a conta_corrente deve ter no máximo 5 digitos
    valid_convenio_required:       true,    # <- Validação que a convenio deve ter obrigatório
    valid_convenio_maximum:        5,       # <- Validação que a convenio deve ter no máximo 5 digitos
    codigo_carteira:               '1',     # Cobrança Simples
    valid_codigo_carteira_length:   1,      # <- Validação dinâmica que a modalidade deve ter 1 digito
    posto:                         '0',
    valid_posto_maximum:           2,       # <- Validação que a posto deve ter no máximo 2 digitos
    valid_posto_required:          true,    # <- Validação que a posto deve ter obrigatório
    byte_id:                      '2',
    valid_byte_id_length:         1,        # <- Validação dinâmica que o byte identificador deve ter 1 digito
    valid_byte_id_required:       true,     # <- Validação que a byte_id deve ter obrigatório
    valid_byte_id_inclusion:      %w[2 3 4 5 6 7 8 9], # <- Validação dinâmica de valores aceitos para o byte identificador
  })
end

#equivalent_codigo_descontoObject

Código adotado pelo SICREDI para identificação do tipo de desconto que deverá ser concedido.



204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/br_boleto/conta/sicredi.rb', line 204

def equivalent_codigo_desconto
  {
    '0' => '1', # Valor Fixo Até a Data Informada
    '1' => '1', # Valor Fixo Até a Data Informada
    '2' => '2', # Percentual Até a Data Informada
    '3' => '3', # Valor por Antecipação Dia Corrido
    '4' => '3', # Valor por Antecipação Dia Úti
    '5' => '2', # Percentual Sobre o Valor Nominal Dia Corrido
    '6' => '2', # Percentual Sobre o Valor Nominal Dia Útil
    '7' => '7', # Cancelamento de Desconto
  }
end

#equivalent_codigo_moeda_400Object

Código da Moeda :



189
190
191
# File 'lib/br_boleto/conta/sicredi.rb', line 189

def equivalent_codigo_moeda_400
  super.merge({ '09' => 'A' }) # Real
end

#equivalent_codigo_motivo_ocorrencia_A_400(codigo_movimento_gem) ⇒ Object



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
# File 'lib/br_boleto/conta/sicredi.rb', line 237

def equivalent_codigo_motivo_ocorrencia_A_400 codigo_movimento_gem
  super.merge(
    #  Padrão    Código para
    {# do Banco    a GEM
      '01'   =>   'A01',     # Código do banco inválido
      '02'   =>   'A02',     # Código do registro detalhe inválido
      '03'   =>   'A05',     # Código da ocorrência inválido
      '04'   =>   'A04',     # Código de ocorrência não permitida para a carteira
      '05'   =>   'A05',     # Código de ocorrência não numérico
      '07'   =>   'A07',     # Cooperativa/agência/conta/dígito inválidos
      '08'   =>   'A08',     # Nosso número inválido
      '09'   =>   'A09',     # Nosso número duplicado
      '10'   =>   'A10',     # Carteira inválida
      '15'   =>   'A07',     # Cooperativa/carteira/agência/conta/nosso número inválidos
      '16'   =>   'A16',     # Data de vencimento inválida
      '17'   =>   'A17',     # Data de vencimento anterior à data de emissão
      '18'   =>   'A18',     # Vencimento fora do prazo de operação
      '20'   =>   'A20',     # Valor do título inválido
      '21'   =>   'A21',     # Espécie do título inválida
      '22'   =>   'A22',     # Espécie não permitida para a carteira
      '24'   =>   'A24',     # Data de emissão inválida
      '29'   =>   'A29',     # Valor do desconto maior/igual ao valor do título
      '31'   =>   'A31',     # Concessão de desconto - existe desconto anterior
      '33'   =>   'A33',     # Valor do abatimento inválido
      '34'   =>   'A34',     # Valor do abatimento maior/igual ao valor do título
      '36'   =>   'A36',     # Concessão de abatimento - existe abatimento anterior
      '38'   =>   'A38',     # Prazo para protesto inválido
      '39'   =>   'A39',     # Pedido para protesto não permitido para o título
      '40'   =>   'A40',     # Título com ordem de protesto emitida
      '41'   =>   'A41',     # Pedido cancelamento/sustação sem instrução de protesto
      '44'   =>   'A209',    # Cooperativa de crédito/agência beneficiária não prevista
      '45'   =>   'A45',     # Nome do pagador inválido
      '46'   =>   'A46',     # Tipo/número de inscrição do pagador inválidos
      '47'   =>   'A47',     # Endereço do pagador não informado
      '48'   =>   'A48',     # CEP irregular
      '49'   =>   'A46',     # Número de Inscrição do pagador/avalista inválido
      '50'   =>   'A54',     # Pagador/avalista não informado
      '60'   =>   'A60',     # Movimento para título não cadastrado
      '63'   =>   'A63',     # Entrada para título já cadastrado
      'A6'   =>   'A244',    # Data da instrução/ocorrência inválida
      'B4'   =>   'A44',     # Tipo de moeda inválido
      'B5'   =>   'A28',     # Tipo de desconto/juros inválido
      'B7'   =>   'A86',     # Seu número inválido
      'B8'   =>   'A59',     # Percentual de multa inválido
      'B9'   =>   'A27',     # Valor ou percentual de juros inválido
      'C2'   =>   'A23',     # Aceite do título inválido
      'C6'   =>   'A325',    # Título já liquidado
      'C7'   =>   'A325',    # Título já baixado
      'H4'   =>   'D01',     # Alteração de carteira
  })
end

#equivalent_codigo_motivo_ocorrencia_B_400(codigo_movimento_gem) ⇒ Object



289
290
291
292
293
294
295
296
297
298
299
300
301
# File 'lib/br_boleto/conta/sicredi.rb', line 289

def equivalent_codigo_motivo_ocorrencia_B_400 codigo_movimento_gem
  super.merge(
    #  Padrão    Código para
    {# do Banco    a GEM
      '03'   =>   'B03',     # Tarifa de sustação
      '04'   =>   'B04',     # Tarifa de protesto
      '08'   =>   'B08',     # Tarifa de custas de protesto
      'A9'   =>   'B02',     # Tarifa de manutenção de título vencido
      'B1'   =>   'B122',    # Tarifa de baixa da carteira
      'B3'   =>   'B123',    # Tarifa de registro de entrada do título
      'F5'   =>   'B124',    # Tarifa de entrada na rede Sicredi
  })
end

#equivalent_codigo_motivo_ocorrencia_D_240(codigo_movimento_gem) ⇒ Object



230
231
232
233
234
235
# File 'lib/br_boleto/conta/sicredi.rb', line 230

def equivalent_codigo_motivo_ocorrencia_D_240 codigo_movimento_gem
  #  Código     Padrão para
  {# do Banco     a Gem
    '01'    =>   'D01',   # Alteração de carteira
  }
end

#equivalent_codigo_movimento_retorno_240Object

Código de Movimento Retorno



218
219
220
221
222
223
224
# File 'lib/br_boleto/conta/sicredi.rb', line 218

def equivalent_codigo_movimento_retorno_240
  super.merge(
    #  Padrão    Código para
    {# do Banco    a GEM
      '36'   =>   '100',      # Baixa rejeitada
    })
end

#equivalent_codigo_movimento_retorno_400Object

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



304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'lib/br_boleto/conta/sicredi.rb', line 304

def equivalent_codigo_movimento_retorno_400
  super.merge(
    #  Padrão    Código para
    {# do Banco    a GEM
      '15'   =>   '101', # Liquidação em cartório
      '24'   =>   '106', # Entrada rejeitada por CEP irregular
      '27'   =>   '100', # Baixa rejeitada
      '32'   =>   '26',  # Instrução rejeitada
      '33'   =>   '27',  # Confirmação de pedido de alteração de outros dados
      '34'   =>   '24',  # Retirado de cartório e manutenção em carteira
      '35'   =>   '105', # Aceite do pagador
    })
end

#equivalent_especie_titulo_240Object

Espécie do Título CNAB 240 ‘03’ = DMI duplicata mercantil por indicação ‘05’ = DSI duplicata de serviço por indicação ‘06’ = DR duplicata rural ‘07’ = LC letra de câmbio ‘12’ = NP nota promissória ‘13’ = NPR nota promissória rural ‘16’ = NS nota de seguro ‘17’ = RC recibo ‘19’ = ND nota de débito ‘32’ = Boleto Proposta ‘99’ = Outros



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/br_boleto/conta/sicredi.rb', line 115

def equivalent_especie_titulo_240
  super.merge(
    #  Padrão    Código para
    {# da GEM     o Banco
      '01'  => '99',  # CH   –  Cheque
      '02'  => '03',  # DM   –  Duplicata Mercantil
      '03'  => '03',  # DMI  –  Duplicata Mercantil p/ Indicação
      '04'  => '05',  # DS   –  Duplicata de Serviço
      '05'  => '05',  # DSI  –  Duplicata de Serviço p/ Indicação
      '06'  => '06',  # DR   –  Duplicata Rural
      '07'  => '07',  # LC   –  Letra de Câmbio
      '08'  => '99',  # NCC  –  Nota de Crédito Comercial
      '09'  => '99',  # NCE  –  Nota de Crédito a Exportação
      '10'  => '99',  # NCI  –  Nota de Crédito Industrial
      '11'  => '99',  # NCR  –  Nota de Crédito Rural
      '12'  => '12',  # NP   –  Nota Promissória
      '13'  => '13',  # NPR  –  Nota Promissória Rural
      '14'  => '99',  # TM   –  Triplicata Mercantil
      '15'  => '99',  # TS   –  Triplicata de Serviço
      '16'  => '16',  # NS   –  Nota de Seguro
      '17'  => '17',  # RC   –  Recibo
      '18'  => '99',  # FAT  –  Fatura
      '19'  => '19',  # ND   –  Nota de Débito
      '20'  => '99',  # AP   –  Apólice de Seguro
      '21'  => '99',  # ME   –  Mensalidade Escolar
      '22'  => '99',  # PC   –  Parcela de Consórcio
      '23'  => '99',  # NF   –  Nota Fiscal
      '24'  => '99',  # DD   –  Documento de Dívida
      '25'  => '99',  # Cédula de Produto Rural
      '26'  => '99',  # Warrant
      '27'  => '99',  # Dívida Ativa de Estado
      '28'  => '99',  # Dívida Ativa de Município
      '29'  => '99',  # Dívida Ativa da União
      '30'  => '99',  # Encargos condominiais
      '31'  => '99',  # CC  –  Cartão de Crédito
      '32'  => '32',  # BDP –  Boleto de Proposta
      '99'  => '99',  # Outros
    }
  )
end

#equivalent_especie_titulo_400Object

Espécie do Título CNAB 400



158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/br_boleto/conta/sicredi.rb', line 158

def equivalent_especie_titulo_400
  super.merge(
    #  Padrão    Código para
    {# da GEM     o Banco
      '01'    =>   'A',
      '02'    =>   'A',
      '03'    =>   'A',  # Duplicata Mercantil por Indicação (DMI)
      '06'    =>   'B',  # Duplicata Rural (DR)
      '12'    =>   'C',  # Nota Promissória (NP)
      '13'    =>   'D',  # Nota Promissória Rural (NR)
      '16'    =>   'E',  # Nota de Seguros (NS)
      '17'    =>   'G',  # Recibo (RC)
      '07'    =>   'H',  # Letra de Câmbio (LC)
      '19'    =>   'I',  # Nota de Débito (ND)
      '05'    =>   'J',  # Duplicata de Serviço por Indicação (DSI)
      '99'    =>   'K',  # Outros (OS)
      '32'    =>   'O'   # Boleto de Proposta (BDP)
    })
end

#equivalent_identificacao_emissao_400Object

Identificação da Emissão do Boleto de Pagamento



194
195
196
197
198
199
200
201
# File 'lib/br_boleto/conta/sicredi.rb', line 194

def equivalent_identificacao_emissao_400
  super.merge(
    #  Padrão    Código para
    {# da GEM     o Banco
      '1'    =>   'A',  # Impressão é feita pelo Sicredi
      '2'    =>   'B',  # Impressão é feita pelo Beneficiário
    })
end

#equivalent_tipo_cobranca_400Object

Código da Carteira



179
180
181
# File 'lib/br_boleto/conta/sicredi.rb', line 179

def equivalent_tipo_cobranca_400
  super.merge({ '1' => 'A' }) # Cobrança Simples
end

#equivalent_tipo_impressao_400Object

Identificação do Tipo de Impressão :



184
185
186
# File 'lib/br_boleto/conta/sicredi.rb', line 184

def equivalent_tipo_impressao_400
  super.merge({ '1' => 'A' }) # Frente do Bloqueto
end

#nome_bancoObject



69
70
71
# File 'lib/br_boleto/conta/sicredi.rb', line 69

def nome_banco
  @nome_banco ||= 'SICREDI'
end

#versao_layout_arquivo_cnab_240Object



73
74
75
# File 'lib/br_boleto/conta/sicredi.rb', line 73

def versao_layout_arquivo_cnab_240
  '081'
end

#versao_layout_lote_cnab_240Object



77
78
79
# File 'lib/br_boleto/conta/sicredi.rb', line 77

def versao_layout_lote_cnab_240
  '040'
end