Project

valicuit

0.01
No commit activity in last 3 years
No release in over 3 years
A CUIT/CUIL validator for ActiveModel & Rails with multiple customizable options
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

ValiCUIT

Build Status Code Climate Test Coverage Issue Count

Un validador de CUIT/CUIL para ActiveModel & Rails.

Instalación

Lo de siempre... agregar esta línea en el Gemfile del proyecto:

gem 'valicuit'

Y, finalmente, ejecutar bundle install

Uso

Es un validador más. Dentro de cualquier modelo se especifica que un atributo X se valide con cuit (o cuil, es indistinto), de esta forma:

class Persona < ActiveRecord::Base
  validates :cuit, cuit: true  # Notar que también podría usarse cuil: true
end

Con esto, se dispone de validación por formato (por defecto 11 dígitos, sin separador) y por dígito verificador (con el algoritomo módulo 11)

Opciones adicionales

Se puede agregar la opción de incluir y validar un separador para los grupos que componen el CUIT/CUIL, de esta forma:

class Persona < ActiveRecord::Base
  validates :cuit, cuit: { separator: '-' }
end

Adicionalmente se puede validar que la parte del género y del DNI del CUIT se corresponda con dichos campos propios en el mismo modelo.

Por ejemplo, para el caso del DNI podría ser:

class Persona < ActiveRecord::Base
  validates :cuit, cuit: { dni_compatible: :documento }
end

Y eso verificaría que la parte central del CUIT (que corresponde al DNI) sea igual al valor del campo 'documento' (qué, en dicho modelo, representaría el DNI de la persona)

Análogamente se cumple lo mismo para el género:

class Persona < ActiveRecord::Base
  validates :cuit, cuit: { gender_compatible: { field: :genero, male: 'M', female: 'F', company: 'C' } }
end

Y se especifica el campo que representa el género en el modelo, más los valores para validar tales géneros.

Notar que la opción company, para validar CUITs de empresas/instituciones, es opcional (pasará la validación directamente en caso de no estar especificado) mientras que las opciones male, female y field no lo son.

Tests

Se corren con RSpec.

Agradecimientos

Contribuciones

  1. Clonar el proyecto.
  2. Crear un feature branch (git checkout -b mi-nuevo-feature).
  3. Commitear los cambios realizados (git commit -am 'Agrego algo nuevo o mejoro algo').
  4. Pushear el feature (git push origin mi-nuevo-feature).
  5. Crear un Pull Request.