Class: BrBoleto::Remessa::Cnab240::Sicoob

Inherits:
Base show all
Defined in:
lib/br_boleto/remessa/cnab240/sicoob.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#lotes, #mensagem_1, #mensagem_2

Attributes inherited from Base

#data_hora_arquivo, #sequencial_remessa

Instance Method Summary collapse

Methods inherited from Base

class_for_lote, #dados_do_arquivo, #monta_lote, #pagamento_valid_distribuicao_boleto_length, #pagamento_valid_emissao_boleto_length, #segmento_p_numero_do_documento, #usa_segmento_R?, #usa_segmento_S?

Methods included from Helper::TrailerArquivo

#monta_trailer_arquivo, #trailer_arquivo_posicao_001_a_003, #trailer_arquivo_posicao_004_a_007, #trailer_arquivo_posicao_008_a_008, #trailer_arquivo_posicao_009_a_017, #trailer_arquivo_posicao_018_a_023, #trailer_arquivo_posicao_024_a_029, #trailer_arquivo_posicao_030_a_035, #trailer_arquivo_posicao_036_a_240

Methods included from Helper::TrailerLote

#monta_trailer_lote, #trailer_lote_posicao_001_a_003, #trailer_lote_posicao_004_a_007, #trailer_lote_posicao_008_a_008, #trailer_lote_posicao_009_a_017, #trailer_lote_posicao_018_a_023, #trailer_lote_posicao_024_a_240

Methods included from Helper::SegmentoS

#monta_segmento_s, #segmento_s_posicao_001_a_003, #segmento_s_posicao_004_a_007, #segmento_s_posicao_008_a_008, #segmento_s_posicao_009_a_013, #segmento_s_posicao_014_a_014, #segmento_s_posicao_015_a_015, #segmento_s_posicao_016_a_017, #segmento_s_posicao_018_a_018, #segmento_s_posicao_019_a_020_tipo_impressao_1_ou_2, #segmento_s_posicao_019_a_058_tipo_impressao_3, #segmento_s_posicao_021_a_160_tipo_impressao_1_ou_2, #segmento_s_posicao_059_a_098_tipo_impressao_3, #segmento_s_posicao_099_a_138_tipo_impressao_3, #segmento_s_posicao_139_a_178_tipo_impressao_3, #segmento_s_posicao_161_a_162_tipo_impressao_1_ou_2, #segmento_s_posicao_163_a_240_tipo_impressao_1_ou_2, #segmento_s_posicao_179_a_218_tipo_impressao_3, #segmento_s_posicao_219_a_240_tipo_impressao_3, #segmento_s_tipo_impressao_1_ou_2, #segmento_s_tipo_impressao_3

Methods included from Helper::SegmentoR

#monta_segmento_r, #segmento_r_posicao_001_a_003, #segmento_r_posicao_004_a_007, #segmento_r_posicao_008_a_008, #segmento_r_posicao_009_a_013, #segmento_r_posicao_014_a_014, #segmento_r_posicao_015_a_015, #segmento_r_posicao_016_a_017, #segmento_r_posicao_018_a_018, #segmento_r_posicao_019_a_026, #segmento_r_posicao_027_a_041, #segmento_r_posicao_042_a_042, #segmento_r_posicao_043_a_050, #segmento_r_posicao_051_a_065, #segmento_r_posicao_066_a_066, #segmento_r_posicao_067_a_074, #segmento_r_posicao_075_a_089, #segmento_r_posicao_090_a_099, #segmento_r_posicao_100_a_139, #segmento_r_posicao_140_a_179, #segmento_r_posicao_180_a_199, #segmento_r_posicao_200_a_207, #segmento_r_posicao_208_a_210, #segmento_r_posicao_211_a_215, #segmento_r_posicao_216_a_216, #segmento_r_posicao_217_a_228, #segmento_r_posicao_229_a_229, #segmento_r_posicao_230_a_230, #segmento_r_posicao_231_a_231, #segmento_r_posicao_232_a_240

Methods included from Helper::SegmentoQ

