Class: Brcobranca::Remessa::Cnab400::Unicred

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/remessa/cnab400/unicred.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#aceite, #agencia, #carteira, #conta_corrente, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa

Instance Method Summary collapse

Methods inherited from Base

#data_geracao, #gera_arquivo, #monta_trailer

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 = {}) ⇒ Unicred

Nova instancia do Unicred



29
30
31
32
33
34
35
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 29

def initialize(campos = {})
  campos = {
    aceite: 'N'
  }.merge!(campos)

  super(campos)
end

Instance Attribute Details

#codigo_beneficiarioObject

codigo da beneficiario (informado pelo Unicred no cadastramento)



8
9
10
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 8

def codigo_beneficiario
  @codigo_beneficiario
end

Instance Method Details

#agencia=(valor) ⇒ Object



37
38
39
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 37

def agencia=(valor)
  @agencia = valor.to_s.rjust(4, '0') if valor
end

#carteira=(valor) ⇒ Object



45
46
47
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 45

def carteira=(valor)
  @carteira = valor.to_s.rjust(2, '0') if valor
end

#cod_bancoObject



49
50
51
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 49

def cod_banco
  '136'
end

#complementoString

Complemento do header

Returns:

  • (String)


96
97
98
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 96

def complemento
  'codigo_beneficiario'.rjust(277, ' ')
end

#conta_corrente=(valor) ⇒ Object



41
42
43
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 41

def conta_corrente=(valor)
  @conta_corrente = valor.to_s.rjust(5, '0') if valor
end

#digito_agenciaObject



104
105
106
107
108
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 104

def digito_agencia
  # utilizando a agencia com 4 digitos
  # para calcular o digito
  agencia.modulo11(mapeamento: { 10 => 'X' }).to_s
end

#digito_contaObject



110
111
112
113
114
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 110

def digito_conta
  # utilizando a conta corrente com 5 digitos
  # para calcular o digito
  conta_corrente.modulo11(mapeamento: { 10 => '0' }).to_s
end

#formata_nosso_numero(nosso_numero) ⇒ String

Retorna o nosso numero

Returns:

  • (String)


80
81
82
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 80

def formata_nosso_numero(nosso_numero)
  nosso_numero_boleto(nosso_numero).to_s
end

#identificador_complementoObject



57
58
59
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 57

def identificador_complemento
  ' '
end

#info_contaObject



88
89
90
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 88

def info_conta
  codigo_beneficiario
end

#mapeamento_para_modulo_11Object



116
117
118
119
120
121
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 116

def mapeamento_para_modulo_11
  {
    10 => 0,
    11 => 0
  }
end

#monta_detalhe(pagamento, sequencial) ⇒ String

Detalhe do arquivo

Parameters:

  • pagamento (PagamentoCnab400)

    objeto contendo as informacoes referentes ao boleto (valor, vencimento, cliente)

  • sequencial

    num. sequencial do registro no arquivo

Returns:

  • (String)

Raises:



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 162

