Hola, chicos,
¡Buenas noches!
En esta publicación, traeré una vez más una función para validar el registro estatal para todos los estados de Brasil, como ya lo había demostrado en mi publicación. Cómo validar el registro estatal usando la función T-SQL en SQL Server, pero en esta ocasión les traigo la función escrita en C#, para usar en sus proyectos CLR en la base de datos SQL Server o incluso en proyectos de desarrollo C#, sin tener nada que ver con el CLR o SQL Server y sin necesidad de importar librerías externas.
La validación del registro estatal es muy importante para quienes emiten facturas, para las financieras, los bancos y el comercio en general y esta información debe ser válida y completa, según las normas de Sefaz y Sintegra.
Pensé que sería genial compartir esta solución C# en CLR, porque su rendimiento es mucho mejor que la función T-SQL y el código puede estar más organizado y ser más fácil de entender.
Ejemplos de uso de la función.
-- Validando inscrição estadual da Bahia
SELECT
CLR.dbo.fncValida_Inscricao_Estadual('BA', '055540903'),
CLR.dbo.fncValida_Inscricao_Estadual('BA', '045540903')
-- Validando inscrição estadual do Espírito Santo
SELECT
CLR.dbo.fncValida_Inscricao_Estadual('ES', '355206196'),
CLR.dbo.fncValida_Inscricao_Estadual('ES', '355206197')
-- Validando inscrição estadual de São Paulo
SELECT
CLR.dbo.fncValida_Inscricao_Estadual('SP', '556261170177'),
CLR.dbo.fncValida_Inscricao_Estadual('SP', '56261170177')
Resultados:

Código fuente de la función de validación
Ahora que he mostrado lo fácil que es validar el registro estatal para cualquier estado de Brasil, demostraré el código fuente, escrito en C#, listo para copiar y pegar en su proyecto CLR y usarlo a partir de consultas en SQL Server:
Ver el código fuente de la funciónusing System;
using System.Data.SqlTypes;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlBoolean fncValida_Inscricao_Estadual(SqlString Ds_UF, SqlString Ds_Inscricao_Estadual)
{
if (Ds_UF.IsNull || Ds_Inscricao_Estadual.IsNull)
return false;
if (Ds_UF.Value.Length != 2)
return false;
if (Ds_Inscricao_Estadual.Value.Length == 0)
return false;
var pUF = Ds_UF.Value;
var strOrigem = Ds_Inscricao_Estadual.Value.Trim().Replace(".", "").Replace("-", "").Replace("/", "");
if ((strOrigem.Trim().ToUpper() == "ISENTO"))
return true;
try
{
switch (pUF.ToUpper())
{
case "AC":
return fncValida_Inscricao_Estadual_AC(strOrigem);
case "AL":
return fncValida_Inscricao_Estadual_AL(strOrigem);
case "AM":
return fncValida_Inscricao_Estadual_AM(strOrigem);
case "AP":
return fncValida_Inscricao_Estadual_AP(strOrigem);
case "BA":
return fncValida_Inscricao_Estadual_BA(strOrigem);
case "CE":
return fncValida_Inscricao_Estadual_CE(strOrigem);
case "DF":
return fncValida_Inscricao_Estadual_DF(strOrigem);
case "ES":
return fncValida_Inscricao_Estadual_ES(strOrigem);
case "GO":
return fncValida_Inscricao_Estadual_GO(strOrigem);
case "MA":
return fncValida_Inscricao_Estadual_MA(strOrigem);
case "MT":
return fncValida_Inscricao_Estadual_MT(strOrigem);
case "MS":
return fncValida_Inscricao_Estadual_MS(strOrigem);
case "MG":
return fncValida_Inscricao_Estadual_MG(strOrigem);
case "PA":
return fncValida_Inscricao_Estadual_PA(strOrigem);
case "PB":
return fncValida_Inscricao_Estadual_PB(strOrigem);
case "PE":
return fncValida_Inscricao_Estadual_PE(strOrigem);
case "PI":
return fncValida_Inscricao_Estadual_PI(strOrigem);
case "PR":
return fncValida_Inscricao_Estadual_PR(strOrigem);
case "RJ":
return fncValida_Inscricao_Estadual_RJ(strOrigem);
case "RN":
return fncValida_Inscricao_Estadual_RN(strOrigem);
case "RO":
return fncValida_Inscricao_Estadual_RO(strOrigem);
case "RR":
return fncValida_Inscricao_Estadual_RR(strOrigem);
case "RS":
return fncValida_Inscricao_Estadual_RS(strOrigem);
case "SC":
return fncValida_Inscricao_Estadual_SC(strOrigem);
case "SE":
return fncValida_Inscricao_Estadual_SE(strOrigem);
case "SP":
return fncValida_Inscricao_Estadual_SP(strOrigem);
case "TO":
return fncValida_Inscricao_Estadual_TO(strOrigem);
default:
return false;
}
}
catch (Exception e)
{
return false;
}
}
private static bool fncValida_Inscricao_Estadual_AC(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 13 || strOrigem.Substring(0, 2) != "01")
return false;
var strBase = strOrigem.Trim();
if (strBase.Substring(0, 2) != "01") return false;
var intSoma = 0;
var intPeso = 4;
var intValor = 0;
for (var intPos = 1; (intPos <= 11); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPeso == 1) intPeso = 9;
intSoma += intValor * intPeso;
intPeso--;
}
var intResto = (intSoma % 11);
intSoma = 0;
strBase = (strOrigem.Trim() + "000000000000").Substring(0, 12);
intPeso = 5;
for (var intPos = 1; (intPos <= 12); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPeso == 1) intPeso = 9;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % 11);
var strDigito2 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 12) + strDigito2);
return (strBase2 == strOrigem);
}
private static bool fncValida_Inscricao_Estadual_AL(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9 || strOrigem.Substring(0, 2) != "24")
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
if ((strBase.Substring(0, 2) != "24")) return false;
var intSoma = 0;
var intPeso = 9;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intSoma += intValor * intPeso;
intPeso--;
}
intSoma = (intSoma * 10);
var intResto = (intSoma % 11);
var strDigito1 = ((intResto == 10) ? "0" : Convert.ToString(intResto)).Substring((((intResto == 10) ? "0" : Convert.ToString(intResto)).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_AM(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
var intPeso = 9;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intSoma += intValor * intPeso;
intPeso--;
}
var intResto = (intSoma % 11);
var strDigito1 = intSoma < 11 ? (11 - intSoma).ToString() : ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return (strBase2 == strOrigem);
}
private static bool fncValida_Inscricao_Estadual_AP(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intPeso = 9;
if (strBase.Substring(0, 2) != "03") return false;
strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
int intValor;
for (var intPos = 1; (intPos <= 8); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intSoma += intValor * intPeso;
intPeso--;
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_BA(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9 && strOrigem.Length != 8)
return false;
var strBase = "";
switch (strOrigem.Length)
{
case 8:
strBase = (strOrigem.Trim() + "00000000").Substring(0, 8);
break;
case 9:
strBase = (strOrigem.Trim() + "00000000").Substring(0, 9);
break;
}
var intSoma = 0;
int intValor;
var intPeso = 0;
int intResto;
var strDigito1 = "";
var strDigito2 = "";
var strBase2 = "";
#region Validação 8 dígitos
if (strBase.Length == 8)
{
if ((("0123458".IndexOf(strBase.Substring(0, 1), 0, StringComparison.OrdinalIgnoreCase) + 1) > 0))
{
for (var intPos = 1; (intPos <= 6); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPos == 1) intPeso = 7;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % 10);
strDigito2 = ((intResto == 0) ? "0" : Convert.ToString((10 - intResto))).Substring((((intResto == 0) ? "0" : Convert.ToString((10 - intResto))).Length - 1));
strBase2 = strBase.Substring(0, 7) + strDigito2;
if (strBase2 == strOrigem)
{
intSoma = 0;
intPeso = 0;
for (var intPos = 1; (intPos <= 7); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPos == 7)
intValor = int.Parse(strBase.Substring((intPos), 1));
if (intPos == 1) intPeso = 8;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % 10);
strDigito1 = ((intResto == 0) ? "0" : Convert.ToString((10 - intResto))).Substring((((intResto == 0) ? "0" : Convert.ToString((10 - intResto))).Length - 1));
strBase2 = (strBase.Substring(0, 6) + strDigito1 + strDigito2);
return strBase2 == strOrigem;
}
return false;
}
if ((("679".IndexOf(strBase.Substring(0, 1), 0, StringComparison.OrdinalIgnoreCase) + 1) > 0))
{
intSoma = 0;
for (var intPos = 1; (intPos <= 6); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPos == 1) intPeso = 7;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % 11);
strDigito2 = ((intResto == 0) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto == 0) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
strBase2 = strBase.Substring(0, 7) + strDigito2;
if (strBase2 == strOrigem)
{
intSoma = 0;
intPeso = 0;
for (var intPos = 1; (intPos <= 7); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPos == 7)
intValor = int.Parse(strBase.Substring((intPos), 1));
if (intPos == 1) intPeso = 8;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % 11);
strDigito1 = ((intResto == 0) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto == 0) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
strBase2 = (strBase.Substring(0, 6) + strDigito1 + strDigito2);
return strBase2 == strOrigem;
}
return false;
}
}
#endregion
#region Validação 9 dígitos
if (strBase.Length == 9)
{
var modulo = (("0123458".IndexOf(strBase.Substring(1, 1), 0, StringComparison.OrdinalIgnoreCase) + 1) > 0) ? 10 : 11;
intSoma = 0;
for (var intPos = 1; (intPos <= 7); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPos == 1) intPeso = 8;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % modulo);
if (modulo == 11)
strDigito2 = ((intResto == 0 || intResto == 1) ? "0" : Convert.ToString((modulo - intResto))).Substring((((intResto == 0 || intResto == 1) ? "0" : Convert.ToString((modulo - intResto))).Length - 1));
else
strDigito2 = ((intResto == 0) ? "0" : Convert.ToString((modulo - intResto))).Substring((((intResto == 0) ? "0" : Convert.ToString((modulo - intResto))).Length - 1));
strBase2 = strBase.Substring(0, 8) + strDigito2;
if (strBase2 == strOrigem)
{
intSoma = 0;
intPeso = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
if (intPos == 8)
intValor = int.Parse(strBase.Substring((intPos), 1));
if (intPos == 1) intPeso = 9;
intSoma += intValor * intPeso;
intPeso--;
}
intResto = (intSoma % modulo);
if (modulo == 11)
strDigito1 = ((intResto == 0 || intResto == 1) ? "0" : Convert.ToString((modulo - intResto))).Substring((((intResto == 0 || intResto == 1) ? "0" : Convert.ToString((modulo - intResto))).Length - 1));
else
strDigito1 = ((intResto == 0) ? "0" : Convert.ToString((modulo - intResto))).Substring((((intResto == 0) ? "0" : Convert.ToString((modulo - intResto))).Length - 1));
strBase2 = (strBase.Substring(0, 7) + strDigito1 + strDigito2);
return strBase2 == strOrigem;
}
return false;
}
#endregion
return false;
}
private static bool fncValida_Inscricao_Estadual_CE(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length > 9)
return false;
while (strOrigem.Length <= 8)
strOrigem = "0" + strOrigem;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
var intValor = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor > 9))
intValor = 0;
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_DF(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 13 || strOrigem.Substring(0, 3) != "073")
return false;
var strBase = (strOrigem.Trim() + "0000000000000").Substring(0, 13);
var intSoma = 0;
var intPeso = 2;
var intValor = 0;
for (var intPos = 11; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 9))
intPeso = 2;
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 11) + strDigito1);
intSoma = 0;
intPeso = 2;
for (var intPos = 12; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 9))
intPeso = 2;
}
intResto = (intSoma % 11);
var strDigito2 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
strBase2 = (strBase.Substring(0, 12) + strDigito2);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_ES(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = strOrigem.Trim();
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_GO(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
if ((("10,11,15".IndexOf(strBase.Substring(0, 2), 0, StringComparison.OrdinalIgnoreCase) + 1) <= 0))
return false;
var intSoma = 0;
var strDigito1 = "";
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
switch (intResto)
{
case 0:
strDigito1 = "0";
break;
case 1:
var intNumero = int.Parse(strBase.Substring(0, 8));
strDigito1 = (((intNumero >= 10103105) && (intNumero <= 10119997)) ? "1" : "0").Substring(((((intNumero >= 10103105) && (intNumero <= 10119997)) ? "1" : "0").Length - 1));
break;
default:
strDigito1 = Convert.ToString((11 - intResto)).Substring((Convert.ToString((11 - intResto)).Length - 1));
break;
}
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_MA(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9 || strOrigem.Substring(0, 2) != "12")
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_MT(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length < 9)
return false;
while (strOrigem.Length <= 11)
strOrigem = "0" + strOrigem;
var strBase = (strOrigem.Trim() + "0000000000").Substring(0, 10);
var intSoma = 0;
var intPeso = 2;
for (var intPos = 10; intPos >= 1; intPos = (intPos + -1))
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 9))
intPeso = 2;
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 10) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_MS(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9 || strOrigem.Substring(0, 2) != "28")
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_MG(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 13)
return false;
if (strOrigem.Substring(0, 2).ToUpper() == "PR")
return true;
var strBase = (strOrigem.Trim() + "0000000000000").Substring(0, 13);
var strBase2 = strBase.Substring(0, 3) + "0" + strBase.Substring(3, 9);
var intNumero = 1;
var intSoma = 0;
for (var intPos = 0; intPos < 12; intPos++)
{
if (int.Parse(strBase2.Substring(intPos, 1)) * intNumero >= 10)
intSoma += (int.Parse(strBase2.Substring(intPos, 1)) * intNumero) - 9;
else
intSoma += int.Parse(strBase2.Substring(intPos, 1)) * intNumero;
intNumero = intNumero + 1;
if (intNumero == 3)
intNumero = 1;
}
intNumero = (int)((Math.Floor((Convert.ToDecimal(intSoma) + 10) / 10) * 10) - intSoma);
if (intNumero % 10 == 0)
intNumero = 0;
if (intNumero != Convert.ToInt32(strOrigem.Substring(11, 1)))
return false;
intNumero = 3;
intSoma = 0;
for (var intPos = 0; intPos < 12; intPos++)
{
intSoma += int.Parse(strOrigem.Substring(intPos, 1)) * intNumero;
intNumero = intNumero - 1;
if (intNumero == 1)
intNumero = 11;
}
intNumero = 11 - (intSoma % 11);
if (intNumero >= 10)
intNumero = 0;
return intNumero == Convert.ToInt32(strOrigem.Substring(12, 1));
}
private static bool fncValida_Inscricao_Estadual_PA(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9 || strOrigem.Substring(0, 2) != "15")
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_PB(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
int intValor;
for (var intPos = 1; (intPos <= 8); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor > 9))
intValor = 0;
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_PE(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "00000000000000").Substring(0, 14);
var intSoma = 0;
var intPeso = 2;
int intValor;
for (var intPos = 7; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 9))
intPeso = 2;
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor >= 10))
intValor = 0;
if (intValor != Convert.ToInt32(strOrigem.Substring(7, 1)))
return false;
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
var strBase2 = (strBase.Substring(0, 7) + strDigito1);
if (strBase2 != strOrigem.Substring(0, 8))
return false;
intSoma = 0;
intPeso = 2;
for (var intPos = 8; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 9))
intPeso = 2;
}
intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor >= 10))
intValor = 0;
return intValor.ToString() == strOrigem.Substring(8, 1);
}
private static bool fncValida_Inscricao_Estadual_PI(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_PR(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 10)
return false;
var strBase = (strOrigem.Trim() + "0000000000").Substring(0, 10);
var intSoma = 0;
var intPeso = 2;
int intValor;
for (var intPos = 8; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 7))
intPeso = 2;
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
intSoma = 0;
intPeso = 2;
for (var intPos = 9; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase2.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 7))
intPeso = 2;
}
intResto = (intSoma % 11);
var strDigito2 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
strBase2 = (strBase2 + strDigito2);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_RJ(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 8)
return false;
var strBase = (strOrigem.Trim() + "00000000").Substring(0, 8);
var intSoma = 0;
var intPeso = 2;
for (var intPos = 7; (intPos >= 1); intPos = (intPos + -1))
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 7))
intPeso = 2;
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 7) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_RN(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
var strBase = "";
switch (strOrigem.Length)
{
case 9:
strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
break;
case 10:
strBase = (strOrigem.Trim() + "000000000").Substring(0, 10);
break;
}
var intSoma = 0;
if ((strBase.Substring(0, 2) == "20") && strBase.Length == 9)
{
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
intSoma = (intSoma * 10);
var intResto = (intSoma % 11);
var strDigito1 = ((intResto > 9) ? "0" : Convert.ToString(intResto)).Substring((((intResto > 9) ? "0" : Convert.ToString(intResto)).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
if (strBase.Length == 10)
{
intSoma = 0;
for (var intPos = 1; (intPos <= 9); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (11 - intPos));
intSoma = (intSoma + intValor);
}
intSoma = (intSoma * 10);
var intResto = (intSoma % 11);
var strDigito1 = ((intResto > 10) ? "0" : Convert.ToString(intResto)).Substring((((intResto > 10) ? "0" : Convert.ToString(intResto)).Length - 1));
var strBase2 = (strBase.Substring(0, 9) + strDigito1);
return strBase2 == strOrigem;
}
return false;
}
private static bool fncValida_Inscricao_Estadual_RO(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 14)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var strBase2 = strBase.Substring(3, 5);
var intSoma = 0;
int intValor;
for (var intPos = 1; (intPos <= 5); intPos++)
{
intValor = int.Parse(strBase2.Substring((intPos - 1), 1));
intValor = (intValor * (7 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor > 9))
intValor = (intValor - 10);
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_RR(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9 || strOrigem.Substring(0, 2) != "24")
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = intValor * intPos;
intSoma += intValor;
}
var intResto = (intSoma % 9);
var strDigito1 = Convert.ToString(intResto).Substring((Convert.ToString(intResto).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_RS(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 10 || Convert.ToInt32(strOrigem) > 467)
return false;
var strBase = (strOrigem.Trim() + "0000000000").Substring(0, 10);
var intSoma = 0;
var intPeso = 2;
var intValor = 0;
for (var intPos = 9; (intPos >= 1); intPos = (intPos + -1))
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 9))
intPeso = 2;
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor > 9))
intValor = 0;
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
var strBase2 = (strBase.Substring(0, 9) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_SC(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_SE(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 9)
return false;
var strBase = (strOrigem.Trim() + "000000000").Substring(0, 9);
var intSoma = 0;
int intValor;
for (var intPos = 1; (intPos <= 8); intPos++)
{
intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
intValor = (11 - intResto);
if ((intValor > 9))
intValor = 0;
var strDigito1 = Convert.ToString(intValor).Substring((Convert.ToString(intValor).Length - 1));
var strBase2 = (strBase.Substring(0, 8) + strDigito1);
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_SP(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
string strBase;
string strBase2;
int intSoma;
int intPeso;
if ((strOrigem.Substring(0, 1) == "P"))
{
strBase = (strOrigem.Trim() + "0000000000000").Substring(0, 13);
intSoma = 0;
intPeso = 1;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso == 2))
intPeso = 3;
if ((intPeso == 9))
intPeso = 10;
}
var intResto = (intSoma % 11);
var strDigito1 = Convert.ToString(intResto).Substring((Convert.ToString(intResto).Length - 1));
strBase2 = (strBase.Substring(0, 9) + (strDigito1 + strBase.Substring(10, 3)));
}
else
{
strBase = (strOrigem.Trim() + "000000000000").Substring(0, 12);
intSoma = 0;
intPeso = 1;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso == 2))
intPeso = 3;
if ((intPeso == 9))
intPeso = 10;
}
var intResto = (intSoma % 11);
var strDigito1 = Convert.ToString(intResto).Substring((Convert.ToString(intResto).Length - 1));
strBase2 = (strBase.Substring(0, 8) + (strDigito1 + strBase.Substring(9, 2)));
intSoma = 0;
intPeso = 2;
for (var intPos = 11; (intPos >= 1); intPos = (intPos + -1))
{
var intValor = int.Parse(strBase.Substring((intPos - 1), 1));
intValor = (intValor * intPeso);
intSoma = (intSoma + intValor);
intPeso = (intPeso + 1);
if ((intPeso > 10))
intPeso = 2;
}
intResto = (intSoma % 11);
var strDigito2 = Convert.ToString(intResto).Substring((Convert.ToString(intResto).Length - 1));
strBase2 = (strBase2 + strDigito2);
}
return strBase2 == strOrigem;
}
private static bool fncValida_Inscricao_Estadual_TO(string Ds_Inscricao_Estadual)
{
var strOrigem = Ds_Inscricao_Estadual;
if (strOrigem.Length != 11 || strOrigem.Substring(2, 2) != "01" || strOrigem.Substring(2, 2) != "02" || strOrigem.Substring(2, 2) != "03" || strOrigem.Substring(2, 2) != "99")
return false;
var strBase = (strOrigem.Trim() + "00000000000").Substring(0, 11);
var strBase2 = (strBase.Substring(0, 2) + strBase.Substring(4, 6));
var intSoma = 0;
for (var intPos = 1; (intPos <= 8); intPos++)
{
var intValor = int.Parse(strBase2.Substring((intPos - 1), 1));
intValor = (intValor * (10 - intPos));
intSoma = (intSoma + intValor);
}
var intResto = (intSoma % 11);
var strDigito1 = ((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Substring((((intResto < 2) ? "0" : Convert.ToString((11 - intResto))).Length - 1));
strBase2 = (strBase.Substring(0, 10) + strDigito1);
return strBase2 == strOrigem;
}
}
Si aún no sabes qué es el CLR y cómo utilizar funciones escritas en C# (.NET) por la base de datos SQL Server, entérate más accediendo a mi post Introducción a SQL CLR (Common Language Runtime) en SQL Server
¡Eso es todo, amigos!
¡Hasta el próximo post!
Dirceu Resende
Arquitecto de Bases de Datos y BI · Microsoft MVP · MCSE, MCSA, MCT, MTA, MCP.
Comentários (0)
Carregando comentários…