Class: Brcobranca::Remessa::Cnab400::Citibank
- Defined in:
- lib/brcobranca/remessa/cnab400/citibank.rb
Instance Attribute Summary collapse
-
#portfolio ⇒ Object
Identificação do portfolio.
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 (no caso do Citibank, sao apenas espacos em branco).
-
#info_conta ⇒ String
Informacoes da conta corrente do cedente.
-
#initialize(campos = {}) ⇒ Citibank
constructor
Nova instancia do Citibank.
-
#monta_detalhe(pagamento, sequencial) ⇒ String
Detalhe do arquivo.
- #nome_banco ⇒ Object
Methods inherited from Base
#data_geracao, #gera_arquivo, #monta_header, #monta_trailer
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 = {}) ⇒ Citibank
Nova instancia do Citibank
17 18 19 20 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 17 def initialize(campos = {}) campos = { aceite: 'N', carteira: '1' }.merge!(campos) super(campos) end |
Instance Attribute Details
#portfolio ⇒ Object
Identificação do portfolio. Necessário consultar o Citibank para informações referentes à conta cobrança e carteira do cliente.
9 10 11 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 9 def portfolio @portfolio end |
Instance Method Details
#cod_banco ⇒ Object
22 23 24 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 22 def cod_banco '745' end |
#complemento ⇒ String
Complemento do header (no caso do Citibank, sao apenas espacos em branco)
45 46 47 48 49 50 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 45 def complemento # CAMPO TAMANHO # Densidade de gravação 5 # Unidade de densidade de gravação 3 '01600BPI'.rjust(294, ' ') end |
#info_conta ⇒ String
Informacoes da conta corrente do cedente
34 35 36 37 38 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 34 def info_conta # CAMPO TAMANHO # portfolio 20 portfolio.rjust(20, ' ') end |
#monta_detalhe(pagamento, sequencial) ⇒ String
Detalhe do arquivo
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 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 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 61 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 << portfolio # portfolio X[20] detalhe << pagamento.documento_ou_numero.to_s.ljust(25) # identificacao do tit. na empresa X[25] detalhe << pagamento.especie_titulo # espécie do título 9[02] - 00 = DMI – Duplicata Mercantil por Indicação, 02 = DM – Duplicata Mercantil detalhe << pagamento.nosso_numero.to_s.rjust(12, '0') # nosso numero 9[12] detalhe << ''.rjust(6, ' ') # brancos X[06] detalhe << pagamento.formata_data_segundo_desconto # data limite para o segundo desconto 9[06] detalhe << pagamento.formata_valor_segundo_desconto # valor do segundo desconto 9[13] detalhe << '000' # carne 9[03] - Válido apenas quando o campo 148/149 for igual a 03 detalhe << '000' # parcela 9[03] - Só preencher se o banco for imprimir e enviar e for um carnê detalhe << carteira # codigo da carteira X[01] - Código 1 = Cobrança Simples, Código 2 = Cobrança Caucionada 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] # 01 = Banco imprime (apenas boletos simples não personalizados) 03 = Banco imprime de forma personalizada (boletos simples, personalizados e carnês) # 07 = Banco não imprime # 08 = Impressão via WEB (boleto por e-mail) sem impressão banco 09 = Impressão via WEB (boleto por e-mail) com impressão banco Observações: # - Quando código 03, o cliente deverá entrar em contato com o banco, antes de enviar o arquivo, para definir a personalização do boleto. # - Quando código 07, o campo 065/076, deverá ter o NOSSO NÚMERO atribuído pelo cliente. # Se o portfolio do cliente for cobrança flexível: # 04 = Título flex com boleto impresso via web (boleto por e-mail), aceita pagamento parcial # 06 = Título flex com boleto impresso via web (boleto por e-mail), não aceita pagamento parcial # (No caso de Cobrança Flexível, o campo 065/076 – NOSSO NÚMERO, no arquivo remessa, deve ser preenchido pelo cliente, # ou será preenchido no banco após a entrada do arquivo no sistema de cobrança, visto que os códigos utilizados serão 04 ou 06 no campo Tipo de Emissão.) # (Para a modalidade de Cobrança Flexível, a opção de envio por e- mail deverá ser um parâmetro cadastral.) detalhe << '07' # Tipo de Emissão X[02] detalhe << aceite # aceite (A/N) X[01] detalhe << pagamento.data_emissao.strftime('%d%m%y') # data de emissao 9[06] # 00 = SEM INSTRUÇÂO: após o vencimento, o título sofrerá a instrução presente no cadastro do cliente. Não havendo instruções no cadastro do cliente, o título será baixado automaticamente após 60 dias e o pagamento, após vencimento, poderá ser restrito ao Citibank # 06 = PROTESTAR: quando esta instrução for dada também deverá ser preenchida a posição 159/160 # 07 = NEGATIVAR: instrução utilizada para envio de título para negativação na Serasa. Quando esta for informada, também deverá ser preenchida as posições 159/160. # IMPORTANTE: essa instrução somente poderá ser utilizada após assinatura de contrato específico para o produto. # 09 = DEVOLVER: esta é a instrução de BAIXA quando esta instrução for dada também deverá ser preenchida a posição 159/160 # 10 = SUSTAR PROTESTO: instrução utilizada para títulos que NÃO estejam em cartório detalhe << '00' # Instrução para o título 9[02] # Quando posição 157/158 (Instrução para título) conter instrução 06 ou 09, # este campo deverá conter a quantidade de dias válidos para execução da instrução. detalhe << '00' # Número de dias válidos para 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] # Este campo tem 3 finalidades: # a) mensagem da empresa impressa no boleto pelo banco # (para isto na primeira posição deve haver um # asterisco); # b) sem o asterisco, este campo será o nome do Sacador/Avalista, quando preenchido; # c) Se posição 148/149 (Tipo de Emissão) estiver com código 08 ou 09, este campo será o e-mail do sacado. detalhe << pagamento.nome_avalista.format_size(40) # Sacador/Mensagens X[40] detalhe << ''.rjust(2, ' ') # Brancos X[06] detalhe << '9' # moeda 9[01] - Código 9 = REAIS Código 5 = Dólar detalhe << sequencial.to_s.rjust(6, '0') # numero do registro no arquivo 9[06] detalhe end |
#nome_banco ⇒ Object
26 27 28 |
# File 'lib/brcobranca/remessa/cnab400/citibank.rb', line 26 def nome_banco 'CITIBANK'.ljust(15, ' ') end |