Class: Brcobranca::Remessa::Cnab240::Sicoob

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/remessa/cnab240/sicoob.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#codigo_baixa, #codigo_carteira, #convenio, #distribuicao_boleto, #emissao_boleto, #especie_titulo, #forma_cadastramento, #mensagem_1, #mensagem_2, #tipo_documento

Attributes inherited from Base

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

Instance Method Summary collapse

Methods inherited from Base

#codigo_desconto, #complemento_r, #data_geracao, #data_mora, #densidade_gravacao, #exclusivo_servico, #gera_arquivo, #hora_geracao, #identificacao_titulo_empresa, #monta_header_arquivo, #monta_header_lote, #monta_lote, #monta_segmento_p, #monta_segmento_q, #monta_trailer_lote, #numero, #total_segmentos

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

Returns a new instance of Sicoob.


38
39
40
41
42
43
44
45
46
47
48
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 38

def initialize(campos = {})
  campos = { emissao_boleto: '2',
    distribuicao_boleto: '2',
    especie_titulo: '02',
    tipo_formulario: '4',
    parcela: '01',
    modalidade_carteira: '01',
    forma_cadastramento: '0',
    posto: '00'}.merge!(campos)
  super(campos)
end

Instance Attribute Details

#modalidade_carteiraObject

Returns the value of attribute modalidade_carteira


7
8
9
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 7

def modalidade_carteira
  @modalidade_carteira
end

#parcelaObject

Tipo Formulário - 01 posição (15 a 15):

"1" -auto-copiativo
"3" -auto-envelop

25
26
27
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 25

def parcela
  @parcela
end

#postoObject

Parcela - 02 posições (11 a 12) - “01” se parcela única


28
29
30
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 28

def posto
  @posto
end

#tipo_formularioObject

identificacao da emissao do boleto (attr na classe base)

opcoes:
  

identificacao da distribuicao do boleto (attr na classe base)

opcoes:
  

18
19
20
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 18

def tipo_formulario
  @tipo_formulario
end

Instance Method Details

#cod_bancoObject


50
51
52
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 50

def cod_banco
  '756'
end

#codigo_convenioObject Also known as: convenio_lote


90
91
92
93
94
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 90

def codigo_convenio
  # CAMPO                TAMANHO
  # num. convenio        20 BRANCOS
  ''.rjust(20, ' ')
end

#complemento_headerObject


108
109
110
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 108

def complemento_header
  ''.rjust(29, ' ')
end

#complemento_p(pagamento) ⇒ Object


152
153
154
155
156
157
158
159
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 152

def complemento_p(pagamento)
  # CAMPO                   TAMANHO
  # conta corrente          12
  # digito conta            1
  # digito agencia/conta    1
  # ident. titulo no banco  20
  "#{conta_corrente.rjust(12, '0')}#{digito_conta} #{formata_nosso_numero(pagamento.nosso_numero)}"
end

#complemento_trailerObject


112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 112

def complemento_trailer
  # CAMPO                               TAMANHO
  # Qt. Títulos em Cobrança Simples     6
  # Vl. Títulos em Carteira Simples     15 + 2 decimais
  # Qt. Títulos em Cobrança Vinculada   6
  # Vl. Títulos em Carteira Vinculada   15 + 2 decimais
  # Qt. Títulos em Cobrança Caucionada  6
  # Vl. Títulos em Carteira Caucionada  15 + 2 decimais
  # Qt. Títulos em Cobrança Descontada  6
  # Vl. Títulos em Carteira Descontada  15 + 2 decimais
  total_cobranca_simples    = "#{quantidade_titulos_cobranca}#{valor_titulos_carteira}"
  total_cobranca_vinculada  = "".rjust(23, "0")
  total_cobranca_caucionada = "".rjust(23, "0")
  total_cobranca_descontada = "".rjust(23, "0")

  "#{total_cobranca_simples}#{total_cobranca_vinculada}#{total_cobranca_caucionada}"\
    "#{total_cobranca_descontada}".ljust(217, ' ')
end

#data_multa(pagamento) ⇒ Object


196
197
198
199
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 196

def data_multa(pagamento)
  return ''.rjust(8, '0') if pagamento.codigo_multa == '0'
  pagamento.data_vencimento.strftime('%d%m%Y')
end

#dias_baixa(pagamento) ⇒ Object


220
221
222
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 220

def dias_baixa(pagamento)
  ''.rjust(3, ' ')
end

#digito_agenciaObject


74
75
76
77
78
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 74

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

#digito_contaObject


80
81
82
83
84
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 80

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

#dv_agencia_cobradoraObject


86
87
88
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 86

def dv_agencia_cobradora
  ' '
end

#formata_nosso_numero(nosso_numero) ⇒ String

Retorna o nosso numero

Nosso Número:

- Se emiss

Returns:

  • (String)

216
217
218
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 216

def formata_nosso_numero(nosso_numero)
  "#{nosso_numero.to_s.rjust(10, '0')}#{parcela}#{modalidade_carteira}#{tipo_formulario}     "
end

#info_contaObject


98
99
100
101
102
103
104
105
106
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 98

def info_conta
  # CAMPO                  TAMANHO
  # agencia                5
  # digito agencia         1
  # conta corrente         12
  # digito conta           1
  # digito agencia/conta   1
  "#{agencia.rjust(5, '0')}#{digito_agencia}#{conta_corrente.rjust(12, '0')}#{digito_conta} "
end

#monta_segmento_r(pagamento, nro_lote, sequencial) ⇒ Object


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
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 162

def monta_segmento_r(pagamento, nro_lote, sequencial)
  segmento_r = ''                                               # CAMPO                                TAMANHO
  segmento_r << cod_banco                                       # codigo banco                         3
  segmento_r << nro_lote.to_s.rjust(4, '0')                     # lote de servico                      4
  segmento_r << '3'                                             # lote de servico                      1
  segmento_r << sequencial.to_s.rjust(5, '0')                   # num. sequencial do registro no lote  5
  segmento_r << 'R'                                             # cod. segmento                        1
  segmento_r << ' '                                             # uso exclusivo                        1
  segmento_r << '01'                                            # cod. movimento remessa               2
  segmento_r << "0"                                             # cod. desconto 2                      1
  segmento_r << "".rjust(8,  '0')                               # data desconto 2                      8
  segmento_r << "".rjust(15,  '0')                              # valor desconto 2                     15
  segmento_r << "0"                                             # cod. desconto 3                      1
  segmento_r << "".rjust(8,  '0')                               # data desconto 3                      8
  segmento_r << "".rjust(15,  '0')                              # valor desconto 3                     15
  segmento_r << pagamento.codigo_multa                          # codigo multa                         1
  segmento_r << data_multa(pagamento)                           # data multa                           8
  segmento_r << pagamento.formata_percentual_multa(15)          # valor multa                          15
  segmento_r << ''.rjust(10, ' ')                               # info pagador                         10
  segmento_r << ''.rjust(40, ' ')                               # mensagem 3                           40
  segmento_r << ''.rjust(40, ' ')                               # mensagem 4                           40
  segmento_r << ''.rjust(20, ' ')                               # Exclusivo FEBRABAN                   20
  segmento_r << ''.rjust(8, '0')                                # Cod. Ocor do Pagador                 8
  segmento_r << ''.rjust(3, '0')                                # Cod. do Banco conta débito           3
  segmento_r << ''.rjust(5, '0')                                # Cod. da Agencia do débito            5
  segmento_r << ' '                                             # Cod. verificador da agencia          1
  segmento_r << ''.rjust(12, '0')                               # Conta corrente para débito           12
  segmento_r << ' '                                             # Cod. verificador da conta            1
  segmento_r << ' '                                             # Cod. verificador da Ag/Conta         1
  segmento_r << '0'                                             # Aviso débito automático              1
  segmento_r << ''.rjust(9, ' ')                                # Uso FEBRABAN                         9
  segmento_r
end

#monta_trailer_arquivo(nro_lotes, sequencial) ⇒ String

Monta o registro trailer do arquivo

Parameters:

  • nro_lotes (Integer)

    numero de lotes no arquivo

  • sequencial (Integer)

    numero de registros(linhas) no arquivo

Returns:

  • (String)

140
141
142
143
144
145
146
147
148
149
150
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 140

def monta_trailer_arquivo(nro_lotes, sequencial)
  # CAMPO                     TAMANHO
  # codigo banco              3
  # lote de servico           4
  # tipo de registro          1
  # uso FEBRABAN              9
  # nro de lotes              6
  # nro de registros(linhas)  6
  # uso FEBRABAN              211
  "#{cod_banco}99999#{''.rjust(9, ' ')}#{nro_lotes.to_s.rjust(6, '0')}#{sequencial.to_s.rjust(6, '0')}#{''.rjust(6, '0')}#{''.rjust(205, ' ')}"
end

#nome_bancoObject


54
55
56
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 54

def nome_banco
  'SICOOB'.ljust(30, ' ')
end

#uso_exclusivo_bancoObject


66
67
68
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 66

def uso_exclusivo_banco
  ''.rjust(20, ' ')
end

#uso_exclusivo_empresaObject


70
71
72
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 70

def uso_exclusivo_empresa
  ''.rjust(20, ' ')
end

#versao_layout_arquivoObject


58
59
60
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 58

def versao_layout_arquivo
  '081'
end

#versao_layout_loteObject


62
63
64
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 62

def versao_layout_lote
  '040'
end