Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #2101  
Antiguo 11-07-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Por si os sirve como lo he hecho yo:
Aunque tengo certificados instalados en cada tpv, si se pegan un mes caducados me da un poco igual, por que solo lo uso para una última comprobación de los números de identificación fiscal y nombres de clientes contra el servicio de la AEAt, y si están caducados a pasado al menos por la comprobación del cif.
A ver,
1. Genero la factura con su XML HASH, QR y encadenamiento en el tpv
2.Envio el XML verifactu,el xml face y el pdf de la factura a un servidor que es el que se va a encargar de mandarlo COMO TERCERO a verifactu. Con lo cual he encadenado en un SIF y he enviado desde otro punto.
2.El control de errores lo lleva ese servidor que me envía un email con el reporte de Oks o KOs cada cierto tiempo.
3. Si el servidor central detecta que un tpv lleva 30horas sin enviar, me lo incluye en el reporte (durante 1 semana cada dia,mas tiempo es innecesario indica que se ha dejado de usar o ya es conocido el problema) de que ese tpv de ese comercio no está enviando desde tal fecha a tal hora.
4. Si un tpv empieza a enviar cosas extrañas, duplicadas, saltos de numeración etc, me manda un reporte inmediato.
Llevo con este diseño desde 2020 y me va del carajo
Algo de tranquilidad da.
Hola,buenos dias, ¿podrias comentar como haces la comprobacion de nombres y NIF, en el servicio?
  #2102  
Antiguo 11-07-2024
jlmoli_67 jlmoli_67 is online now
Miembro
 
Registrado: feb 2024
Posts: 125
Poder: 3
jlmoli_67 Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola,buenos dias, ¿podrias comentar como haces la comprobacion de nombres y NIF, en el servicio?
Hola, en .net uso la funcion compruebacif() que comprueba la validez de un cof-nif haciendo una llamada a las otras funciones que he pegado. Si esta todo ok entonces hago una peticion soap firmada con los datos que tengo del cliente y me responde si dicho cliente esta censado.

