Class: Cuit

Inherits:
Object
  • Object
show all
Defined in:
lib/cuit.rb

Overview

Clase para validar y formatear CUIT (Clave Única de Identificación Tributaria) argentinas

Examples:

Crear una CUIT válida

cuit = Cuit.new('20228518310')
cuit.to_s # => '20-22851831-0'

Validar una CUIT

Cuit.valid?('20228518310') # => true
Cuit.valid?('123') # => false

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cuit) ⇒ Cuit

Inicializa una nueva instancia de CUIT

Examples:

Cuit.new('20228518310')
Cuit.new('20-22851831-0')
Cuit.new(20228518310)

Parameters:

  • cuit (String, Integer)

    La CUIT en cualquier formato válido

Raises:

  • (ArgumentError)

    si la CUIT no es válida



37
38
39
40
# File 'lib/cuit.rb', line 37

def initialize(cuit)
  @cuit = normalize_cuit(cuit)
  validate_cuit!
end

Class Method Details

.valid?(cuit) ⇒ Boolean

Valida si una CUIT es válida sin lanzar excepciones

Examples:

Cuit.valid?('20228518310') # => true
Cuit.valid?('123') # => false

Parameters:

  • cuit (String, Integer)

    La CUIT a validar

Returns:

  • (Boolean)

    true si la CUIT es válida, false en caso contrario



21
22
23
24
25
26
# File 'lib/cuit.rb', line 21

def self.valid?(cuit)
  new(cuit)
  true
rescue ArgumentError
  false
end

Instance Method Details

#==(other) ⇒ Boolean

Compara dos objetos Cuit

Parameters:

  • other (Cuit)

    Otra instancia de Cuit

Returns:

  • (Boolean)

    true si ambas CUIT son iguales



92
93
94
95
96
# File 'lib/cuit.rb', line 92

def ==(other)
  return false unless other.is_a?(Cuit)

  @cuit == other.instance_variable_get(:@cuit)
end

#check_digitInteger

Obtiene el dígito verificador

Examples:

Cuit.new('20228518310').check_digit # => 0

Returns:

  • (Integer)

    El último dígito de la CUIT



84
85
86
# File 'lib/cuit.rb', line 84

def check_digit
  @check_digit ||= @cuit[-1].to_i
end

#documentString Also known as: dni

Obtiene el número de documento

Examples:

Cuit.new('20228518310').document # => '22851831'

Returns:

  • (String)

    Los 8 dígitos centrales de la CUIT



74
75
76
# File 'lib/cuit.rb', line 74

def document
  @document ||= @cuit[2, 8]
end

#formattedString

Alias para to_s

Returns:

  • (String)

    La CUIT formateada



54
55
56
# File 'lib/cuit.rb', line 54

def formatted
  to_s
end

#hashInteger

Hash para usar en colecciones

Returns:

  • (Integer)

    Hash de la CUIT



101
102
103
# File 'lib/cuit.rb', line 101

def hash
  @cuit.hash
end

#to_sString

Formatea la CUIT con guiones

Examples:

Cuit.new('20228518310').to_s # => '20-22851831-0'

Returns:

  • (String)

    La CUIT formateada como ‘XX-XXXXXXXX-X’



48
49
50
# File 'lib/cuit.rb', line 48

def to_s
  "#{type_code}-#{document}-#{check_digit}"
end

#type_codeString Also known as: type

Obtiene el código de tipo de contribuyente

Examples:

Cuit.new('20228518310').type_code # => '20'

Returns:

  • (String)

    Los primeros dos dígitos de la CUIT



64
65
66
# File 'lib/cuit.rb', line 64

def type_code
  @type_code ||= @cuit[0, 2]
end