Dinaup.Validations
Validaciones listas para usar de datos fiscales y geográficos: NIF/VAT, VIES, AEAT, códigos postales, provincias y países desde tu código .NET.
Cuando estás construyendo lógica fiscal, es clave asegurarte de que los datos que recibes del usuario son coherentes. Dinaup ofrece validaciones listas para usar, divididas en dos áreas principales.
Validaciones de geolocalización
IsSpanishPostalCode(string postalCode)
Verifica si un código postal pertenece al sistema de códigos postales español. Acepta exactamente 5 dígitos válidos.
Console.WriteLine(ValidationUtils.IsSpanishPostalCode("03201")); // True
Console.WriteLine(ValidationUtils.IsSpanishPostalCode("99999")); // FalseGetSpainProvinceFromPostalCode(string postalCode)
Devuelve el nombre de la provincia asociada a un código postal español. Si no se reconoce, devuelve una cadena vacía.
Console.WriteLine(ValidationUtils.GetSpainProvinceFromPostalCode("28013")); // MadridNormalizeLocationName(string name)
Convierte nombres de ciudades regionales o en lenguas cooficiales al nombre estándar español.
Console.WriteLine(ValidationUtils.NormalizeLocationName("elx")); // Elche
Console.WriteLine(ValidationUtils.NormalizeLocationName("Bilbo")); // BilbaoSearchCountry(string query)
Busca países por nombre (en inglés o español), ISO2. Devuelve una lista de coincidencias parciales.
var results = ValidationUtils.SearchCountry("ES");
foreach (var c in results)
{
Console.WriteLine($"{c.ISO2} - {c.ESName} / {c.ENName}");
}
// ES - España / SpainGetCountry(string countryNameOrCode)
Obtiene un país concreto por ISO o nombre. Útil cuando ya se tiene el identificador o el país escrito completo.
var spain1 = ValidationUtils.GetCountry("ES");
Console.WriteLine($"{spain1.ISO2} - {spain1.ENName}"); // ES - Spain
var spain2 = ValidationUtils.GetCountry("España");
Console.WriteLine($"{spain2.ISO2} - {spain2.ENName}"); // ES - SpainIsEuCountryCode(string isoCode)
Devuelve true si el código ISO de país pertenece a la Unión Europea. La comparación no distingue mayúsculas.
Console.WriteLine(ValidationUtils.IsEuCountryCode("DE")); // True
Console.WriteLine(ValidationUtils.IsEuCountryCode("US")); // FalseValidaciones de NIF / VAT
IsVIESVatFormat(string vatID)
Valida si el NIF está en un formato aceptado por el sistema VIES. Solo valida estructura, no existencia.
Console.WriteLine(ValidationUtils.IsVIESVatFormat("ES123456789")); // True
Console.WriteLine(ValidationUtils.IsVIESVatFormat("US123456789")); // FalseIsSpanishBusinessNIFFormat(string vatID)
Valida si un NIF tiene formato de empresa española. Es una validación débil pensada para autocompletado o sugerencias.
Console.WriteLine(ValidationUtils.IsSpanishBusinessNIFFormat("B12345678")); // True
Console.WriteLine(ValidationUtils.IsSpanishBusinessNIFFormat("X1234567")); // FalseCheckVATViesAsync(vatID) (async)
Consulta a VIES si un NIF está dado de alta como operador intracomunitario. Se invoca sobre un cliente Dinaup conectado. Devuelve un bool? con tres estados: true (alta confirmada), false (no es operador, formato inválido o país no comunitario) y null (VIES no concluyente).
bool? esIntracomunitario = await dinaupClient.CheckVATViesAsync("ESB09689647");
Console.WriteLine(esIntracomunitario); // TrueCheckVATAEATAsync(vatID, name) (async)
Consulta a la AEAT si el NIF y el nombre coinciden. Útil para validación de facturas en España. Se invoca sobre un cliente Dinaup conectado y devuelve un CheckVATAEATResponse con Identificado, Nif, Nombre y Resultado.
var result = await dinaupClient.CheckVATAEATAsync("74381925V", "Angel Albaladejo Belmonte");
Console.WriteLine(result.Identificado); // TrueClassifyVatTerritoriality(vatID, countryCode, postalCode, isVies)
Clasifica la operación fiscal según el lugar de tributación del IVA: nacional, exportación, intracomunitaria, etc.
var tipo = ValidationUtils.ClassifyVatTerritoriality("B12345678", "ES", "03201", false);
Console.WriteLine(tipo); // National
var tipo2 = ValidationUtils.ClassifyVatTerritoriality("DE267602842", "DE", "81549", true);
Console.WriteLine(tipo2); // IntraCommunityTipos posibles:
- Unknown
- Simplified
- National
- OutOfVatTerritory
- IntraCommunity
- OneStopShop
- Export