Código:
 Function compruebacif() As Integer
        compruebacif = 0

        Dim esCIF As Boolean = Verificar_CIF(TextBox3.Text)
        If Len(TextBox3.Text) = 0 Then
            MsgBox("El valor introducido no es correcto.Corrija el problema y vuelva a intentarlo", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Atencion")

            Exit Function
        End If

       


        Dim esNIF As Boolean = Verificar_NIF(TextBox3.Text)
        If esCIF = True Or esNIF = True Then
            ' LabelInfo.Text &= vbCrLf & "Es un CIF: " & TextBox10.Text
            compruebacif = 1

        End If
       

       
    End Function


Public Function Verificar_NIF(ByVal valor As String) As Boolean
        Dim aux As String

        valor = valor.ToUpper ' ponemos la letra en mayúscula
        aux = valor.Substring(0, valor.Length - 1) ' quitamos la letra del NIF

        If aux.Length >= 7 AndAlso IsNumeric(aux) Then
            aux = CalculaNIF(aux) ' calculamos la letra del NIF para comparar con la que tenemos
        Else
            Return False
        End If

        If valor <> aux Then ' comparamos las letras
            Return False
        End If

        Return True
    End Function
    Private Function CalculaNIF(ByVal strA As String) As String

        Const cCADENA As String = "TRWAGMYFPDXBNJZSQVHLCKE"
        Const cNUMEROS As String = "0123456789"
        Dim a, b, c, NIF As Integer
        Dim sb As New StringBuilder

        strA = Trim(strA)
        If Len(strA) = 0 Then Return ""

        ' Dejar sólo los números
        For i As Integer = 0 To strA.Length - 1
            If cNUMEROS.IndexOf(strA(i)) > -1 Then
                sb.Append(strA(i))
            End If
        Next

        strA = sb.ToString
        a = 0
        NIF = CInt(Val(strA))
        Do
            b = CInt(Int(NIF / 24))
            c = NIF - (24 * b)
            a = a + c
            NIF = b
        Loop While b <> 0
        b = CInt(Int(a / 23))
        c = a - (23 * b)

        Return strA & Mid(cCADENA, CInt(c + 1), 1)
    End Function



Public Function Verificar_CIF(ByVal valor As String) As Boolean
        Dim strLetra As String, strNumero As String, strDigit As String
        Dim strDigitAux As String
        Dim auxNum As Integer
        Dim i As Integer
        Dim suma As Integer
        Dim letras As String

        letras = "ABCDEFGHJNPQRSUVW"
        'KLM
        valor = UCase(valor)

        If Len(valor) < 9 OrElse Not IsNumeric(Mid(valor, 2, 7)) Then
            Return False
        End If

        strLetra = Mid(valor, 1, 1)     ' letra del CIF
        strNumero = Mid(valor, 2, 7)    ' Código de Control
        strDigit = Mid(valor, 9)        ' CIF menos primera y última posición

        If InStr(letras, strLetra) = 0 Then ' comprobamos la letra del CIF (1ª posición)
            Return False
        End If

        For i = 1 To 7
            If i Mod 2 = 0 Then
                suma = suma + CInt(Mid(strNumero, i, 1))
            Else
                auxNum = CInt(Mid(strNumero, i, 1)) * 2
                suma = suma + (auxNum \ 10) + (auxNum Mod 10)
            End If
        Next
        suma = (10 - (suma Mod 10)) Mod 10

        Select Case strLetra
            Case "K", "P", "Q", "S"
                suma = suma + 64
                strDigitAux = Chr(suma)
            Case "X"
                strDigitAux = Mid(CalculaNIF(strNumero), 8, 1)
            Case Else
                strDigitAux = CStr(suma)
        End Select

        If strDigit = strDigitAux Then
            Return True
        Else
            Return False
        End If
    End Function
ejemplo peticion:
MINIF=reemplazar por cif-nif
MINOMBRE=reemplazar por el nombre o razon social


<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vnif="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd" xmlns:LocalPart="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">
<soapenv:Header/>
<soapenv:Body>
<vnif:VNifV2Ent>
<vnif:Contribuyente>
<vnif:Nif>MINIF</vnif:Nif>
<vnif:Nombre>MINOMBRE</vnif:Nombre>
</vnif:Contribuyente>
</vnif:VNifV2Ent>
</soapenv:Body>
</soapenv:Envelope>

un saludo

Última edición por Neftali [Germán.Estévez] fecha: 11-07-2024 a las 11:42:19. Razón: Añadir TAGs al código
  #2103  
Antiguo 11-07-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Servicio consulta Identificadores fiscales

Cita:
Empezado por bmfranky Ver Mensaje
Hola,buenos dias, ¿podrias comentar como haces la comprobacion de nombres y NIF, en el servicio?
Buenos días. creo que está en los primeros post del hilo, ya hace años que lo hice y se ha subido al hilo de ticketbai y a éste.
pero te lo dejo aquí, teniendo en cuenta que está para ejecutarlo desde Curl.exe tendrás que pasarlo a los comandos curl de la aplicación que uses, delphi, php.... Ya alguno creo que lo hicieron y lo subieron también.:

Cita:
CURL CIF ESPAÑOL:
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif.xml" -o C:\[path respuesta]\RespuestaNif.xml --cert-type P12 --cert c:\[path certificado]\Ciudadano.pfx:82388133 https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP
Fichero ejemplo a enviar en la llamada (EnvioNif.xml)

Código PHP:

<?xml version="1.0" encoding="utf-8"  ?>   - <Spain:Envelope xmlns:Spain="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ELNIF="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">     <Spain:Header />    - <Spain:Body>   - <ELNIF:VNifV2Ent>   - <ELNIF:Contribuyente>     <ELNIF:Nif>B63272603</ELNIF:Nif>     <ELNIF:Nombre>GOOGLE</ELNIF:Nombre>    </ELNIF:Contribuyente>   </ELNIF:VNifV2Ent>   </Spain:Body>   </Spain:Envelope>

Cita:
Curl Extranjero (VIES):
curl.exe --connect-timeout 60 -m 60 -S -L -d "@C:\[path donde esta ubicado]\EnvioNif_extranjero.xml" -o C:\[path respuesta]\RespuestaNif_extranjero.xml http://ec.europa.eu/taxation_customs...heckVatService

Fichero ejemplo a enviar en la llamada (EnvioNif_extranjero.xml)

Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<Extranjero:Envelope xmlns:Extranjero='http://schemas.xmlsoap.org/soap/envelope/'>
     <Extranjero:Body>
         <Datos:checkVat xmlns:Datos='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
             <Datos:countryCode>FR</Datos:countryCode>
             <Datos:vatNumber>08353523418</Datos:vatNumber>
         </Datos:checkVat>
     </Extranjero:Body>
</Extranjero:Envelope>


A tener en cuenta:
-Se puede hacer consultas de cifs españoles de entidades Juridicas sin poner nombre y devuelve nombre
-Las consultas de los nifs de personas fisicas deben ir acompañado del nombre y apellidos y devolveria el nombre y apellidos exactos registrado en la aeat si hay una coincidencia de un %del nombre.
-Las consultas al VIES(Extranjero) devuelve ademas la direccion.
- Hay que tener en cuenta que tanto en las llamadas como en las respuestas los nombres/apellidos y direcciones deben ser en UTF8

Última edición por ermendalenda fecha: 11-07-2024 a las 11:23:00.
  #2104  
Antiguo 11-07-2024
jlmoli_67 jlmoli_67 is online now
Miembro
 
Registrado: feb 2024
Posts: 125
Poder: 3
jlmoli_67 Va por buen camino
Cita:
Empezado por jlmoli_67 Ver Mensaje
Hola, en .net uso la funcion compruebacif() que comprueba la validez de un cof-nif haciendo una llamada a las otras funciones que he pegado. Si esta todo ok entonces hago una peticion soap firmada con los datos que tengo del cliente y me responde si dicho cliente esta censado.

Function compruebacif() As Integer
compruebacif = 0

Dim esCIF As Boolean = Verificar_CIF(TextBox3.Text)
If Len(TextBox3.Text) = 0 Then
MsgBox("El valor introducido no es correcto.Corrija el problema y vuelva a intentarlo", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Atencion")

Exit Function
End If




Dim esNIF As Boolean = Verificar_NIF(TextBox3.Text)
If esCIF = True Or esNIF = True Then
' LabelInfo.Text &= vbCrLf & "Es un CIF: " & TextBox10.Text
compruebacif = 1

End If



End Function


Public Function Verificar_NIF(ByVal valor As String) As Boolean
Dim aux As String

valor = valor.ToUpper ' ponemos la letra en mayúscula
aux = valor.Substring(0, valor.Length - 1) ' quitamos la letra del NIF

If aux.Length >= 7 AndAlso IsNumeric(aux) Then
aux = CalculaNIF(aux) ' calculamos la letra del NIF para comparar con la que tenemos
Else
Return False
End If

If valor <> aux Then ' comparamos las letras
Return False
End If

Return True
End Function
Private Function CalculaNIF(ByVal strA As String) As String

Const cCADENA As String = "TRWAGMYFPDXBNJZSQVHLCKE"
Const cNUMEROS As String = "0123456789"
Dim a, b, c, NIF As Integer
Dim sb As New StringBuilder

strA = Trim(strA)
If Len(strA) = 0 Then Return ""

' Dejar sólo los números
For i As Integer = 0 To strA.Length - 1
If cNUMEROS.IndexOf(strA(i)) > -1 Then
sb.Append(strA(i))
End If
Next

strA = sb.ToString
a = 0
NIF = CInt(Val(strA))
Do
b = CInt(Int(NIF / 24))
c = NIF - (24 * b)
a = a + c
NIF = b
Loop While b <> 0
b = CInt(Int(a / 23))
c = a - (23 * b)

Return strA & Mid(cCADENA, CInt(c + 1), 1)
End Function



Public Function Verificar_CIF(ByVal valor As String) As Boolean
Dim strLetra As String, strNumero As String, strDigit As String
Dim strDigitAux As String
Dim auxNum As Integer
Dim i As Integer
Dim suma As Integer
Dim letras As String

letras = "ABCDEFGHJNPQRSUVW"
'KLM
valor = UCase(valor)

If Len(valor) < 9 OrElse Not IsNumeric(Mid(valor, 2, 7)) Then
Return False
End If

strLetra = Mid(valor, 1, 1) ' letra del CIF
strNumero = Mid(valor, 2, 7) ' Código de Control
strDigit = Mid(valor, 9) ' CIF menos primera y última posición

If InStr(letras, strLetra) = 0 Then ' comprobamos la letra del CIF (1ª posición)
Return False
End If

For i = 1 To 7
If i Mod 2 = 0 Then
suma = suma + CInt(Mid(strNumero, i, 1))
Else
auxNum = CInt(Mid(strNumero, i, 1)) * 2
suma = suma + (auxNum \ 10) + (auxNum Mod 10)
End If
Next
suma = (10 - (suma Mod 10)) Mod 10

Select Case strLetra
Case "K", "P", "Q", "S"
suma = suma + 64
strDigitAux = Chr(suma)
Case "X"
strDigitAux = Mid(CalculaNIF(strNumero), 8, 1)
Case Else
strDigitAux = CStr(suma)
End Select

If strDigit = strDigitAux Then
Return True
Else
Return False
End If
End Function



ejemplo peticion:
MINIF=reemplazar por cif-nif
MINOMBRE=reemplazar por el nombre o razon social


<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vnif="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd" xmlns:LocalPart="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">
<soapenv:Header/>
<soapenv:Body>
<vnif:VNifV2Ent>
<vnif:Contribuyente>
<vnif:Nif>MINIF</vnif:Nif>
<vnif:Nombre>MINOMBRE</vnif:Nombre>
</vnif:Contribuyente>
</vnif:VNifV2Ent>
</soapenv:Body>
</soapenv:Envelope>

un saludo
Se me olvido puntualizar que si el numero comienza y termina por una letra entonces se trata de un extranjero o de una administracion en cuyo caso lo doy por bueno.....por ahora, entre otras cosas porque no se aun como tratarlo.
  #2105  
Antiguo 11-07-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por jlmoli_67 Ver Mensaje
Se me olvido puntualizar que si el numero comienza y termina por una letra entonces se trata de un extranjero o de una administracion en cuyo caso lo doy por bueno.....por ahora, entre otras cosas porque no se aun como tratarlo.
Se puede tratar tambien pero los algoritmos de comprobacion los tengo un poco lioso en varias funciones y me cuesta ordenarlo para ponerlos.
Se puede comprobar. NIES, CIFS de organismo oficiales, personas fisicas y entidades juridicas, cada caso tiene sus algoritmos. Lo fui sacando de internet.
  #2106  
Antiguo 11-07-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por jlmoli_67 Ver Mensaje
Hola, en .net uso la funcion compruebacif() que comprueba la validez de un cof-nif haciendo una llamada a las otras funciones que he pegado. Si esta todo ok entonces hago una peticion soap firmada con los datos que tengo del cliente y me responde si dicho cliente esta censado.

Código:
 Function compruebacif() As Integer
        compruebacif = 0

        Dim esCIF As Boolean = Verificar_CIF(TextBox3.Text)
        If Len(TextBox3.Text) = 0 Then
            MsgBox("El valor introducido no es correcto.Corrija el problema y vuelva a intentarlo", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Atencion")

            Exit Function
        End If

       


        Dim esNIF As Boolean = Verificar_NIF(TextBox3.Text)
        If esCIF = True Or esNIF = True Then
            ' LabelInfo.Text &= vbCrLf & "Es un CIF: " & TextBox10.Text
            compruebacif = 1

        End If
       

       
    End Function


Public Function Verificar_NIF(ByVal valor As String) As Boolean
        Dim aux As String

        valor = valor.ToUpper ' ponemos la letra en mayúscula
        aux = valor.Substring(0, valor.Length - 1) ' quitamos la letra del NIF

        If aux.Length >= 7 AndAlso IsNumeric(aux) Then
            aux = CalculaNIF(aux) ' calculamos la letra del NIF para comparar con la que tenemos
        Else
            Return False
        End If

        If valor <> aux Then ' comparamos las letras
            Return False
        End If

        Return True
    End Function
    Private Function CalculaNIF(ByVal strA As String) As String

        Const cCADENA As String = "TRWAGMYFPDXBNJZSQVHLCKE"
        Const cNUMEROS As String = "0123456789"
        Dim a, b, c, NIF As Integer
        Dim sb As New StringBuilder

        strA = Trim(strA)
        If Len(strA) = 0 Then Return ""

        ' Dejar sólo los números
        For i As Integer = 0 To strA.Length - 1
            If cNUMEROS.IndexOf(strA(i)) > -1 Then
                sb.Append(strA(i))
            End If
        Next

        strA = sb.ToString
        a = 0
        NIF = CInt(Val(strA))
        Do
            b = CInt(Int(NIF / 24))
            c = NIF - (24 * b)
            a = a + c
            NIF = b
        Loop While b <> 0
        b = CInt(Int(a / 23))
        c = a - (23 * b)

        Return strA & Mid(cCADENA, CInt(c + 1), 1)
    End Function



Public Function Verificar_CIF(ByVal valor As String) As Boolean
        Dim strLetra As String, strNumero As String, strDigit As String
        Dim strDigitAux As String
        Dim auxNum As Integer
        Dim i As Integer
        Dim suma As Integer
        Dim letras As String

        letras = "ABCDEFGHJNPQRSUVW"
        'KLM
        valor = UCase(valor)

        If Len(valor) < 9 OrElse Not IsNumeric(Mid(valor, 2, 7)) Then
            Return False
        End If

        strLetra = Mid(valor, 1, 1)     ' letra del CIF
        strNumero = Mid(valor, 2, 7)    ' Código de Control
        strDigit = Mid(valor, 9)        ' CIF menos primera y última posición

        If InStr(letras, strLetra) = 0 Then ' comprobamos la letra del CIF (1ª posición)
            Return False
        End If

        For i = 1 To 7
            If i Mod 2 = 0 Then
                suma = suma + CInt(Mid(strNumero, i, 1))
            Else
                auxNum = CInt(Mid(strNumero, i, 1)) * 2
                suma = suma + (auxNum \ 10) + (auxNum Mod 10)
            End If
        Next
        suma = (10 - (suma Mod 10)) Mod 10

        Select Case strLetra
            Case "K", "P", "Q", "S"
                suma = suma + 64
                strDigitAux = Chr(suma)
            Case "X"
                strDigitAux = Mid(CalculaNIF(strNumero), 8, 1)
            Case Else
                strDigitAux = CStr(suma)
        End Select

        If strDigit = strDigitAux Then
            Return True
        Else
            Return False
        End If
    End Function
ejemplo peticion:
MINIF=reemplazar por cif-nif
MINOMBRE=reemplazar por el nombre o razon social


<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:vnif="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd" xmlns:LocalPart="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">
<soapenv:Header/>
<soapenv:Body>
<vnif:VNifV2Ent>
<vnif:Contribuyente>
<vnif:Nif>MINIF</vnif:Nif>
<vnif:Nombre>MINOMBRE</vnif:Nombre>
</vnif:Contribuyente>
</vnif:VNifV2Ent>
</soapenv:Body>
</soapenv:Envelope>

un saludo
Cita:
Empezado por ermendalenda Ver Mensaje
Buenos días. creo que está en los primeros post del hilo, ya hace años que lo hice y se ha subido al hilo de ticketbai y a éste.
pero te lo dejo aquí, teniendo en cuenta que está para ejecutarlo desde Curl.exe tendrás que pasarlo a los comandos curl de la aplicación que uses, delphi, php.... Ya alguno creo que lo hicieron y lo subieron también.:



Fichero ejemplo a enviar en la llamada (EnvioNif.xml)

Código PHP:

<?xml version="1.0" encoding="utf-8"  ?>   - <Spain:Envelope xmlns:Spain="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ELNIF="http://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/burt/jdit/ws/VNifV2Ent.xsd">     <Spain:Header />    - <Spain:Body>   - <ELNIF:VNifV2Ent>   - <ELNIF:Contribuyente>     <ELNIF:Nif>B63272603</ELNIF:Nif>     <ELNIF:Nombre>GOOGLE</ELNIF:Nombre>    </ELNIF:Contribuyente>   </ELNIF:VNifV2Ent>   </Spain:Body>   </Spain:Envelope>


Fichero ejemplo a enviar en la llamada (EnvioNif_extranjero.xml)

Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<Extranjero:Envelope xmlns:Extranjero='http://schemas.xmlsoap.org/soap/envelope/'>
     <Extranjero:Body>
         <Datos:checkVat xmlns:Datos='urn:ec.europa.eu:taxud:vies:services:checkVat:types'>
             <Datos:countryCode>FR</Datos:countryCode>
             <Datos:vatNumber>08353523418</Datos:vatNumber>
         </Datos:checkVat>
     </Extranjero:Body>
</Extranjero:Envelope>
A tener en cuenta:
-Se puede hacer consultas de cifs españoles de entidades Juridicas sin poner nombre y devuelve nombre
-Las consultas de los nifs de personas fisicas deben ir acompañado del nombre y apellidos y devolveria el nombre y apellidos exactos registrado en la aeat si hay una coincidencia de un %del nombre.
-Las consultas al VIES(Extranjero) devuelve ademas la direccion.
- Hay que tener en cuenta que tanto en las llamadas como en las respuestas los nombres/apellidos y direcciones deben ser en UTF8

Hola, gracias, por la respuesta, la cusetion de la opcion de curl, no la veo viable para mi, puesto que mi aplicacion es de escritorio y en c#, asi que intentare migrar la version que me ha facilitado jlmoli_67, si lo consigo hacer funcionar os la pasare aqui, por si a alguien le interesa.
Lo que tengo es una verificacion de la estructura y "crc" del NIF,CIF Y NIE en el momento de ingresarlos, lo que me interesaba es consultar si es real y pertenece al cliente, gracias.
  #2107  
Antiguo 11-07-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por bmfranky Ver Mensaje
Hola, gracias, por la respuesta, la cusetion de la opcion de curl, no la veo viable para mi, puesto que mi aplicacion es de escritorio y en c#, asi que intentare migrar la version que me ha facilitado jlmoli_67, si lo consigo hacer funcionar os la pasare aqui, por si a alguien le interesa.
Lo que tengo es una verificacion de la estructura y "crc" del NIF,CIF Y NIE en el momento de ingresarlos, lo que me interesaba es consultar si es real y pertenece al cliente, gracias.
Hay más de un estado
Identificado
No identificado
Identificado-revocado
  #2108  
Antiguo 11-07-2024
Avatar de bmfranky
bmfranky bmfranky is offline
Miembro
 
Registrado: may 2024
Ubicación: Gandia, Valencia
Posts: 863
Poder: 3
bmfranky Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Hay más de un estado
Identificado
No identificado
Identificado-revocado
Ok, gracias, lo tendre en cuenta al interpretar la respuesta.
  #2109  
Antiguo 11-07-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por jlmoli_67 Ver Mensaje
Se me olvido puntualizar que si el numero comienza y termina por una letra entonces se trata de un extranjero o de una administracion en cuyo caso lo doy por bueno.....por ahora, entre otras cosas porque no se aun como tratarlo.
No es complejo.

Si empieza por X,Y,Z,K,L,M es una persona física, tratarle como una persona española (NIF empezando con dígito) es decir poner nombre, en orden. Además el algoritmo de comprobación de la letra final es el mismo que para los españoles (módulo 23), después de remplazar la Y por 1, la Z por 2 y los demás por 0.

Todos los demás casos (A-J, N-W) son administraciones, empresas y demás entidades jurídicas, extranjeras o mezcladas. La letra de control es realmente un dígito convertido a letra (1->A, 2->B ... 9->I y 0->J) por tanto debe ser entre A y J. Y no debe ser preciso enviar el nombre al servicio.
  #2110  
Antiguo 12-07-2024
xamminf xamminf is offline
Miembro
 
Registrado: ene 2017
Posts: 216
Poder: 10
xamminf Va por buen camino
Cita:
Empezado por antoine0 Ver Mensaje
No es complejo.

Si empieza por X,Y,Z,K,L,M es una persona física, tratarle como una persona española (NIF empezando con dígito) es decir poner nombre, en orden. Además el algoritmo de comprobación de la letra final es el mismo que para los españoles (módulo 23), después de remplazar la Y por 1, la Z por 2 y los demás por 0.

Todos los demás casos (A-J, N-W) son administraciones, empresas y demás entidades jurídicas, extranjeras o mezcladas. La letra de control es realmente un dígito convertido a letra (1->A, 2->B ... 9->I y 0->J) por tanto debe ser entre A y J. Y no debe ser preciso enviar el nombre al servicio.

Para el tema de compras/ ventas con la U.E. Hace años estuve viendo lo de comprobar los VAT de empresas U.E. vía VIES
Me llamo la atencion el caos que habia: Una empresa puede estar realizando operaciones intracomunitarias sin estar de alta en VIES. No lo implementé porque entendí que no valía para nada, aunque era muy facil
  #2111  
Antiguo 12-07-2024
antoine0 antoine0 is offline
Miembro
 
Registrado: oct 2021
Posts: 260
Poder: 5
antoine0 Va por buen camino
Cita:
Empezado por xamminf Ver Mensaje
Una empresa puede estar realizando operaciones intracomunitarias sin estar de alta en VIES.
¿Huh? A mi no me parecen operaciones intracomunitarias entonces, al menos en el marco del IVA (entregas intracomunitarias exentas, adquisiciones intracomunitarias con mecanismo de inversión de sujeto pasivo, modelo 349 etc.) ¿Puedes detallar un poco los casos que has encontrado?
  #2112  
Antiguo 12-07-2024
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.229
Poder: 24
keys Va por buen camino
En verifactu no lo se. Pero en el SII me encontrado con algún caso de hacer una factura Intracomunitaria contra un cliente/proveedor que no esta en el VIES y devolver un error el sistema.

Última edición por keys fecha: 12-07-2024 a las 09:34:23.
  #2113  
Antiguo 16-07-2024
jlmoli_67 jlmoli_67 is online now
Miembro
 
Registrado: feb 2024
Posts: 125
Poder: 3
jlmoli_67 Va por buen camino
noticias

El amigo FRANCHE acaba de enviarme este enlace
https://technical-regulation-informa...6031/text/D/ES

Parece que algo se mueve
  #2114  
Antiguo 16-07-2024
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por xamminf Ver Mensaje
Para el tema de compras/ ventas con la U.E. Hace años estuve viendo lo de comprobar los VAT de empresas U.E. vía VIES
Me llamo la atencion el caos que habia: Una empresa puede estar realizando operaciones intracomunitarias sin estar de alta en VIES. No lo implementé porque entendí que no valía para nada, aunque era muy facil
Hola,

Hay una forma sencilla de comprobar si un negocio de la UE está dado de alta o no en el VIES:
https://ec.europa.eu/taxation_custom.../vat/YYYYYYYYY

Sustituyes XX por las dos letras del código del país
Sustituyes YYYYYYYYY por el NIF o identificador que se use en ese país.

En el resultado te aparecerá:
..."isValid" : true...
O bien:
..."isValid" : false...

Saludos
  #2115  
Antiguo 16-07-2024
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.229
Poder: 24
keys Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Hola,

Hay una forma sencilla de comprobar si un negocio de la UE está dado de alta o no en el VIES:
https://ec.europa.eu/taxation_custom.../vat/YYYYYYYYY

Sustituyes XX por las dos letras del código del país
Sustituyes YYYYYYYYY por el NIF o identificador que se use en ese país.

En el resultado te aparecerá:
..."isValid" : true...
O bien:
..."isValid" : false...

Saludos
Tenéis como hacerlo en el siguiente TEma https://www.clubdelphi.com/foros/showthread.php?t=96416
  #2116  
Antiguo 16-07-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por jlmoli_67 Ver Mensaje
El amigo FRANCHE acaba de enviarme este enlace
https://technical-regulation-informa...6031/text/D/ES

Parece que algo se mueve
Gracias
Importante informacion
  #2117  
Antiguo 16-07-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por keys Ver Mensaje
Tenéis como hacerlo en el siguiente TEma https://www.clubdelphi.com/foros/showthread.php?t=96416
Interesante el enlace.
Habéis probado el de check vat?
  #2118  
Antiguo 16-07-2024
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Pues a ver donde va a ir la url del QR de Facturae
Debe ser un </AdditionalData>
Cita:
datos de la factura. 2. En caso de tratarse de una factura electrónica, destinada al intercambio de su información de forma estructurada entre sistemas informáticos por medios electrónicos, se deberá incluir como un campo independiente la «URL» contenida en el código «QR», no siendo necesario incluir el propio código «QR».
  #2119  
Antiguo 17-07-2024
Avatar de keys
keys keys is offline
Miembro
 
Registrado: sep 2003
Ubicación: Bilbao
Posts: 1.229
Poder: 24
keys Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Interesante el enlace.
Habéis probado el de check vat?
No. Como el otro funciona bien
  #2120  
Antiguo 17-07-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.438
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Publicado hoy en el portal d desarrolladores:

Corrección de erratas en esquemas XSD en sistemas VER*FACTU y no VER*FACTU

Se ha corregido una errata en uno de los esquemas XSD asociado a los sistemas VERI*FACTU y no VERI*FACTU , concretamente en el esquema "SuministroInformacion.xsd".
El campo IDFacturasSustituida pasa a denominarse IDFacturaSustituida dentro de la agrupación FacturasSustituidas en consonancia con FacturasRectificadas y por coherencia con el Diseño de registro publicado.
Este cambio ya se encuentra publicado en los distintos enlaces dispuestos en el Portal de Desarrolladores.
Ante cualquier duda/sugerencia y/o falta de corrección sobre la nueva información publicada, se recuerda el buzón de consultas técnicas de VERI*FACTU: [email protected]

El Link lleva aquí.
__________________
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.
Tema Cerrado



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hijo de Informáticos gluglu Humor 3 13-03-2007 11:05:35
Adictos informaticos ... Trigger Humor 2 11-10-2004 12:18:32
Nosotros los Informáticos Trigger Humor 1 10-10-2004 14:58:09
Patrón de los Informáticos. obiwuan Varios 20 10-09-2003 14:44:54
Chistes Informaticos jhonny Humor 2 11-08-2003 21:59:09


La franja horaria es GMT +2. Ahora son las 01:07:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi