FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Validar DNI/CIF
Hola a tod@s.
Estoy teniendo un pequeño problema y es que en los programas de facturación, sobre todo los que generan datos para el sii, no controlo si el dni/cif es correcto en caso de ser extranjero. El operario se equivoca al teclearlo, luego no entra en el sii y no hay forma de buscar al cliente si son clientes de paso. En el caso de dnis/cifs nacionales no es problema porque hay formas de calcular si el número es correcto pero mi pregunta es si hay alguna forma de hacer una consulta a algún sitio (webservice) en el que se pueda introducir un dni/cif extranjero, especificando el país, y que te diga si es correcto. Gracias y un saludo.
__________________
Be water my friend. |
#2
|
||||
|
||||
Pues algo muy complicado lo que requieres.
Me encontré una página (https://expinterweb.mites.gob.es/rea/pub/consulta.htm) que válida empresas acreditadas, pero solo de España, yo vivo en México, así que la página para tal fin seria esta asi que...no lo sé, tendrías q tener un catálogo de páginas de cada país para consultar los datos...algo complicado si tus volúmenes de empresas o personas extranjeras son muchas. Talvez tendrías que ir elaborando tu propio catálogo de empresas con sus identificadores empresariales para cada cliente/pais e ir almacenando los datos, claro, con el riesgo de que tu usuario ingrese mal los datos consultados, que se reduciría el margen de error si COPIA y PEGA esos datos de las páginas. En fin, espero te sirvan mis comentarios. Saludos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#3
|
||||
|
||||
Aquí está para Europa.
https://ec.europa.eu/taxation_customs/tin/#/check-tin
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Todos los comentarios son instructivos mRoman, gracias por el tuyo.
Gracias también a ti Casimiro, le echaré un vistazo a esa web. El problema es que "mi tema" se queda cojo porque, aunque los intracomunitarios sean muchos (quizás la mayoría), por el sur de España se mueve mucho marroquí (por ejemplo) y mucho inglés que ya no son comunitarios así que aunque le de solución parcial sigo teniendo el problema. A ver qué se me ocurre y/o si tiene solución este asunto. Gracias de nuevo y un saludo.
__________________
Be water my friend. |
#5
|
|||
|
|||
¿Realmente el SII te echa para atrás los ID de extranjeros?
Creo recordar que bastaba con identificar el país y en el ID marcarlo como "otra identificacion" Dudo que Hacienda pueda comprobar que un ID extranjero sea correcto como puede ser con los NIF que aparte del digito de control ya sabe el nombre. |
#6
|
||||
|
||||
Pues ahora que lo dices... después de poner el post me quedé dandole vueltas precisamente a ese detalle. Igual los únicos que controlan son los comunitarios y no los extranjeros. Es un tema que tengo que confirmar.
Gracias y un saludo.
__________________
Be water my friend. |
#7
|
|||
|
|||
Validador nif de la agencia tibutaria (AEAT)
Requisitos:
- Importar la wsdl: "https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2.wsdl" - Tener capicom.dll registrada (regsvr32 C:\...\capicom.dll) y - Importar el componente capicom.DLL creará el fuente CAPICOM_TBL - Open ssl. (libeay.pas y openSsslUtils.pas). Un form "TMain", un TEdit "edNif", un TEdit "edNombre" un TEdit "edCertificado", un TmaskEdit "mskCertPass" un boton "btnValidarESNif" opcional: un TEdit "edResultado", un TEdit "edDNIValidado", un TEdit "edNombreValidado" uses Código:
uses // Windows API Winapi.Windows, Winapi.Messages, WinApi.WinInet, // System System.SysUtils, System.Variants, System.Classes, System.IniFiles, System.UITypes, System.Win.ComObj, System.Net.URLClient, System.Net.HttpClient, System.Net.HttpClientComponent, // Rest - JSON REST.Json, // Soap Soap.SOAPHTTPClient, Soap.SOAPHTTPTrans, Soap.InvokeRegistry, Soap.Rio, // aeat NIF VAlidador VNifV21; // Módulo creado al importar el wsdl CAPICOM_TLB, // Unidad creada al importar la dll de capicom. libeay32, OpenSSLUtils; Código:
type PCCERT_CONTEXT = type Pointer; Código:
function TMain.validarESNif(): VNifV2Sal; var nifValidatorWS: VNifV2; VNifV2Entrada: VNifV2Ent; VNifV2Salida: VNifV2Sal; contri: Contribuyente; HTTPRIO: THTTPRIO; begin HTTPRIO := THTTPRIO.create(self); HTTPRIO.HTTPWebNode.OnBeforePost := HTTPWebNode1BeforePost; nifValidatorWS := GetVNifV2(false, '', HTTPRIO); if nifValidatorWS <> nil then begin contri := Contribuyente.Create; contri.Nif := edDni.text; contri.Nombre := edNombre.text; setLength(VNifV2Entrada, 1); VNifV2Entrada[0] := contri; try VNifV2Salida := nifValidatorWS.VNifV2(VNifV2Entrada); except on E: EDOMParseError do ShowMessage('Sin respuesta: ' + #10 + #13 + E.message); end; end; result := VNifV2Salida; end; procedure TMain.HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); begin SetCertificate(trim(edCertificado.text), mskCertPass.text, Data); end; procedure TMain.IdSSLIOHandlerGetPassword(var Password: string); begin Password := mskCertPass.text; end; procedure TMain.btnValidarESNifClick(Sender: TObject); var VNifV2Salida: VNifV2Sal; begin VNifV2Salida := validarESNif(); if VNifV2Salida <> nil then begin edResultado.Text := VNifV2Salida[0].Resultado; edDNIValidado.Text := VNifV2Salida[0].Nif; edNombreValidado.Text := VNifV2Salida[0].Nombre; // No importa por que por la LODP no devuelven el nombre. Dejan lo que se envía. end else ShowMessage('No se ha podido validar el NIF: ' + edDni.Text); end; Última edición por iMia fecha: 30-01-2023 a las 11:59:59. |
#8
|
||||
|
||||
Gracias iMia.
¿Podrías decirnos qué tipos de documentos valida esto? Saludos.
__________________
Be water my friend. |
#9
|
|||
|
|||
Cita:
Valida que el NIF/nombre sean correctos (en España) Saludos Pd.: en genérico es es uso de un certificado con http, y con capicom, y no tener que pagar componentes de terceros (blackbox, inet, etc...) Última edición por iMia fecha: 30-01-2023 a las 12:51:20. |
#10
|
||||
|
||||
Creo que ninguno controlamos eso. Y ellos tampoco.
Veo ahora que [Garada] ya lo ha comentado.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 30-01-2023 a las 12:55:43. Razón: Añadir comentario sobre lo dicho por [Garada] |
#11
|
||||
|
||||
Perfecto.
Gracias a todos.
__________________
Be water my friend. |
#12
|
|||
|
|||
Hola iMia, grácias por compartir el código.
He conseguido recrear el programa grácias a la información que has aportado. Lo que no entiendo es como asignar el certificado que me interesa. Veo que llamas a la función SetCertificate(trim(edCertificado.text), mskCertPass.text, Data) pero me da error y no se si es una función propia tuya o de algún componente. Me puedes ayudar ? Grácias |
#13
|
|||
|
|||
Hola Serpic,
Tienes razón, no puse la función de asignación del certificado Ahí va..
Como se ve en el código inicial, hay que importar la libreria CAPICOM.DLL (y registrarla en cada equipo que se vaya a utilizar la app) y generar el TLB y así se pueden utilizar las constantes de CAPICOM Saludos... P.D.: Espero no tengas los problemas que estoy experimentando en alqunas máquinas. en el Hilo: https://www.clubdelphi.com/foros/sho...d.php?p=550756 Saludos. Última edición por iMia fecha: 16-03-2023 a las 09:34:23. |
#14
|
|||
|
|||
Cita:
la llamada de carga del certificado es incorrecta... deberia ser:
|
#15
|
|||
|
|||
Tambien da error a la compilar
__________________
SI UN PROBLEMA TIENE SOLUCION, YA NO ES UN PROBLEMA, Y SI NO LA TIENE PARA QUE PREOCUPARSE. |
#16
|
||||
|
||||
Para poder hacer operaciones intracomunitarias una empresa tiene que estar dada de alta en el VIES. Existe un servicio web para validar si una empresa esta o no dentra del VIES https://ec.europa.eu/taxation_custom...vat-validation es una manera de validar si un cif intracomunitario es correcto o no.
|
#17
|
||||
|
||||
Pongo el código por si a alguien le interesa.
|
#18
|
||||
|
||||
Gracias compañero.
__________________
Be water my friend. |
#19
|
||||
|
||||
Nosotros hasta ahora lanzábamos la página para validar manualmente, pero no está de más tener accesible la API. Gracias.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#20
|
|||
|
|||
El Wsdl ...
https:// ec.europa.eu/taxation_customs/vies/checkVatTestService.wsdl |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Validar un XML | r_e_g_2007 | Varios | 0 | 05-11-2011 09:00:21 |
validar RFC.. | tebre | Varios | 12 | 06-01-2009 19:48:55 |
Validar | Elite237 | OOP | 1 | 29-07-2007 00:25:30 |
Validar Nif | Colgueit | OOP | 12 | 10-05-2006 03:50:28 |
validar en qry | alcides | SQL | 2 | 06-01-2004 19:11:19 |
|