def monta_detalhe(pagamento, sequencial)
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?

  # identificacao transacao             9[01]
  detalhe = '1'
  # Agencia do BENEFICIARIO na UNICRED  9[05] 002 a 006
  detalhe += agencia.rjust(5, '0')
  # Digito da Agencia 9[01] 007 a 007
  detalhe << digito_agencia
  # Conta Corrente 9[12] 008 a 019
  detalhe << conta_corrente.rjust(12, '0')
  # Digito da Conta 9[1] 020 a 020
  detalhe << digito_conta
  # Zero 9[1] 021 a 021
  detalhe << '0'
  # Codigo da Carteira 9[3] 022 a 024
  detalhe << carteira.rjust(3, '0')
  # Zeros 9[13] 025 a 037
  detalhe << ''.rjust(13, '0')
  # No Controle do Participante Uso
  # da empresa 9[25] 038 a 062
  detalhe << ''.rjust(25, ' ')
  # Codigo do Banco na Camara de Compensacao 9[3] 063 a 065
  detalhe << cod_banco
  # Zeros 9[2] 066 a 067
  detalhe << '00'
  # Branco 9[25] 068 a 092
  detalhe << ''.rjust(25, ' ')
  # Filler 9[01] 093 a 093
  detalhe << '0'
  # Codigo da multa 9[1] 094 a 094
  detalhe << pagamento.codigo_multa
  # Valor/Percentual da Multa 9[1] 095 a 104
  detalhe << pagamento.formata_percentual_multa(10)
  # Tipo de Valor Mora 9[1] 105 a 105
  detalhe << pagamento.tipo_mora
  # Identificacao de Titulo Descontavel 9[1] 106 a 106
  detalhe << 'N'
  # Branco 9[1] 107 a 108
  detalhe << '  '
  # Identificacao da Ocorrencia 9[2] 109 a 110
  detalhe << pagamento.identificacao_ocorrencia
  # numero do documento  X[10] 111 a 120
  detalhe << pagamento.numero.to_s.rjust(10, '0')
  # data do vencimento 9[06] 121 a 126
  detalhe << pagamento.data_vencimento.strftime('%d%m%y')
  # valor do documento 9[13] 127 a 139
  detalhe << pagamento.formata_valor
  # Filler 9[10] 140 a 149
  detalhe << ''.rjust(10, '0')
  # Codigo do Desconto 9[1] 150 a 150
  detalhe << pagamento.cod_desconto
  # data de emissao 9[06] 151 a 156
  detalhe << pagamento.data_emissao.strftime('%d%m%y')
  # Filler 9[01] 157 a 157
  detalhe << '0'
  # Codigo para Protesto 9[1] 158 a 158
  detalhe << pagamento.codigo_protesto
  # numero de dias para protesto 9[02] 159 a 160
  detalhe << pagamento.dias_protesto.rjust(2, '0')
  # valor mora ao dia 9[13] 161 a 173
  detalhe << pagamento.formata_valor_mora(13)
  # data limite para desconto 9[06] 174 a 179
  detalhe << pagamento.formata_data_desconto
  # valor do desconto 9[13] 180 a 192
  detalhe << pagamento.formata_valor_desconto
  # nosso numero X[11] 193 a 203
  detalhe << formata_nosso_numero(pagamento.nosso_numero)
  # Zeros 9[2] 204 a 205
  detalhe << '00'
  # valor do abatimento  9[13] 206 a 218
  detalhe << pagamento.formata_valor_abatimento(13)
  # Identificacao do Tipo de Inscricao do Pagador 9[2] 219 a 220
  detalhe << pagamento.identificacao_sacado
  # documento do pagador 9[14] 221 a 234
  detalhe << pagamento.documento_sacado.to_s.rjust(14, '0')
  # nome do pagador X[40] 235 a 274
  detalhe << pagamento.nome_sacado.format_size(40)
  # endereco do pagador X[40] 275 a 314
  detalhe << pagamento.endereco_sacado.format_size(40)
  # bairro do pagador X[12] 315 a 326
  detalhe << pagamento.bairro_sacado.format_size(12)
  # cep do pagador 9[08] 327 a 334
  detalhe << pagamento.cep_sacado
  # cidade do pagador X[15] 335 a 354
  detalhe << pagamento.cidade_sacado.format_size(20)
  # uf do pagador  X[02] 355 a 356
  detalhe << pagamento.uf_sacado
  # nome do sacador/avalista X[38] 357 a 394
  detalhe << pagamento.nome_avalista.format_size(38)
  # numero do registro no arquivo    9[06] 395 a 400
  detalhe << sequencial.to_s.rjust(6, '0')
  detalhe
end

#monta_headerString

Header do arquivo remessa

Returns:

  • (String)


127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 127

def monta_header
  # CAMPO                 TAMANHO    VALOR
  # tipo do registro      [1]        0
  # operacao              [1]        1
  # literal remessa       [7]        REMESSA
  # Codigo do serviço     [2]        01
  # cod. servico          [15]       COBRANCA
  # info. conta           [20]
  # empresa mae           [30]
  # cod. banco            [3]
  # nome banco            [15]
  # data geracao          [6]        formato DDMMAA
  # branco                [7]
  # Codigo da Variacaoo carteira da UNICRED 003
  #   Preencher com 000. [3]  000
  # Numero Sequencial do arquivo [7]
  # complemento registro  [277]
  # num. sequencial       [6]        000001
  header = "01REMESSA01COBRANCA       #{info_conta}"
  header += "#{empresa_mae.format_size(30)}#{cod_banco}"
  header << "#{nome_banco}#{data_geracao}       000"
  header << "#{sequencial_remessa}#{complemento}000001"
  header
end

#nome_bancoObject



53
54
55
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 53

def nome_banco
  'UNICRED'.ljust(15, ' ')
end

#nosso_numero(nosso_numero) ⇒ String

Numero sequencial utilizado para identificar o boleto.

Returns:

  • (String)

    10 caracteres numericos.



63
64
65
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 63

def nosso_numero(nosso_numero)
  nosso_numero.to_s.rjust(10, '0')
end

#nosso_numero_boleto(nosso_numero) ⇒ Object



73
74
75
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 73

def nosso_numero_boleto(nosso_numero)
  "#{nosso_numero(nosso_numero)}#{nosso_numero_dv(nosso_numero)}"
end

#nosso_numero_dv(nosso_numero) ⇒ Integer

Digito verificador do nosso numero

Returns:

  • (Integer)

    1 caracteres numericos.



69
70
71
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 69

def nosso_numero_dv(nosso_numero)
  nosso_numero.to_s.modulo11(mapeamento: mapeamento_para_modulo_11)
end

#sequencial_remessa=(valor) ⇒ Object



100
101
102
# File 'lib/brcobranca/remessa/cnab400/unicred.rb', line 100

def sequencial_remessa=(valor)
  @sequencial_remessa = valor.to_s.rjust(7, '0') if valor
end