# frozen_string_literal: true module Brcobranca module Boleto # Banco do Nordeste class BancoNordeste < Base # REQUERIDO: digito verificador da conta corrente attr_accessor :digito_conta_corrente validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.' validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.' validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.' validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.' validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.' # Nova instancia do Banco do Nordeste # @param (see Brcobranca::Boleto::Base#initialize) def initialize(campos = {}) campos = { carteira: '21' }.merge!(campos) super(campos) end # Codigo do banco emissor (3 dígitos sempre) # # @return [String] 3 caracteres numéricos. def banco '004' end # Número da conta corrente # @return [String] 7 caracteres numéricos. def conta_corrente=(valor) @conta_corrente = valor.to_s.rjust(7, '0') if valor end # Número sequencial utilizado para identificar o boleto. # @return [String] 7 caracteres numéricos. def nosso_numero=(valor) @nosso_numero = valor.to_s.rjust(7, '0') if valor end # Dígito verificador do nosso número. # @return [String] 1 caracteres numéricos. def nosso_numero_dv nosso_numero.modulo11( multiplicador: (2..8).to_a, mapeamento: { 10 => 0, 11 => 0 } ) { |total| 11 - (total % 11) } end # Nosso número para exibir no boleto. # @return [String] # @example # boleto.nosso_numero_boleto #=> "0020572-9" def nosso_numero_boleto "#{nosso_numero}-#{nosso_numero_dv}" end # Agência + codigo do cedente do cliente para exibir no boleto. # @return [String] # @example # boleto.agencia_conta_boleto #=> "0059/189977-5" def agencia_conta_boleto "#{agencia}/#{conta_corrente}-#{digito_conta_corrente}" end # Segunda parte do código de barras. # 9(04) | Agência
# 9(08) | Conta corrente com DV
# 9(08) | Nosso Numero Com DV
# 9(02) | Carteira
# 9(03) | Zeros
# # @return [String] 25 caracteres numéricos. def codigo_barras_segunda_parte "#{agencia}#{conta_corrente}#{digito_conta_corrente}#{nosso_numero}#{nosso_numero_dv}#{carteira}000" end end end end