#monta_segmento_q, #segmento_q_posicao_001_a_003, #segmento_q_posicao_004_a_007, #segmento_q_posicao_008_a_008, #segmento_q_posicao_009_a_013, #segmento_q_posicao_014_a_014, #segmento_q_posicao_015_a_015, #segmento_q_posicao_016_a_017, #segmento_q_posicao_018_a_018, #segmento_q_posicao_019_a_033, #segmento_q_posicao_034_a_073, #segmento_q_posicao_074_a_113, #segmento_q_posicao_114_a_128, #segmento_q_posicao_129_a_133, #segmento_q_posicao_134_a_136, #segmento_q_posicao_137_a_151, #segmento_q_posicao_152_a_153, #segmento_q_posicao_154_a_154, #segmento_q_posicao_155_a_169, #segmento_q_posicao_170_a_209, #segmento_q_posicao_210_a_212, #segmento_q_posicao_213_a_232, #segmento_q_posicao_233_a_240

Methods included from Helper::SegmentoP

#monta_segmento_p, #segmento_p_posicao_001_a_003, #segmento_p_posicao_004_a_007, #segmento_p_posicao_008_a_008, #segmento_p_posicao_009_a_013, #segmento_p_posicao_014_a_014, #segmento_p_posicao_015_a_015, #segmento_p_posicao_016_a_017, #segmento_p_posicao_018_a_022, #segmento_p_posicao_023_a_023, #segmento_p_posicao_024_a_057, #segmento_p_posicao_058_a_058, #segmento_p_posicao_061_a_061, #segmento_p_posicao_062_a_062, #segmento_p_posicao_063_a_077, #segmento_p_posicao_078_a_085, #segmento_p_posicao_086_a_100, #segmento_p_posicao_101_a_105, #segmento_p_posicao_106_a_106, #segmento_p_posicao_107_a_108, #segmento_p_posicao_109_a_109, #segmento_p_posicao_110_a_117, #segmento_p_posicao_118_a_118, #segmento_p_posicao_119_a_126, #segmento_p_posicao_127_a_141, #segmento_p_posicao_142_a_142, #segmento_p_posicao_143_a_150, #segmento_p_posicao_151_a_165, #segmento_p_posicao_166_a_180, #segmento_p_posicao_181_a_195, #segmento_p_posicao_196_a_220, #segmento_p_posicao_221_a_221, #segmento_p_posicao_222_a_223, #segmento_p_posicao_224_a_224, #segmento_p_posicao_225_a_227, #segmento_p_posicao_228_a_229, #segmento_p_posicao_230_a_239, #segmento_p_posicao_240_a_240

Methods included from Helper::HeaderLote

#header_lote_posicao_001_a_003, #header_lote_posicao_004_a_007, #header_lote_posicao_008_a_008, #header_lote_posicao_009_a_009, #header_lote_posicao_010_a_011, #header_lote_posicao_014_a_016, #header_lote_posicao_017_a_017, #header_lote_posicao_018_a_018, #header_lote_posicao_019_a_033, #header_lote_posicao_034_a_053, #header_lote_posicao_054_a_073, #header_lote_posicao_074_a_103, #header_lote_posicao_104_a_143, #header_lote_posicao_144_a_183, #header_lote_posicao_184_a_191, #header_lote_posicao_192_a_199, #header_lote_posicao_200_a_207, #header_lote_posicao_208_a_240, #monta_header_lote

Methods included from Helper::HeaderArquivo

#header_arquivo_posicao_001_a_003, #header_arquivo_posicao_004_a_007, #header_arquivo_posicao_008_a_008, #header_arquivo_posicao_009_a_017, #header_arquivo_posicao_018_a_018, #header_arquivo_posicao_019_a_032, #header_arquivo_posicao_033_a_052, #header_arquivo_posicao_053_a_072, #header_arquivo_posicao_073_a_102, #header_arquivo_posicao_103_a_132, #header_arquivo_posicao_133_a_142, #header_arquivo_posicao_143_a_143, #header_arquivo_posicao_144_a_151, #header_arquivo_posicao_152_a_157, #header_arquivo_posicao_158_a_163, #header_arquivo_posicao_164_a_166, #header_arquivo_posicao_167_a_171, #header_arquivo_posicao_212_a_240, #monta_header_arquivo

Methods inherited from Base

#data_geracao, #hora_geracao, #pagamento_valid_cod_desconto_length, #pagamento_valid_distribuicao_boleto_length, #pagamento_valid_emissao_boleto_length, #pagamento_valid_tipo_impressao_required, #persisted?

Methods included from HaveConta

#conta, #conta=

Methods inherited from ActiveModelBase

#assign_attributes, #initialize

