lib/bbrcobranca/boleto/santander.rb in bbrcobranca-0.0.1 vs lib/bbrcobranca/boleto/santander.rb in bbrcobranca-0.0.2

- old
+ new

@@ -3,10 +3,12 @@ # @author Kivanio Barbosa # @author Ronaldo Araujo module Bbrcobranca module Boleto class Santander < Base # Banco Santander + attr_writer :codigo_barras, :nosso_numero_dv + validates_presence_of :convenio, message: 'não pode estar em branco.' validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.' validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.' validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.' @@ -15,10 +17,25 @@ def initialize(campos = {}) campos = { carteira: '102' }.merge!(campos) super(campos) end + def codigo_barras + instance_variable_get("@codigo_barras") || super + end + + def nosso_numero_dv + if instance_variable_get("@nosso_numero_dv") + instance_variable_get("@nosso_numero_dv").gsub(/\D/, '') + else + nosso_numero.modulo11( + multiplicador: (2..9).to_a, + mapeamento: { 10 => 0, 11 => 0 } + ) { |total| 11 - (total % 11) } + end + end + # Codigo do banco emissor (3 dígitos sempre) # # @return [String] 3 caracteres numéricos. def banco '033' @@ -39,18 +56,9 @@ # 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..9).to_a, - mapeamento: { 10 => 0, 11 => 0 } - ) { |total| 11 - (total % 11) } end # Nosso número para exibir no boleto. # @return [String] # @example