Class: Brcobranca::Remessa::Cnab240::Santander

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

Instance Attribute Summary collapse

Attributes inherited from Base

#codigo_baixa, #codigo_carteira, #convenio, #dias_baixa, #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, #data_geracao, #data_mora, #data_multa, #exclusivo_servico, #gera_arquivo, #identificacao_titulo_empresa, #monta_header_lote, #monta_lote, #monta_segmento_r, #monta_trailer_arquivo, #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 = {}) ⇒ Santander

Returns a new instance of Santander.



16
17
18
19
20
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 16

def initialize(campos = {})
  campos = {  emissao_boleto: ' ', distribuicao_boleto: ' ',
              especie_titulo: '02', tipo_documento: '2' }.merge!(campos)
  super(campos)
end

Instance Attribute Details

#codigo_transmissaoObject

Código de Transmissão



8
9
10
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 8

def codigo_transmissao
  @codigo_transmissao
end

Instance Method Details

#cod_bancoObject



77
78
79
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 77

def cod_banco
  '033'
end

#codigo_convenioObject



85
86
87
88
89
90
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 85

def codigo_convenio
  identificacao_conta = ''
  identificacao_conta += codigo_transmissao
  identificacao_conta << ''.rjust(25, ' ')
  identificacao_conta
end

#complemento_headerObject



34
35
36
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 34

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

#complemento_p(pagamento) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 42

def complemento_p(pagamento)
  complemento_p = ''
  complemento_p += conta_corrente.rjust(9, '0')
  complemento_p << digito_conta.to_s
  complemento_p << conta_corrente.rjust(9, '0')
  complemento_p << digito_conta.to_s
  complemento_p << '  '
  complemento_p << identificador_titulo(pagamento.nosso_numero)
  complemento_p
end

#complemento_rObject



53
54
55
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 53

def complemento_r
  ''.rjust(61, ' ')
end

#complemento_trailerObject



38
39
40
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 38

def complemento_trailer
  ''.rjust(217, ' ')
end

#convenio_loteObject



65
66
67
68
69
70
71
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 65

def convenio_lote
  identificacao_conta = ''
  identificacao_conta += ''.rjust(20, ' ')
  identificacao_conta << codigo_transmissao
  identificacao_conta << ''.rjust(5, ' ')
  identificacao_conta
end

#densidade_gravacaoObject



106
107
108
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 106

def densidade_gravacao
  ''.rjust(5, ' ')
end

#digito_agenciaObject



26
27
28
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 26

def digito_agencia
  agencia.modulo11(mapeamento: { 10 => 'X', 11 => 'X' }).to_s
end

#digito_contaObject



30
31
32
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 30

def digito_conta
  conta_corrente.modulo11(mapeamento: { 10 => 'X', 11 => 'X' }).to_s
end

#dv_agencia_cobradoraObject



122
123
124
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 122

def dv_agencia_cobradora
  ''.rjust(1, ' ')
end

#formata_documento_ou_numero(pagamento, tamanho = 25, caracter = ' ') ⇒ Object



101
102
103
104
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 101

def formata_documento_ou_numero(pagamento, tamanho = 25, caracter = ' ')
  doc = pagamento.documento_ou_numero.to_s.gsub(/[^0-9A-Za-z ]/, '')
  doc.ljust(tamanho, caracter)[0...tamanho]
end

#hora_geracaoObject



118
119
120
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 118

def hora_geracao
  ''.rjust(6, ' ')
end

#identificador_titulo(nosso_numero) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 92

def identificador_titulo(nosso_numero)
  nosso_numero_dv = nosso_numero.modulo11(
    multiplicador: (2..9).to_a,
    mapeamento: { 10 => 0, 11 => 0 }
  ) { |total| 11 - (total % 11) }

  "#{nosso_numero}#{nosso_numero_dv}".rjust(13, '0')
end

#info_contaObject



81
82
83
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 81

def info_conta
  ''
end

