Business-ES-NIF

 view release on metacpan or  search on metacpan

lib/Business/ES/NIF.pm  view on Meta::CPAN

package Business::ES::NIF;

# ABSTRACT: Validate Spanish NIF, NIE and CIF numbers


our $VERSION = '0.15';

use strict;
use warnings;

use Class::XSAccessor { accessors => [qw(error extra nif status type iso3166 provincia VIES vies_check vies_error)] };


use constant {
	      NIF_LETRAS => 'TRWAGMYFPDXBNJZSQVHLCKE',
	      CIF_LETRAS => 'JABCDEFGHI',
	      RE_CIF     => qr/^([ABCDEFGHJPQRUVNW])([0-9]{7})([0-9])$/,
	      RE_CIFe    => qr/^([SQPK])([0-9]{7})([A-J])$/,
	      RE_NIF     => qr/^([0-9]{8})([A-Z])$/,
	      RE_NIFe    => qr/^([KLM])([0-9]{7})([A-Z])$/,
	      RE_NIE     => qr/^([XYZ])([0-9]{7})([A-Z])$/
	     };

use constant NIE_PREFIX => { X => '0', Y => '1', Z => '2' };

use constant CIF_EXTRA => {
			   'A' => 'Sociedad Anonima - S.A',
			   'B' => 'Sociedad Limitada - S.L',
			   'C' => 'Sociedad Colectiva - S.C',
			   'D' => 'Sociedades comanditarias',
			   'E' => 'Comunidad de bienes y herencias',
			   'F' => 'Sociedades cooperativas',
			   'G' => 'Asociaciones',
			   'H' => 'Comunidaddes de propietarios',
			   'J' => 'Sociedades civiles',
			   'P' => 'Corporaciones locales',
			   'Q' => 'Organismos publicos',
			   'N' => 'Entidades extranjeras',
			   'R' => 'Congregaciones e instituciones religiosas',
			   'U' => 'Uniones temporales de epresas',
			   'V' => 'Otros tipos de sociedades',
			   'W' => 'Establecimientos permanentes de entidades no residentes en España'
			  };

use constant CIFe_EXTRA => {
			    'S' => 'Órganos de la Administración del Estado',
			    'Q' => 'Organismos autónomos o instituciones religiosas',
			    'P' => 'Corporaciones locales',
			    'K' => 'Formato antiguo (DNI sin letra de control)'
			   };

use constant PROVINCIAS => {
			    '00' => 'No Residente',
			    '01' => 'Álava',
			    '02' => 'Albacete', 
			    '03' => 'Alicante',
			    '04' => 'Almería',
			    '05' => 'Ávila',
			    '06' => 'Badajoz',
			    '07' => 'Islas Baleares',
			    '08' => 'Barcelona',
			    '09' => 'Burgos',
			    '10' => 'Cáceres',
			    '11' => 'Cádiz',
			    '12' => 'Castellón',
			    '13' => 'Ciudad Real',
			    '14' => 'Córdoba',
			    '15' => 'La Coruña',
			    '16' => 'Cuenca',
			    '17' => 'Gerona',
			    '18' => 'Granada',
			    '19' => 'Guadalajara',
			    '20' => 'Guipúzcoa',
			    '21' => 'Huelva',
			    '22' => 'Huesca',
			    '23' => 'Jaén',
			    '24' => 'León',
			    '25' => 'Lérida',
			    '26' => 'La Rioja',
			    '27' => 'Lugo',
			    '28' => 'Madrid',
			    '29' => 'Málaga',
			    '30' => 'Murcia',
			    '31' => 'Navarra',
			    '32' => 'Orense',
			    '33' => 'Asturias',
			    '34' => 'Palencia',
			    '35' => 'Las Palmas',
			    '36' => 'Pontevedra',
			    '37' => 'Salamanca',
			    '38' => 'Santa Cruz de Tenerife',
			    '39' => 'Cantabria',
			    '40' => 'Segovia',
			    '41' => 'Sevilla',
			    '42' => 'Soria',
			    '43' => 'Tarragona',
			    '44' => 'Teruel',
			    '45' => 'Toledo',
			    '46' => 'Valencia',
			    '47' => 'Valladolid',
			    '48' => 'Vizcaya',
			    '49' => 'Zamora',
			    '50' => 'Zaragoza',
			    '51' => 'Ceuta',
			    '52' => 'Melilla',
			    '53' => 'Alicante',         
			    '54' => 'Alicante',         
			    '55' => 'Gerona',           



( run in 1.366 second using v1.01-cache-2.11-cpan-ceb78f64989 )