Constructor Details

This class inherits a constructor from BrBoleto::ActiveModelBase

Instance Attribute Details

#tipo_formularioObject

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


15
16
17
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 15

def tipo_formulario
  @tipo_formulario
end

Instance Method Details

#codigo_convenioObject



33
34
35
36
37
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 33

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

#complemento_header_arquivoObject

Posição 212 a 240 do Header do Arquivo Para o sicoob esse espaço deve ter ‘Brancos’ 29 posições



77
78
79
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 77

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

#complemento_p(pagamento) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 81

def complemento_p(pagamento)
	# CAMPO                   TAMANHO
	# conta corrente          12
	# digito conta            1
	# digito agencia/conta    1 # Branco
	# ident. titulo no banco  20
	result =  "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
	result << "#{conta.conta_corrente_dv}".adjust_size_to(1)
	result << " "
	result << "#{formata_nosso_numero(pagamento)}"
	result
end

#complemento_trailer_lote(lote, nr_lote) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 148

def complemento_trailer_lote(lote, nr_lote)
	complemento = ''
	complemento << complemento_trailer_lote_posicao_024_a_029(lote)
	complemento << complemento_trailer_lote_posicao_030_a_046(lote)
	complemento << complemento_trailer_lote_posicao_047_a_052(lote)
	complemento << complemento_trailer_lote_posicao_053_a_069(lote)
	complemento << complemento_trailer_lote_posicao_070_a_075(lote)
	complemento << complemento_trailer_lote_posicao_076_a_092(lote)
	complemento << complemento_trailer_lote_posicao_093_a_098(lote)
	complemento << complemento_trailer_lote_posicao_099_a_115(lote)
	complemento << complemento_trailer_lote_posicao_116_a_123(lote)
	complemento << complemento_trailer_lote_posicao_124_a_240
	complemento.upcase
end

#complemento_trailer_lote_posicao_024_a_029(lote) ⇒ Object

Quantidade de titulos de cobrança simples 6 posições



174
175
176
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 174

def complemento_trailer_lote_posicao_024_a_029(lote)
	tipo_cobranca_formatada == :simples ? lote.pagamentos.count.to_s.rjust(6, '0') : ''.rjust(6, '0')
end

#complemento_trailer_lote_posicao_030_a_046(lote) ⇒ Object

Valor total dos titulos de cobrança simples 17 posições



181
182
183
184
185
186
187
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 181

def complemento_trailer_lote_posicao_030_a_046(lote)
	if tipo_cobranca_formatada == :simples
		BrBoleto::Helper::Number.new(lote.pagamentos.map(&:valor_documento).sum).formata_valor_monetario(17)
	else
		''.rjust(17, '0')
	end
end

#complemento_trailer_lote_posicao_047_a_052(lote) ⇒ Object

Quantidade de titulos de cobrança Vinculada 6 posições



192
193
194
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 192

def complemento_trailer_lote_posicao_047_a_052(lote)
	''.rjust(6, '0')
end

#complemento_trailer_lote_posicao_053_a_069(lote) ⇒ Object

Valor total dos titulos de cobrança Vinculada 17 posições



199
200
201
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 199

def complemento_trailer_lote_posicao_053_a_069(lote)
	''.rjust(17, '0')
end

#complemento_trailer_lote_posicao_070_a_075(lote) ⇒ Object

Quantidade de titulos de cobrança Caucionada 6 posições



207
208
209
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 207

def complemento_trailer_lote_posicao_070_a_075(lote)
	tipo_cobranca_formatada == :caucionada ? lote.pagamentos.count.to_s.rjust(6, '0') : ''.rjust(6, '0')
end

#complemento_trailer_lote_posicao_076_a_092(lote) ⇒ Object

Valor total dos titulos de cobrança Caucionada 17 posições



214
215
216
217
218
219
220
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 214

def complemento_trailer_lote_posicao_076_a_092(lote)
	if tipo_cobranca_formatada == :caucionada
		BrBoleto::Helper::Number.new(lote.pagamentos.map(&:valor_documento).sum).formata_valor_monetario(17)
	else
		''.rjust(17, '0')
	end
end

#complemento_trailer_lote_posicao_093_a_098(lote) ⇒ Object

Quantidade de titulos de cobrança Descontada 6 posições



225
226
227
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 225

def complemento_trailer_lote_posicao_093_a_098(lote)
	''.rjust(6, '0')