#monta_header_arquivoObject



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

def monta_header_arquivo
  header_arquivo = ''                                   # CAMPO                         TAMANHO
  header_arquivo += cod_banco                           # codigo do banco               3
  header_arquivo << '0000'                              # lote do servico               4
  header_arquivo << '0'                                 # tipo de registro              1
  header_arquivo << ''.rjust(8, ' ')                    # uso exclusivo FEBRABAN        9
  header_arquivo << Brcobranca::Util::Empresa.new(documento_cedente, false).tipo # tipo inscricao                1
  header_arquivo << documento_cedente.to_s.rjust(15, '0') # numero de inscricao         15
  header_arquivo << codigo_convenio                     # codigo do convenio no banco   20
  header_arquivo << info_conta                          # informacoes da conta          20
  header_arquivo << empresa_mae.format_size(30)         # nome da empresa               30
  header_arquivo << nome_banco.format_size(30)          # nome do banco                 30
  header_arquivo << ''.rjust(10, ' ')                   # uso exclusivo FEBRABAN        10
  header_arquivo << '1'                                 # codigo remessa                1
  header_arquivo << data_geracao                        # data geracao                  8
  header_arquivo << hora_geracao                        # hora geracao                  6
  header_arquivo << sequencial_remessa.to_s.rjust(6, '0') # numero seq. arquivo         6
  header_arquivo << versao_layout_arquivo               # num. versao arquivo           3
  header_arquivo << densidade_gravacao                  # densidade gravacao            5
  header_arquivo << uso_exclusivo_banco                 # uso exclusivo                 20
  header_arquivo << uso_exclusivo_empresa               # uso exclusivo                 20
  header_arquivo << complemento_header                  # complemento do arquivo        29
  header_arquivo
end

#monta_segmento_p(pagamento, nro_lote, sequencial) ⇒ Object



151
152
153
154
155
156
157
158
159
160
161
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/santander.rb', line 151

def monta_segmento_p(pagamento, nro_lote, sequencial)
  segmento_p = ''
  #                                                             # DESCRICAO                             TAMANHO
  segmento_p += cod_banco # codigo banco                          3
  segmento_p << nro_lote.to_s.rjust(4, '0')                     # lote de servico                       4
  segmento_p << '3'                                             # tipo de registro                      1
  segmento_p << sequencial.to_s.rjust(5, '0')                   # num. sequencial do registro no lote   5
  segmento_p << 'P'                                             # cod. segmento                         1
  segmento_p << ' '                                             # uso exclusivo                         1
  segmento_p << pagamento.identificacao_ocorrencia              # cod. movimento remessa                2
  segmento_p << agencia.to_s.rjust(4, '0')                      # agencia                               4
  segmento_p << digito_agencia.to_s                             # dv agencia                            1
  segmento_p << complemento_p(pagamento)                        # informacoes da conta                  34
  segmento_p << codigo_carteira                                 # codigo da carteira                    1
  segmento_p << forma_cadastramento                             # forma de cadastro do titulo           1
  segmento_p << tipo_documento                                  # tipo de documento                     1
  segmento_p << emissao_boleto                                  # identificaco emissao                  1
  segmento_p << distribuicao_boleto                             # indentificacao entrega                1
  segmento_p << formata_documento_ou_numero(pagamento, 15)      # uso exclusivo                         4
  segmento_p << pagamento.data_vencimento.strftime('%d%m%Y')    # data de venc.                         8
  segmento_p << pagamento.formata_valor(15)                     # valor documento                       15
  segmento_p << ''.rjust(5, '0')                                # agencia cobradora                     5
  segmento_p << dv_agencia_cobradora                            # dv agencia cobradora                  1
  segmento_p << especie_titulo                                  # especie do titulo                     2
  segmento_p << aceite                                          # aceite                                1
  segmento_p << pagamento.data_emissao.strftime('%d%m%Y')       # data de emissao titulo                8
  segmento_p << pagamento.tipo_mora                             # cod. do mora                          1
  segmento_p << data_mora(pagamento)                            # data mora                             8
  segmento_p << pagamento.formata_valor_mora(15)                # valor mora                            15
  segmento_p << codigo_desconto(pagamento)                      # cod. do desconto                      1
  segmento_p << pagamento.formata_data_desconto('%d%m%Y')       # data desconto                         8
  segmento_p << pagamento.formata_valor_desconto(15)            # valor desconto                        15
  segmento_p << pagamento.formata_valor_iof(15)                 # valor IOF                             15
  segmento_p << pagamento.formata_valor_abatimento(15)          # valor abatimento                      15
  segmento_p << formata_documento_ou_numero(pagamento)          # identificacao titulo empresa          25
  segmento_p << pagamento.codigo_protesto                       # cod. para protesto                    1
  segmento_p << pagamento.dias_protesto.to_s.rjust(2, '0')      # dias para protesto                    2
  segmento_p << '3'                                             # cod. para baixa                       1
  segmento_p << '0'                                             # zero fixo                             1
  segmento_p << '00'                                            # dias para baixa                       2
  segmento_p << '00'                                            # cod. da moeda                         2
  segmento_p << ''.rjust(11, ' ')                               # uso exclusivo                         11
  segmento_p
