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.



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 35

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

Returns the value of attribute parcela.



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

def parcela
  @parcela
end

#postoObject

Returns the value of attribute posto.



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

def posto
  @posto
end

#tipo_formularioObject

Returns the value of attribute tipo_formulario.



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

def tipo_formulario
  @tipo_formulario
end

Instance Method Details

#cod_bancoObject



47
48
49
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 47

def cod_banco
  '756'
end

#codigo_convenioObject Also known as: convenio_lote



87
88
89
90
91
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 87

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

#complemento_headerObject



105
106
107
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 105

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

#complemento_p(pagamento) ⇒ Object



155
156
157
158
159
160
161
162
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 155

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



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

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



198
199
200
201
202
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 198

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



223
224
225
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 223

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

#digito_agenciaObject



71
72
73
74
75
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 71

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

#digito_contaObject



77
78
79
80
81
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 77

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



83
84
85
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 83

def dv_agencia_cobradora
  ' '
end

#formata_nosso_numero(nosso_numero) ⇒ String

Retorna o nosso numero

Nosso Número:

- Se emissão a cargo do Cedente (vide planilha "Capa" deste arquivo):
     NumTitulo - 10 posições (1 a 10)
     Parcela - 02 posições (11 a 12) - "01" se parcela única
     Modalidade - 02 posições (13 a 14) - vide planilha "Capa" deste arquivo
     Tipo Formulário - 01 posição  (15 a 15):
          "1" -auto-copiativo
          "3" -auto-envelopável
          "4" -A4 sem envelopamento
          "6" -A4 sem envelopamento 3 vias
     Em branco - 05 posições (16 a 20)

Returns:

  • (String)


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

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

#info_contaObject



95
96
97
98
99
100
101
102
103
# File 'lib/brcobranca/remessa/cnab240/sicoob.rb', line 95

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



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

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)


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

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



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

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

#uso_exclusivo_bancoObject



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

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

#uso_exclusivo_empresaObject



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

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

#versao_layout_arquivoObject



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

def versao_layout_arquivo
  '081'
end

#versao_layout_loteObject



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

def versao_layout_lote
  '040'
end