end

#complemento_trailer_lote_posicao_099_a_115(lote) ⇒ Object

Valor total dos titulos de cobrança Descontada 17 posições



232
233
234
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 232

def complemento_trailer_lote_posicao_099_a_115(lote)
	''.rjust(17, '0')
end

#complemento_trailer_lote_posicao_116_a_123(lote) ⇒ Object

Número do aviso de lançamento 8 posições



239
240
241
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 239

def complemento_trailer_lote_posicao_116_a_123(lote)
	''.rjust(8, ' ')
end

#complemento_trailer_lote_posicao_124_a_240Object

Exclusivo FEBRABAN 117 posições



246
247
248
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 246

def complemento_trailer_lote_posicao_124_a_240
	''.rjust(117, ' ')
end

#conta_classObject



6
7
8
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 6

def conta_class
	BrBoleto::Conta::Sicoob
end

#convenio_lote(lote) ⇒ Object



39
40
41
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 39

def convenio_lote(lote)
	codigo_convenio
end

#default_valuesObject



27
28
29
30
31
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 27

def default_values
	super.merge({
		tipo_formulario:     '4'
	})
end

#formata_nosso_numero(pagamento) ⇒ 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)


140
141
142
143
144
145
146
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 140

def formata_nosso_numero(pagamento)
	result = "#{pagamento.nosso_numero}".adjust_size_to(10, '0', :right)
	result << "#{pagamento.parcela}".adjust_size_to(2, '0', :right)
	result << "#{conta.modalidade}".adjust_size_to(2, '0', :right)
	result << "#{tipo_formulario}".adjust_size_to(1, '1')
	result.adjust_size_to(20)
end

#header_arquivo_posicao_172_a_191Object

Espaço reservado para o Banco 20 posições Brancos



61
62
63
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 61

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

#header_arquivo_posicao_192_a_211Object

Espaço reservado para a Empresa 20 posições Brancos



69
70
71
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 69

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

#header_lote_posicao_012_a_013Object

Forma de Lançamento 2 posições Brancos



167
168
169
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 167

def header_lote_posicao_012_a_013
	'  '
end

#informacoes_da_contaObject



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 43

def informacoes_da_conta
	# CAMPO                  TAMANHO
	# agencia                5
	# digito agencia         1
	# conta corrente         12
	# digito conta           1
	# digito agencia/conta   1
	result =  "#{conta.agencia}".adjust_size_to(5, '0', :right)
	result << "#{conta.agencia_dv}"
	result << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
	result << "#{conta.conta_corrente_dv}"
	result.adjust_size_to(20)
end

#segmento_p_posicao_059_a_059(pagamento) ⇒ Object

Forma de Cadastr. do Título no Banco

Preencher com "0"
1 posição


98
99
100
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 98

def segmento_p_posicao_059_a_059(pagamento)
	'0'
end

#segmento_p_posicao_060_a_060Object

Tipo de Documento 1 posição Branco



106
107
108
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 106

def segmento_p_posicao_060_a_060
	' '
end

#tipo_cobranca_formatadaObject

Tipo de cobrança Ex: :simples, :caucionada

Obs: O VALOR DESSE METODO NÃO INFLUÊNCIA NA GERAÇÃO DO BOLETO É APENAS PARA QUESTÃO DE INFORMAÇÃO CASO PRECISE PARA OUTRAS COISAS.



116
117
118
119
120
121
122
123
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 116

def tipo_cobranca_formatada
	case "#{conta.modalidade}".rjust(2, "0")
	when '01', '02'
		:simples
	when '03'
		:caucionada
	end
end

#valid_codigo_cedente_requiredObject

<= Código do cedente/beneficiário/convenio deve ser obrigatorio



19
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 19

def valid_codigo_cedente_required; true end

#valid_conta_corrente_maximumObject

<= Máximo de digitos da conta corrente



21
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 21

def valid_conta_corrente_maximum;  12   end

#valid_conta_corrente_requiredObject

<= Conta corrente obrigatória



20
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 20

def valid_conta_corrente_required; true end

#valid_modalidade_lengthObject

<= Modalidade deve ter 2 digitos



22
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 22

def valid_modalidade_length;       2    end

#valid_modalidade_requiredObject

VALIDAÇÕES DA CONTA #####################



18
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 18

def valid_modalidade_required;     true end