Class: BrBoleto::Remessa::Cnab240::Sicoob
- Inherits:
-
Base
- Object
- ActiveModelBase
- Base
- Base
- BrBoleto::Remessa::Cnab240::Sicoob
- Defined in:
- lib/br_boleto/remessa/cnab240/sicoob.rb
Instance Attribute Summary collapse
-
#tipo_formulario ⇒ Object
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.
Attributes inherited from Base
#lotes, #mensagem_1, #mensagem_2
Attributes inherited from Base
#data_hora_arquivo, #sequencial_remessa
Instance Method Summary collapse
- #codigo_convenio ⇒ Object
-
#complemento_header_arquivo ⇒ Object
Posição 212 a 240 do Header do Arquivo Para o sicoob esse espaço deve ter ‘Brancos’ 29 posições.
- #complemento_p(pagamento) ⇒ Object
- #complemento_trailer_lote(lote, nr_lote) ⇒ Object
-
#complemento_trailer_lote_posicao_024_a_029(lote) ⇒ Object
Quantidade de titulos de cobrança simples 6 posições.
-
#complemento_trailer_lote_posicao_030_a_046(lote) ⇒ Object
Valor total dos titulos de cobrança simples 17 posições.
-
#complemento_trailer_lote_posicao_047_a_052(lote) ⇒ Object
Quantidade de titulos de cobrança Vinculada 6 posições.
-
#complemento_trailer_lote_posicao_053_a_069(lote) ⇒ Object
Valor total dos titulos de cobrança Vinculada 17 posições.
-
#complemento_trailer_lote_posicao_070_a_075(lote) ⇒ Object
Quantidade de titulos de cobrança Caucionada 6 posições.
-
#complemento_trailer_lote_posicao_076_a_092(lote) ⇒ Object
Valor total dos titulos de cobrança Caucionada 17 posições.
-
#complemento_trailer_lote_posicao_093_a_098(lote) ⇒ Object
Quantidade de titulos de cobrança Descontada 6 posições.
-
#complemento_trailer_lote_posicao_099_a_115(lote) ⇒ Object
Valor total dos titulos de cobrança Descontada 17 posições.
-
#complemento_trailer_lote_posicao_116_a_123(lote) ⇒ Object
Número do aviso de lançamento 8 posições.
-
#complemento_trailer_lote_posicao_124_a_240 ⇒ Object
Exclusivo FEBRABAN 117 posições.
- #conta_class ⇒ Object
- #convenio_lote(lote) ⇒ Object
- #default_values ⇒ Object
-
#formata_nosso_numero(pagamento) ⇒ String
Retorna o nosso numero.
-
#header_arquivo_posicao_172_a_191 ⇒ Object
Espaço reservado para o Banco 20 posições Brancos.
-
#header_arquivo_posicao_192_a_211 ⇒ Object
Espaço reservado para a Empresa 20 posições Brancos.
-
#header_lote_posicao_012_a_013 ⇒ Object
Forma de Lançamento 2 posições Brancos.
- #informacoes_da_conta ⇒ Object
-
#segmento_p_posicao_060_a_060 ⇒ Object
Tipo de Documento 1 posição Branco.
-
#segmento_p_posicao_118_a_118(pagamento) ⇒ Object
Codigo do Juros Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento) Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento) 1 posição.
-
#segmento_r_posicao_066_a_066(pagamento) ⇒ Object
Codigo da multa Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento) Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento) 1 posição.
-
#tipo_cobranca_formatada ⇒ Object
Tipo de cobrança Ex: :simples, :caucionada.
-
#valid_codigo_cedente_required ⇒ Object
<= Código do cedente/beneficiário/convenio deve ser obrigatorio.
-
#valid_conta_corrente_maximum ⇒ Object
<= Máximo de digitos da conta corrente.
-
#valid_conta_corrente_required ⇒ Object
<= Conta corrente obrigatória.
-
#valid_modalidade_length ⇒ Object
<= Modalidade deve ter 2 digitos.
-
#valid_modalidade_required ⇒ Object
VALIDAÇÕES DA CONTA #####################.
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
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_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_059_a_059, #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_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
Methods inherited from ActiveModelBase
#assign_attributes, #initialize
Constructor Details
This class inherits a constructor from BrBoleto::ActiveModelBase
Instance Attribute Details
#tipo_formulario ⇒ Object
Tipo Formulário - 01 posição (15 a 15):
"1" -auto-copiativo
"3" -auto-envelop
15 16 17 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 15 def tipo_formulario @tipo_formulario end |
Instance Method Details
#codigo_convenio ⇒ Object
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_arquivo ⇒ Object
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
140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 140 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
166 167 168 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 166 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
173 174 175 176 177 178 179 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 173 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
184 185 186 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 184 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
191 192 193 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 191 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
199 200 201 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 199 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
206 207 208 209 210 211 212 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 206 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
217 218 219 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 217 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
224 225 226 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 224 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
231 232 233 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 231 def complemento_trailer_lote_posicao_116_a_123(lote) ''.rjust(8, ' ') end |
#complemento_trailer_lote_posicao_124_a_240 ⇒ Object
Exclusivo FEBRABAN 117 posições
238 239 240 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 238 def complemento_trailer_lote_posicao_124_a_240 ''.rjust(117, ' ') end |
#conta_class ⇒ Object
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_values ⇒ Object
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
132 133 134 135 136 137 138 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 132 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_191 ⇒ Object
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_211 ⇒ Object
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_013 ⇒ Object
Forma de Lançamento 2 posições Brancos
159 160 161 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 159 def header_lote_posicao_012_a_013 ' ' end |
#informacoes_da_conta ⇒ Object
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_060_a_060 ⇒ Object
Tipo de Documento 1 posição Branco
98 99 100 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 98 def segmento_p_posicao_060_a_060 ' ' end |
#segmento_p_posicao_118_a_118(pagamento) ⇒ Object
Codigo do Juros Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento) Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento) 1 posição
257 258 259 260 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 257 def segmento_p_posicao_118_a_118(pagamento) cod = "#{pagamento.codigo_juros}".adjust_size_to(1, '0') cod.in?(['1','2']) ? cod : '0' end |
#segmento_r_posicao_066_a_066(pagamento) ⇒ Object
Codigo da multa Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento) Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento) 1 posição
247 248 249 250 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 247 def segmento_r_posicao_066_a_066(pagamento) cod = "#{pagamento.codigo_multa}".adjust_size_to(1, '0') cod.in?(['1','2']) ? cod : '0' end |
#tipo_cobranca_formatada ⇒ Object
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.
108 109 110 111 112 113 114 115 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 108 def tipo_cobranca_formatada case "#{conta.modalidade}".rjust(2, "0") when '01', '02' :simples when '03' :caucionada end end |
#valid_codigo_cedente_required ⇒ Object
<= 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_maximum ⇒ Object
<= 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_required ⇒ Object
<= Conta corrente obrigatória
20 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 20 def valid_conta_corrente_required; true end |
#valid_modalidade_length ⇒ Object
<= Modalidade deve ter 2 digitos
22 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 22 def valid_modalidade_length; 2 end |
#valid_modalidade_required ⇒ Object
VALIDAÇÕES DA CONTA #####################
18 |
# File 'lib/br_boleto/remessa/cnab240/sicoob.rb', line 18 def valid_modalidade_required; true end |