9

Validación de CIF, NIF y NIE

Posted by touzas on abr 21, 2009 in Programación

En un post anterior los enlaces a las descargas de las Dll no funcionan, así que aquí os posteo el código que utilizo:

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace confVars {
public class validaciones {
public static Boolean validaNIFCIF(string data) {
if (data == null) return false;
if (data == String.Empty) return false;
if (Char.IsLetter(data, 0) && data.Substring(0, 1).ToUpper() == “X”)
data = data.Substring(1, data.Length – 1);

if (data.Length < 8) return false;

if (Char.IsLetter(data, 0)) {
if (new Regex(“[A-Za-z][0-9]{7}[A-Za-z0-9]{1}$”).Match(data).Success) {
return true;
//return validadCIF(data);
} else
return false;
} else if (Char.IsLetter(data, data.Length – 1)) {
//Valida NIF
if (new Regex(“[0-9]{8}[A-Za-z]“).Match(data).Success || new Regex(“[0-9]{7}[A-Za-z]“).Match(data).Success)
return validarNIF(data);
else
return false;
}
return true;
}

private static string getLetra(int id) {
Dictionary<int, String> letras = new Dictionary<int, string>();
letras.Add(0, “T”);
letras.Add(1, “R”);
letras.Add(2, “W”);
letras.Add(3, “A”);
letras.Add(4, “G”);
letras.Add(5, “M”);
letras.Add(6, “Y”);
letras.Add(7, “F”);
letras.Add(8, “P”);
letras.Add(9, “D”);
letras.Add(10, “X”);
letras.Add(11, “B”);
letras.Add(12, “N”);
letras.Add(13, “J”);
letras.Add(14, “Z”);
letras.Add(15, “S”);
letras.Add(16, “Q”);
letras.Add(17, “V”);
letras.Add(18, “H”);
letras.Add(19, “L”);
letras.Add(20, “C”);
letras.Add(21, “K”);
letras.Add(22, “E”);
return letras[id];
}

private static bool validarNIF(string data) {
if (data == String.Empty)
return false;
try {
String letra;
letra = data.Substring(data.Length – 1, 1);
data = data.Substring(0, data.Length – 1);
int nifNum = int.Parse(data);
int resto = nifNum % 23;
string tmp = getLetra(resto);
if (tmp.ToLower() != letra.ToLower())
return false;
} catch (Exception ex) {
Console.WriteLine(ex.Message);
return false;
}
return true;
}

private static bool validadCIF(string data) {
try {
int pares = 0;
int impares = 0;
int suma;
string ultima;
int unumero;
string[] uletra = new string[] { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”, “M”, “N”, “0″ };
string[] fletra = new string[] { “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J” };
int[] fletra1 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
string xxx;

/*
* T      P      P      N  N  N  N  N  C
Siendo:
T: Letra de tipo de Organización, una de las siguientes: A,B,C,D,E,F,G,H,K,L,M,N,P,Q,S.
P: Código provincial.
N: Númeración secuenial dentro de la provincia.
C: Dígito de control, un número ó letra: Aó1,Bó2,Có3,Dó4,Eó5,Fó6,Gó7,Hó8,Ió9,Jó0.
*
*
A.    Sociedades anónimas.
B.    Sociedades de responsabilidad limitada.
C.    Sociedades colectivas.
D.    Sociedades comanditarias.
E.    Comunidades de bienes y herencias yacentes.
F.    Sociedades cooperativas.
G.    Asociaciones.
H.    Comunidades de propietarios en régimen de propiedad horizontal.
I.    Sociedades civiles, con o sin personalidad jurídica.
J.    Corporaciones Locales.
K.    Organismos públicos.
L.    Congregaciones e instituciones religiosas.
M.    Órganos de la Administración del Estado y de las Comunidades Autónomas.
N.    Uniones Temporales de Empresas.
O.    Otros tipos no definidos en el resto de claves.

*/
data = data.ToUpper();

ultima = data.Substring(8, 1);

int cont = 1;
for (cont = 1; cont < 7; cont++) {
xxx = (2 * int.Parse(data.Substring(cont++, 1))) + “0″;
impares += int.Parse(xxx.ToString().Substring(0, 1)) + int.Parse(xxx.ToString().Substring(1, 1));
pares += int.Parse(data.Substring(cont, 1));
}

xxx = (2 * int.Parse(data.Substring(cont, 1))) + “0″;
impares += int.Parse(xxx.Substring(0, 1)) + int.Parse(xxx.Substring(1, 1));

suma = pares + impares;
unumero = int.Parse(suma.ToString().Substring(suma.ToString().Length – 1, 1));
unumero = 10 – unumero;
if (unumero == 10) unumero = 0;

if ((ultima == unumero.ToString()) || (ultima == uletra[unumero - 1]))
return true;
else
return false;

} catch (Exception ex) {
Console.WriteLine(ex.Message);
return false;
}
}
}
}

Espero que os sirva,

Etiquetas: , , ,

 
3

Montar una unidad remota a través de SSH

Posted by touzas on abr 8, 2009 in Linux

1º -Instalamos los paquetes:
aptitude install sshfs fuse-utils

2º- Cargamos el módulo de fuse y lo metemos en /etc/modules para que cargue al inicio:
modprobe fuse
echo fuse >> /etc/modules

3º- Damos permiso al usuario que montará la carpeta y no olvidemos que estos permisos serán efectivos cuando cierre la sesión y vuelva a logearse en el sistema (e mi caso touzas):
addgroup touzas fuse

4º- Creamos un directorio en donde montaremos el directorio remoto e introducimos el comando para montarlo:
mkdir /media/directorio_local
$ sshfs usuario_remoto@servidor_remoto:/directorio_remoto /media/directorio_local

Cuidado porque las dos últimas instrucciones se ejecutan como usuario normal y no como root.

Listo!!

Etiquetas:

 
4

Mis sources.list

Posted by touzas on abr 1, 2009 in Linux

Con estos sources tengo todo mi equipo correctamente configurado y funcionando a las mil maravillas.

Linux desarrolo 2.6.26-1-amd64 #1 SMP Fri Mar 13 17:46:45 UTC 2009 x86_64 GNU/Linux

deb http://ftp.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib

#Adobe Reader
deb http://www.debian-multimedia.org/ stable main

#Deja dup – Copias de seguridad
deb http://ppa.launchpad.net/deja-dup-team/ubuntu intrepid main
deb-src http://ppa.launchpad.net/deja-dup-team/ubuntu intrepid main

#Enlightment e17
deb http://debian.alphagemini.org/ unstable main
deb-src http://debian.alphagemini.org/ unstable main

#KDE4
deb http://kde4.debian.net/ lenny main

#Compiz fusion
deb http://download.tuxfamily.org/shames/debian-sid/desktopfx/unstable/ ./
deb ftp://ftp.debian.nl/debian/ lenny contrib main

#Docky
deb http://ppa.launchpad.net/do-core/ppa/ubuntu intrepid main
deb-src http://ppa.launchpad.net/do-core/ppa/ubuntu intrepid main

Copyright © 2010 Javier Lema. All Rights Reserved.
Theme by Lorelei Web Design.