FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Procedimiento Calculo RFC
Hola que tal, me pregunto si habra un procedimiento o si se pueda realizar un procedimiento en firebird para el calculo de un RFC...
|
#2
|
||||
|
||||
sacame de mi ignorancia... que es un cálculo de RFC, sera el hermano de KFC y de Pizza Hut?
__________________
Dulce Regalo que Satanas manda para mi..... |
#3
|
|||
|
|||
Hola...
Si el compañero es Mexicano, se refiere al Registro Federal de Causantes, el cual te proporciona Hacienda para todo lo relacionado con el Fisco... Saludos... |
#4
|
|||
|
|||
exactamente eso es el RFC (Registro Federal de Contribuyentes) que se obtiene de las siglas de los apellidos y nombre + la fecha de nacimiento y una homoclave...
|
#5
|
|||
|
|||
En esta pagina se puede calcular...
https://www.recaudanet.gob.mx/recaudanet/rfc.jsp y quiero realizar algo como eso en un procedimiento... |
#6
|
||||
|
||||
Hola amerika.
Confieso que quedé como oscarac cuando leí el título Mirá, busqué un poco y encontre esta página donde está el código para calcularlo desde un stored procedure (Posts #13 y #14). Como supondrás, no tengo idea si funciona, pero con probar no perdes nada... Un saludo y ojalá te sirva.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
||||
|
||||
Ese código es en T-SQL de Microsoft SQL Server, por lo que no va a funcionar directamente en Firebird, pero es bastante sencillo traducirlo al Transact SQL estandarizado de Firebird.
Si tienes algún problema o duda sobre como tratar alguna sentencia concreta, no dudes en preguntar. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#8
|
||||
|
||||
Hola guillotmarc.
Me había dado cuenta que no era código de Firebird, aunque no sabía que era de SQL Sever. Sin embargo no tengo idea si, una vez traducido, funcionará la lógica en sí del algorítmo. Lamentablemente va a tener que hacer la traducción y prueba para verificarlo, espero que no le sea una tarea estéril... Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
|||
|
|||
Cita:
donde dice: -INICIALZA VARIABLES SET NOMBRES = LTRIM(RTRIM(:NOMBRES_AUX)) SET APATERNO = LTRIM(RTRIM(:APATERNO_AUX)) SET AMATERNO = LTRIM(RTRIM(:AMATERNO_AUX)) SET T_NOMTOT =APATERNO+' '+AMATERNO+' '+NOMBRES esto si se puede asi en firebird, le e quitado los @ y hay otra palabra patindex no se a que se refiere.. SET NOMBRE1_LONGITUD = PATINDEX('% %',NOMBRES) |
#10
|
||||
|
||||
Vaya, pensaba que en Firebird solo concatenaba el operador ||, y que por tanto esa línea había que traducirla como :
T_NOMTOT = APATERNO || ' ' || AMATERNO || ' ' || NOMBRES Pero si dices que te funciona bien, entonces adelante. Cita:
http://msdn.microsoft.com/en-us/library/ms188395.aspx Deberías poder sustituirlo por : NOMBRE1_LONGITUD = position(' ', NOMBRES) La función POSITION se añadió en Firebird 2.1. Por lo tanto necesitas usar Firebird 2.1 o 2.5, para que esta línea funcione correctamente. Si usas una versión anterior de Firebird, entonces debes buscar una UDF que te brinde esta función (o similar), o bien, escribir un bucle recorriendo NOMBRES, para localizar donde está la primera cadena en blanco. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#11
|
|||
|
|||
hola que tal he intentado convertir el codio pero no mas no, me vota muchos errores de sintaxis....
me he topado con esto, de un funcion pero me marca error http://www.delphiaccess.com/forum/utilerias-22/udf-firebirdinterbase-(lazarus)/ error invalid request BLR at offset 79 function GENRFC is not defined module name or entrypoint could not be found |
#12
|
|||
|
|||
Nomas no veo por donde...
|
#13
|
|||
|
|||
especificamente estos son los errores que arroja.
Última edición por amerika111 fecha: 12-04-2012 a las 19:12:20. |
#14
|
||||
|
||||
Bueno, el primer error es que no encuentra la función POSITION.
Como te dije en el mensaje anterior, esta función solo está disponible en Firebird 2.1 o 2.5. Si utlizas Firebird 1.5 o 2.0, tendrías que actualizarte a una versión más moderna, o bien, utilizar una UDF que haga la misma acción (o bien sustituirlo por un bucle para localizar esa posición del primer espacio en blanco). Recuerda también que POSITION no es exactamente igual al PATINDEX de SQL Server, puesto que esta última función trabaja con expresiones regulares, y la función de Firebird no. Por eso la forma correcta de utilizarla es POSISTION(' ', variable) y no POSITION('% %', variable). Lo mejor es corregir los errores uno a uno (puesto que muchas veces algunos errores posteriores son causa del primero). Arregla primero esto, y ya nos contarás.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 10-08-2011 a las 10:03:45. |
#15
|
||||
|
||||
Respecto al segundo error (los IF, BEGIN, ELSE) simplemente viene provocado porqué en esta sección (línea 91) te falta un THEN :
Cita:
Cita:
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#16
|
|||
|
|||
Cita:
yo la he probado pero no me funciona no se si tenga que realizar un paso o algo asi para que funcione, este es el dll de la funcion DECLARE EXTERNAL FUNCTION GENRFC CSTRING(30), CSTRING(30), CSTRING(30), DATE RETURNS CSTRING(15) ENTRY_POINT 'GeneraRFC' MODULE_NAME 'Project1.dll'; y la libreria es project1.dll esa la coloque en la carpeta de firebird de udf.. |
#17
|
||||
|
||||
Hola.
Cita:
Ejplo. Esta sentencia : NOMBRE1_LONGITUD = position(' ', NOMBRES); Equivale a este bucle :
Finalmente, respecto a generar toda la función RFC en Delphi y utilizarla en Firebird mediante una UDF, te dejo un ejemplo de como hacer la DLL en Delphi para que pueda ser utilizada en Firebird. http://www.firebirdfaq.org/faq83/ Traducción automática de Google Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#18
|
|||
|
|||
Ofrecimiento ...
Amerika111:
Ofrezco mi humilde ayuda para codificar dicho procedimiento almacenado, siempre y cuando me hagas llegar el proceso por escrito (lo mas explicito que se pueda, así como también algunos casos típicos para ver que todo funciona correctamente), no quiero estar viendo el código en otros lenguajes y hacer suposiciones que no siempre resultan ciertas, ¿me explico?. Espero tu respuesta. Saludos, Gerardo Suárez Trejo |
#19
|
||||
|
||||
Cita:
El RFC es un identificador alfanumérico que se asigna en México a cada persona y se basa en los apellidos, nombre y fecha de nacimiento. Para fijar ideas, vamos a tomar esta persona ficticia: Apellido paterno: Del Real Apellido Materno: Anzures Nombre: José Antonio Fecha de nacimiento: 14 de abril de 1972 Su RFC será: Código:
REAA 720414 N9 4 Veamos por partes, como se calcula cada una: Letras Esta parte se forma con:
Ahora bien, deben tomarse en cuenta estas excepciones:
Aquí hay que notar, que estas reglas no son absolutas ni completas (pero son las oficiales). Por ejemplo, no indican qué hacer en caso de que el apellido paterno no contenga vocales internas, como ALBY, BYRD, ORMSBY. En alguna ocasión tuve la oportunidad de analizar los RFC de una base de datos relativamente amplia y observé que la excepción 4 en realidad es así: Primera letra y primera vocal interna del apellido y primera y segunda letra del nombre. En resumen, parece que en los casos de excepción, muchas veces depende del criterio del funcionario en turno que asigne el RFC oficial. Fecha En formato de seis diígitos: aammdd Homonimia
Dígito verificador
Algunas observaciones Como dije antes, el algoritmo en la parte de las letras es confuso. Al implementar hay que decidir qué hacer en los casos especiales (por ejemplo, poner una X en caso de no haber vocal interna del apellido paterno). Por otra parte, todas las letras de los nombres deben considerarse sin acentos de ningún tipo. Este algoritmo es únicamente para personas físicas (seres humanos) y no para personas morales (empresas). Desconozco si hay un documento oficial de Hacienda que describa el algoritmo, pero existe un documento oficial (en el cual yo me basé) en el IFAI (Instituto Federal de Acceso a la Información). Este documento pueden localizarlo entrando al sitio de INFOMEX buscando el folio: 0610100135506, que corresponde a la solicitud que alguien hizo para obtener esta información. Ahí pueden ver el documento de respuesta. Este documento también describe el algoritmo del RFC para personas morales. // Saludos Última edición por roman fecha: 12-08-2011 a las 06:25:23. |
#20
|
|||
|
|||
Rfc ...
Román:
Excelente, es justamente lo que necesitaba... de hecho ya empece .... creo que ya llevo la primera parte ... tuve que parar un rato (hay que ganarse el pan de cada día, je, je, je). Saludos, Gerardo Suárez Trejo P.D. Estoy indeciso en liberar la primera parte (de esta forma es más fácil hacer la depuración). ¿Hay alguien que se apunte para hacer las pruebas? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
condicionar un procedimiento dentro de otro procedimiento | yossi | Varios | 7 | 17-05-2010 10:47:14 |
Ayuda, como llamar a un procedimiento desde otro procedimiento? | Ariatna | Varios | 1 | 01-02-2005 04:05:35 |
error calculo en udf | marrullas | Firebird e Interbase | 0 | 02-11-2004 21:01:58 |
Calculo con un String | AMC | Varios | 7 | 14-09-2004 20:46:53 |
Calculo De Totales | PETERKANTROPUS | Tablas planas | 2 | 25-05-2004 03:06:14 |
|