Bueno ahora esta de moda la facturación electrónica en nuestro querido Perú, y hemos tenido varios problemas en cuanto al tema de la validación del RUC en caso de factura, en especial cuando los WebServices de Sunat cae, y no tenemos como comunicar el documento, y saber si esta rechazado o no y por lo tanto tampoco podemos podemos entregar la copia impresa, ya que si es rechazado seria una copia impresa carente de valor, pero bueno en si he hecho encontré varias maneras de poder validar el número de RUC.
Algoritmo de validación
Como todos sabemos nuestro números de RUC tienen once dígitos, de los cuales los dos primeros dígitos identifican el tipo de contribuyente que es 10 (Persona natural) y 20 (Persona Jurídica) también encontré con 16 y 17 que bueno viene de otros tiempos, ahora bien en caso de persona natural el numero 10 es seguido por el numero de dni del contribuyente, y las personas jurídicas 20 es seguido por un correlativo, pero el ultimo dígito es un dígito de validación es para poder determinar si el número de RUC es correcto o no, ahora como se hace este calculo es de la siguiente manera
bueno la formula es la siguiente:
SUMA = (R0 x 5)+(R1 x 4)+(R2 x 3)+(R3 x 2)+(R4 x 7)+(R5 x 6)+(R6 x 5)+(R7 x 4)+(R8 x 3)+ (R9 x 2)
MODU = SUMA % 11
RESP = 11 – MODU
Donde:
- R0 …. R9 son los 10 dígitos de nuestro número de RUC
- RESP es el código validador,
Existe casos que RESP es mayor que 10, en este caso debes restarle 10, para que quede un solo digito
Padrón Reducido
Para nuestra buena suerte SUNAT todos los días realiza la publicación de un fichero ZIP que contiene todos los números de RUC, así como de sus establecimientos anexos, que de verdad es todo lo que necesitas para poder realizar tu facturación electrónica, reduciendo increíblemente tu porcentaje de error acá les dejo el link en:
Ahora cual es el problema, y les explico cual es, en si este padrón es generado cada 24 horas, esto significa que si el contribuyente al cual queremos facturar se encuentra en NO HABIDO, y ese cambio se realizo en menos de 24 horas en este padrón no lo vas a encontrar, este es un gran problema, si el sistema de emisión electrónica no realiza los reportes en tiempo real, (ya sea por diseño o porque simplemente el ws de SUNAT esta abajo) ya que cuando lo reportemos saltara el error y no nos quedara de otra que indicarle al cliente (el cual ya se fue con el bien que cancelo) que el RUC que nos entrego no se encuentra habido, contablemente esto es un problema dado a que tenemos un ingreso el cual no fue declarado, y nuestros amigos de SUNAT su salida es que hagan la validación directamente en la pagina de SUNAT (No entienden que el objetivo es automatizar todo)
Las posibilidades que pase esto son muy bajas, piensen que justo caiga el sistema de SUNAT y que justo el contribuyente que fue declarado como NO HABIDO, compre en nuestra tienda, de verdad de que pase son remotas, incluso a mi criterio comparadas con la TINKA; pero si me toco a mi, por eso hemos implementado la política que una factura no se entrega si es que SUNAT no acepto la factura primero, pero en ambientes de facturación masiva estas posibilidades suben por lo cual siempre hay que tenerlo en cuenta.
Web Services
Ahora, con el Patrón reducido que la base de datos pesa como 1.5Gb y en aumento, en un formato zip mas o menos 400Mb, es un texto plano separados por | (pipes), para hacer más fácil el trabajo con él, ya usuarios más expertos podrán realizar una tarea que lo descarge, lo descomprima y lo coloque en nuestra base de datos, pero de tener una tabla que pesa más de 1.5Gb y que se deberá de actualizar todos los dias y aproximado a las ocho de la mañana, hará que cualquier administrador de base de datos se ponga a pensar en la necesidad, actualmente en internet existen diferentes servicios los cuales permiten hacer peticiones solamente del RUC por medio de servicios web las mas populares:
- Nuvefact (consultas ilimitadas por 59 S/. anuales, por web gratis)
- Insite (hay que solicitar acceso al momento nadie me respondió)
Bueno en si los dos están orientados para programadores pero ninguno es gratuito, el segundo se nota que no tiene como base el patrón reducido, por lo que me hace dar cuenta que debe estar usando otro acceso para poder ingresar a la información publica, la verdad que al momento no se como pueden estar haciendo eso, ya que hable con SUNAT y actualmente no tienen ningún método disponible para el publico pueda acceder a esa información lo que me hace pensar acerca de la legitimidad de esta información, y por lo tanto si no se puede validar el origen no podemos concluir si esta es fiel o no, ya que puede ser un CD comprado en Wilson y pasado a SQL, por lo que entre estos dos me quedo con el de NuveFact que dicho sea de paso es un PSE autorizado de SUNAT.
Conclusión
En si tenemos tres métodos los cuales cada uno tiene sus pos y sus contras, la validación de RUC por el dígito es básico para cualquier programador para generar un primer filtro, antes de hacer cualquier consulta ya sea a base de datos o a un web services, pero entre los otros dos ninguno cumple con el sueño ideal de un programador en este rubro, por lo siguiente,
Acerca del patrón reducido, de verdad saben lo es que es procesar un archivo de texto plano que pesa 1.5Gb, esto sin contar los recursos que va a tener que usarse para pasarlo a SQL, y todo lo que conlleva eso (backups, tiempo de procesamiento, etc etc etc)
Ahora el uso de webservices, solo funciona si es que estamos conectados a internet, pero en nuestro lindo Perú cada vez que el tractor pasa por Pisco y rompe la fibra óptica (clásica floreada de telefónica del Peru cada vez que el Sur del Perú se queda sin internet) estar amarrado a que estemos siempre online para poder facturar también tiene sus deficiencias, a menos que tengas tus lineas rebundantes cosa que no es lo más común en nuestro medio, pero a mi parecer si se pudiera validar el origen de la información de Insite, es más que suficiente para hacerlo.
Realmente el sueño ideal para mis escenarios, es que SUNAT pueda brindar este servicio web, al final de cuentas es para poder general mejor nuestra emisión electrónica, pero no se porque siempre la hace difícil al contribuyente, dado a que esta solución es casi imposible de lograr es que deberemos de conformarnos con una de las dos anteriores dependiendo el escenario que se adecue mas a nosotros.
Tengo una aplicacion comercial que necesita bajar la informacion de posibles clientes es posible sacar mas informacion de contacto, ya que lo unico que entrega el fichero de sunat es la direccion, algo asi como correo electronicos para poder spamear
bueno creo que la solución que buscas no la encontraras por acá, sino en un CD en Wilson,
Encontre un web service que apunta a servidores de ehg.pe pero necesita un token de verificación, tu crees que me puedas ayudar con eso?
Bueno la verdad, es que debes de ser cliente de ehg para acceder a esos ws