Class: Brcobranca::Remessa::Cnab400::Santander
- Defined in:
- lib/brcobranca/remessa/cnab400/santander.rb
Instance Attribute Summary collapse
-
#codigo_carteira ⇒ Object
Returns the value of attribute codigo_carteira.
-
#codigo_transmissao ⇒ Object
Código de Transmissão Consultar seu gerente para pegar esse código.
Attributes inherited from Base
#aceite, #agencia, #carteira, #conta_corrente, #digito_conta, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa
Instance Method Summary collapse
- #cod_banco ⇒ Object
-
#complemento ⇒ String
Complemento do header.
- #conta_padrao_novo? ⇒ Boolean
- #identificador_movimento_complemento ⇒ Object
-
#info_conta ⇒ String
Informacoes do Código de Transmissão.
-
#initialize(campos = {}) ⇒ Santander
constructor
A new instance of Santander.
-
#monta_detalhe(pagamento, sequencial) ⇒ String
Detalhe do arquivo.
- #monta_header ⇒ Object
-
#monta_trailer(sequencial) ⇒ String
Trailer do arquivo remessa.
- #movimento_complemento ⇒ Object
- #nome_banco ⇒ Object
-
#total_titulos ⇒ String
Valor total de todos os títulos.
-
#versao ⇒ String
Numero da versão da remessa.
-
#zeros ⇒ String
Zeros do header.
Methods inherited from Base
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.
19 20 21 22 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 19 def initialize(campos = {}) campos = { aceite: 'N', carteira: '101', codigo_carteira: '1' }.merge!(campos) super(campos) end |
Instance Attribute Details
#codigo_carteira ⇒ Object
Returns the value of attribute codigo_carteira.
11 12 13 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 11 def codigo_carteira @codigo_carteira end |
#codigo_transmissao ⇒ Object
Código de Transmissão Consultar seu gerente para pegar esse código. Geralmente está no e-mail enviado pelo banco.
9 10 11 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 9 def codigo_transmissao @codigo_transmissao end |
Instance Method Details
#cod_banco ⇒ Object
24 25 26 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 24 def cod_banco '033' end |
#complemento ⇒ String
Complemento do header
58 59 60 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 58 def complemento ''.ljust(275, ' ') end |
#conta_padrao_novo? ⇒ Boolean
201 202 203 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 201 def conta_padrao_novo? !conta_corrente.blank? && conta_corrente.length > 8 end |
#identificador_movimento_complemento ⇒ Object
189 190 191 192 193 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 189 def identificador_movimento_complemento return 'I' if conta_padrao_novo? ''.rjust(1, ' ') end |
#info_conta ⇒ String
Informacoes do Código de Transmissão
40 41 42 43 44 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 40 def info_conta # CAMPO TAMANHO # codigo_transmissao 20 codigo_transmissao end |
#monta_detalhe(pagamento, sequencial) ⇒ String
Detalhe do arquivo
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 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 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 99 def monta_detalhe(pagamento, sequencial) raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid? detalhe = '1' # identificacao transacao 9[01] detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo # tipo de identificacao da empresa 9[02] detalhe << documento_cedente.to_s.rjust(14, '0') # cpf/cnpj da empresa 9[14] detalhe << codigo_transmissao # Código de Transmissão 9[20] detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ') # identificacao do tit. na empresa X[25] detalhe << pagamento.nosso_numero.to_s.rjust(8, '0') # nosso numero 9[8] detalhe << pagamento.formata_data_segundo_desconto # data limite para o segundo desconto 9[06] detalhe << ''.rjust(1, ' ') # brancos X[1] detalhe << pagamento.codigo_multa # Com multa = 4, Sem multa = 0 9[1] detalhe << pagamento.formata_percentual_multa # Percentual multa por atraso % 9[6] detalhe << '00' # Unidade de valor moeda corrente = 00 9[2] detalhe << '0'.rjust(13, '0') # Valor do título em outra unidade 9[15] detalhe << ''.rjust(4, ' ') # brancos X[4] detalhe << pagamento.formata_data_multa # Data para cobrança de multa 9[6] # codigo da carteira # 1 = ELETRÔNICA COM REGISTRO # 3 = CAUCIONADA ELETRÔNICA # 4 = COBRANÇA SEM REGISTRO # 5 = RÁPIDA COM REGISTRO # (BLOQUETE EMITIDO PELO CLIENTE) 6 = CAUCIONADA RAPIDA # 7 = DESCONTADA ELETRÔNICA detalhe << codigo_carteira # codigo da carteira 9[01] # Código da ocorrência: # 01 = ENTRADA DE TÍTULO # 02 = BAIXA DE TÍTULO # 04 = CONCESSÃO DE ABATIMENTO # 05 = CANCELAMENTO ABATIMENTO # 06 = PRORROGAÇÃO DE VENCIMENTO # 07 = ALT. NÚMERO CONT.CEDENTE # 08 = ALTERAÇÃO DO SEU NÚMERO # 09 = PROTESTAR # 18 = SUSTAR PROTESTO detalhe << pagamento.identificacao_ocorrencia # identificacao ocorrencia 9[02] detalhe << pagamento.numero.to_s.rjust(10, '0') # numero do documento X[10] detalhe << pagamento.data_vencimento.strftime('%d%m%y') # data do vencimento 9[06] detalhe << pagamento.formata_valor # valor do documento 9[13] detalhe << cod_banco # codigo banco 9[03] detalhe << ''.rjust(5, '0') # agencia cobradora - deixar zero 9[05] # Espécie de documento: # 01 = DUPLICATA # 02 = NOTA PROMISSÓRIA # 03 = APÓLICE / NOTA DE SEGURO # 05 = RECIBO # 06 = DUPLICATA DE SERVIÇO # 07 = LETRA DE CAMBIO detalhe << pagamento.especie_titulo # Espécie de documento 9[02] detalhe << aceite # aceite (A/N) X[01] detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06] # Instrução cobrança # 00 = NÃO HÁ INSTRUÇÕES # 02 = BAIXAR APÓS QUINZE DIAS DO VENCIMENTO # 03 = BAIXAR APÓS 30 DIAS DO VENCIMENTO # 04 = NÃO BAIXAR # 06 = PROTESTAR (VIDE POSIÇÃO392/393) # 07 = NÃO PROTESTAR # 08 = NÃO COBRAR JUROS DE MORA detalhe << pagamento.cod_primeira_instrucao # primeira instrução 9[02] detalhe << pagamento.cod_segunda_instrucao # segunda instrução 9[02] detalhe << pagamento.formata_valor_mora # valor mora ao dia 9[13] detalhe << pagamento.formata_data_desconto # data limite para desconto 9[06] detalhe << pagamento.formata_valor_desconto # valor do desconto 9[13] detalhe << pagamento.formata_valor_iof # valor do iof 9[13] detalhe << pagamento.formata_valor_abatimento # valor do abatimento 9[13] detalhe << pagamento.identificacao_sacado # identificacao do pagador 9[02] detalhe << pagamento.documento_sacado.to_s.rjust(14, '0') # documento do pagador 9[14] detalhe << pagamento.nome_sacado.format_size(40) # nome do pagador X[40] detalhe << pagamento.endereco_sacado.format_size(40) # endereco do pagador X[40] detalhe << pagamento.bairro_sacado.format_size(12) # bairro do pagador X[12] detalhe << pagamento.cep_sacado # cep do pagador 9[08] detalhe << pagamento.cidade_sacado.format_size(15) # cidade do pagador X[15] detalhe << pagamento.uf_sacado # uf do pagador X[02] detalhe << pagamento.nome_avalista.format_size(30) # Sacador/Mensagens X[30] detalhe << ''.rjust(1, ' ') # Brancos X[1] detalhe << identificador_movimento_complemento # Identificador do Complemento X[1] detalhe << movimento_complemento # Complemento 9[2] detalhe << ''.rjust(6, ' ') # Brancos X[06] # Se identificacao_ocorrencia = 06 detalhe << pagamento.dias_protesto.rjust(2, '0') # Número de dias para protesto 9[02] detalhe << ''.rjust(1, ' ') # Brancos X[1] detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06] detalhe end |
#monta_header ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 70 def monta_header # CAMPO TAMANHO VALOR # tipo do registro [1] 0 # operacao [1] 1 # literal remessa [7] REMESSA # Código do serviço [2] 01 # cod. servico [15] COBRANCA # info. conta [20] # empresa mae [30] # cod. banco [3] # nome banco [15] # data geracao [6] formato DDMMAA # zeros [16] # complemento registro [275] # versao [3] # num. sequencial [6] 000001 "01REMESSA01COBRANCA #{info_conta}#{empresa_mae[0..29].to_s.ljust(30, ' ')}#{cod_banco}#{nome_banco}#{data_geracao}#{zeros}#{complemento}#{versao}000001" end |
#monta_trailer(sequencial) ⇒ String
Trailer do arquivo remessa
221 222 223 224 225 226 227 228 229 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 221 def monta_trailer(sequencial) # CAMPO TAMANHO VALOR # código registro [1] 9 # quant. documentos [6] # valor total titulos [13] # zeros [374] 0 # num. sequencial [6] "9#{sequencial.to_s.rjust(6, '0')}#{total_titulos}#{''.rjust(374, '0')}#{sequencial.to_s.rjust(6, '0')}" end |
#movimento_complemento ⇒ Object
195 196 197 198 199 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 195 def movimento_complemento return "#{conta_corrente[8]}#{digito_conta}" if conta_padrao_novo? ''.rjust(2, ' ') end |
#nome_banco ⇒ Object
28 29 30 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 28 def nome_banco 'SANTANDER'.format_size(15) end |
#total_titulos ⇒ String
Valor total de todos os títulos
209 210 211 212 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 209 def total_titulos total = format '%.2f', pagamentos.sum(&:valor) total.to_s.somente_numeros.rjust(13, '0') end |
#versao ⇒ String
Numero da versão da remessa
66 67 68 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 66 def versao '058' end |
#zeros ⇒ String
Zeros do header
50 51 52 |
# File 'lib/brcobranca/remessa/cnab400/santander.rb', line 50 def zeros ''.ljust(16, '0') end |