end

#monta_segmento_q(pagamento, nro_lote, sequencial) ⇒ Object



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

def monta_segmento_q(pagamento, nro_lote, sequencial)
  segmento_q = ''                                               # CAMPO                                TAMANHO
  segmento_q += cod_banco                                       # codigo banco                         3
  segmento_q << nro_lote.to_s.rjust(4, '0')                     # lote de servico                      4
  segmento_q << '3'                                             # tipo de registro                     1
  segmento_q << sequencial.to_s.rjust(5, '0')                   # num. sequencial do registro no lote  5
  segmento_q << 'Q'                                             # cod. segmento                        1
  segmento_q << ' '                                             # uso exclusivo                        1
  segmento_q << pagamento.identificacao_ocorrencia              # cod. movimento remessa               2
  segmento_q << pagamento.identificacao_sacado(false)           # tipo insc. sacado                    1
  segmento_q << pagamento.documento_sacado.to_s.rjust(15, '0')  # documento sacado                     14
  segmento_q << pagamento.nome_sacado.format_size(40)           # nome cliente                         40
  segmento_q << pagamento.endereco_sacado.format_size(40)       # endereco cliente                     40
  segmento_q << pagamento.bairro_sacado.format_size(15)         # bairro                               15
  segmento_q << pagamento.cep_sacado[0..4]                      # cep                                  5
  segmento_q << pagamento.cep_sacado[5..7]                      # sufixo cep                           3
  segmento_q << pagamento.cidade_sacado.format_size(15)         # cidade                               15
  segmento_q << pagamento.uf_sacado                             # uf                                   2
  segmento_q << pagamento.identificacao_avalista(false)         # identificacao do sacador             1
  segmento_q << pagamento.documento_avalista.to_s.rjust(15, '0') # documento sacador                    15
  segmento_q << pagamento.nome_avalista.format_size(40)         # nome avalista                        40
  segmento_q << ''.rjust(12, '0')                               # Reservado (uso Branco)               12
  segmento_q << ''.rjust(19, ' ')                               # Reservado (uso Branco)               19
  segmento_q
end

#nome_bancoObject



73
74
75
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 73

def nome_banco
  'BANCO SANTANDER'.ljust(30, ' ')
end

#uso_exclusivo_bancoObject



110
111
112
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 110

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

#uso_exclusivo_empresaObject



114
115
116
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 114

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

#versao_layout_arquivoObject



57
58
59
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 57

def versao_layout_arquivo
  '040'
end

#versao_layout_loteObject



61
62
63
# File 'lib/brcobranca/remessa/cnab240/santander.rb', line 61

def versao_layout_lote
  '030'
end