Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2021
andalusoft andalusoft is offline
Miembro
 
Registrado: sep 2021
Posts: 10
Poder: 0
andalusoft Va por buen camino
Calculo CRC-8

Hola a tod@s.

Os dejo código fuente para calcular el CRC-8:

MICROFOCUS COBOL:

$set sourceformat(variable)
program-id. CRC8 as "CRC8".

environment division.
configuration section.

data division.
working-storage section.

01 CRC8-Table.
05 filler occurs 256.
10 tbByte PIC X(1).
10 tbByteNum redefines tbByte PIC S9(2) COMP-5.

01 cadena PIC X(256) VALUE
"TBAI-00000006Y-251019-btFpwP8dcLGAF-".
01 len PIC 9(2) COMP-5.
01 crc PIC X(1).
01 crcNum redefines crc PIC 9(2) comp-5.
01 crcNumInt PIC S9(9) COMP-5.

01 idx-1 PIC 9(2) COMP-5.

01 tmpChar PIC X(1).
01 tmpIdx redefines tmpChar PIC S9(2) COMP-5.
01 tmpIdxInt PIC S9(9) COMP-5.

procedure division.

perform chargeTable
perform getLen

move 1 to idx-1
move 0 to crcNumInt

perform until idx-1 > len
move cadena(idx-1:1) to tmpChar
move tmpIdx to tmpIdxInt

call "CBL_XOR" using crcNumInt tmpIdxInt by value 4
display tmpIdxInt " " no advancing

call "CBL_AND" using X"FF000000" tmpIdxInt by value 4
display tmpIdxInt " "
tbByteNum(tmpIdxInt + 1) " " no advancing

move tbByte(tmpIdxInt + 1) to crc
move crcNum to crcNumInt

display crcNumInt " "

add 1 to idx-1
end-perform

call "CBL_AND" using X"FF000000" crcNumInt by value 4

display crcNumInt

move crcNumInt to crcNum

display crcNum " " crc

goback
.


chargeTable.
string
X"00", X"07", X"0E", X"09",
X"1C", X"1B", X"12", X"15", X"38", X"3F", X"36", X"31",
X"24", X"23", X"2A", X"2D", X"70", X"77", X"7E", X"79",
X"6C", X"6B", X"62", X"65", X"48", X"4F", X"46", X"41",

X"54", X"53", X"5A", X"5D", X"E0", X"E7", X"EE", X"E9",
X"FC", X"FB", X"F2", X"F5", X"D8", X"DF", X"D6", X"D1",
X"C4", X"C3", X"CA", X"CD", X"90", X"97", X"9E", X"99",
X"8C", X"8B", X"82", X"85", X"A8", X"AF", X"A6", X"A1",
X"B4", X"B3", X"BA", X"BD", X"C7", X"C0", X"C9", X"CE",
X"DB", X"DC", X"D5", X"D2", X"FF", X"F8", X"F1", X"F6",
X"E3", X"E4", X"ED", X"EA", X"B7", X"B0", X"B9", X"BE",
X"AB", X"AC", X"A5", X"A2", X"8F", X"88", X"81", X"86",
X"93", X"94", X"9D", X"9A", X"27", X"20", X"29", X"2E",
X"3B", X"3C", X"35", X"32", X"1F", X"18", X"11", X"16",
X"03", X"04", X"0D", X"0A", X"57", X"50", X"59", X"5E",
X"4B", X"4C", X"45", X"42", X"6F", X"68", X"61", X"66",
X"73", X"74", X"7D", X"7A", X"89", X"8E", X"87", X"80",
X"95", X"92", X"9B", X"9C", X"B1", X"B6", X"BF", X"B8",
X"AD", X"AA", X"A3", X"A4", X"F9", X"FE", X"F7", X"F0",
X"E5", X"E2", X"EB", X"EC", X"C1", X"C6", X"CF", X"C8",
X"DD", X"DA", X"D3", X"D4", X"69", X"6E", X"67", X"60",
X"75", X"72", X"7B", X"7C", X"51", X"56", X"5F", X"58",
X"4D", X"4A", X"43", X"44", X"19", X"1E", X"17", X"10",
X"05", X"02", X"0B", X"0C", X"21", X"26", X"2F", X"28",
X"3D", X"3A", X"33", X"34", X"4E", X"49", X"40", X"47",
X"52", X"55", X"5C", X"5B", X"76", X"71", X"78", X"7F",
X"6A", X"6D", X"64", X"63", X"3E", X"39", X"30", X"37",
X"22", X"25", X"2C", X"2B", X"06", X"01", X"08", X"0F",
X"1A", X"1D", X"14", X"13", X"AE", X"A9", X"A0", X"A7",
X"B2", X"B5", X"BC", X"BB", X"96", X"91", X"98", X"9F",
X"8A", X"8D", X"84", X"83", X"DE", X"D9", X"D0", X"D7",
X"C2", X"C5", X"CC", X"CB", X"E6", X"E1", X"E8", X"EF",
X"FA", X"FD", X"F4", X"F3"
delimited by size into CRC8-Table
.

getLen.

move 36 to len

*> Fujitsu: function stored-cahr-length
*> Otros: un bucle, unstring con x"00" o NOT = SPACES etc.
.

end program CRC8.


WINDEV:


PROCEDURE calcular_CRC8(Cadena is UNICODE string)

CRC8_Table is array of byte = [0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, 0x38, 0x3F, 0x36, 0x31, 0x24, 0x23, 0x2A, 0x2D,
0x70, 0x77, 0x7E, 0x79, 0x6C, 0x6B, 0x62, 0x65, 0x48, 0x4F, 0x46, 0x41, 0x54, 0x53, 0x5A, 0x5D,
0xE0, 0xE7, 0xEE, 0xE9, 0xFC, 0xFB, 0xF2, 0xF5, 0xD8, 0xDF, 0xD6, 0xD1, 0xC4, 0xC3, 0xCA, 0xCD,
0x90, 0x97, 0x9E, 0x99, 0x8C, 0x8B, 0x82, 0x85, 0xA8, 0xAF, 0xA6, 0xA1, 0xB4, 0xB3, 0xBA, 0xBD,
0xC7, 0xC0, 0xC9, 0xCE, 0xDB, 0xDC, 0xD5, 0xD2, 0xFF, 0xF8, 0xF1, 0xF6, 0xE3, 0xE4, 0xED, 0xEA,
0xB7, 0xB0, 0xB9, 0xBE, 0xAB, 0xAC, 0xA5, 0xA2, 0x8F, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9D, 0x9A,
0x27, 0x20, 0x29, 0x2E, 0x3B, 0x3C, 0x35, 0x32, 0x1F, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0D, 0x0A,
0x57, 0x50, 0x59, 0x5E, 0x4B, 0x4C, 0x45, 0x42, 0x6F, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7D, 0x7A,
0x89, 0x8E, 0x87, 0x80, 0x95, 0x92, 0x9B, 0x9C, 0xB1, 0xB6, 0xBF, 0xB8, 0xAD, 0xAA, 0xA3, 0xA4,
0xF9, 0xFE, 0xF7, 0xF0, 0xE5, 0xE2, 0xEB, 0xEC, 0xC1, 0xC6, 0xCF, 0xC8, 0xDD, 0xDA, 0xD3, 0xD4,
0x69, 0x6E, 0x67, 0x60, 0x75, 0x72, 0x7B, 0x7C, 0x51, 0x56, 0x5F, 0x58, 0x4D, 0x4A, 0x43, 0x44,
0x19, 0x1E, 0x17, 0x10, 0x05, 0x02, 0x0B, 0x0C, 0x21, 0x26, 0x2F, 0x28, 0x3D, 0x3A, 0x33, 0x34,
0x4E, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5C, 0x5B, 0x76, 0x71, 0x78, 0x7F, 0x6A, 0x6D, 0x64, 0x63,
0x3E, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2C, 0x2B, 0x06, 0x01, 0x08, 0x0F, 0x1A, 0x1D, 0x14, 0x13,
0xAE, 0xA9, 0xA0, 0xA7, 0xB2, 0xB5, 0xBC, 0xBB, 0x96, 0x91, 0x98, 0x9F, 0x8A, 0x8D, 0x84, 0x83,
0xDE, 0xD9, 0xD0, 0xD7, 0xC2, 0xC5, 0xCC, 0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3]

Idx_1 is int = 1
Len is int = Length(Cadena)

TmpIdx is bytes = 0

CrcNum is byte = 0
CRC is UNICODE string = ""

Cadena = StringToUTF8(Cadena,charsetUTF8)

FOR Idx_1 = 1 TO Len
TmpIdx = Asc(Middle(Cadena,Idx_1,1))
TmpIdx = BinaryXOR(CrcNum,TmpIdx)
TmpIdx = BinaryAND(0xFF,TmpIdx)
CrcNum = CRC8_Table[TmpIdx + 1]
END

CrcNum = BinaryAND(0xFF,CrcNum)

CRC = NumToString(CrcNum,"%03d")

RESULT = CRC

Saludos y gracias por todo.
Responder Con Cita
  #2  
Antiguo 02-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Calculo Cifs

Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.

XML Petición ejemplo comproobacion nif ESPAÑA
Código:
<?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>
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



Ejemplo xml Petición Nif Extranjero
Código:
<?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>
Curl Extranjero:
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
Ojo: un cif extranjero no es el que empieza por X o Y, esos son cifs extranjeros adaptados a España y hay que comprobarlos según el Curl de España.
Archivos Adjuntos
Tipo de Archivo: rar calculo_cifs.rar (27,2 KB, 29 visitas)

Última edición por ermendalenda fecha: 02-10-2021 a las 10:13:47.
Responder Con Cita
  #3  
Antiguo 02-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Tiene algunos detalles más.
https://www.agenciatributaria.es/AEA...spanola_.shtml
Madre mía cada año meten más historias. Hace ya varios años que no repasaba esto.
Responder Con Cita
  #4  
Antiguo 02-10-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Tiene algunos detalles más.
https://www.agenciatributaria.es/AEA...spanola_.shtml
Madre mía cada año meten más historias. Hace ya varios años que no repasaba esto.
Hola ermendalenda,

Sí, hay muchos casos posibles.
En https://es.wikipedia.org/wiki/N%C3%B...%C3%B3n_fiscal tienes la información de cada uno de ellos y el algoritimo de verificación (cálculo de la letra en el DNI y del último dígito en el CIF)

Saludos
Responder Con Cita
  #5  
Antiguo 02-10-2021
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 484
Poder: 7
Sistel Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Hola ermendalenda,
Sí, hay muchos casos posibles.
En https://es.wikipedia.org/wiki/N%C3%B...%C3%B3n_fiscal tienes la información de cada uno de ellos y el algoritimo de verificación (cálculo de la letra en el DNI y del último dígito en el CIF)
Saludos
Yo, desde hace muchos años, uso las mismas funciones para comprobar si un documento (NIF, NIE o CIF) expedido en España es válido.
En PHP, llamando a la función COMPROBAR_DOCUMENTO($nif) :
Código PHP:
<?php
function COMPROBAR_DOCUMENTO($nif){
    
// Limpia
    
$nif LIMPIAR_NIF($nif);
    
// Comprueba NIF, CIF o NIE
    
if(stristr("XYZ"$nif[0])) $salida COMPROBAR_NIE($nif);
    if(
stristr("ABCDEFGHJKLMNPQRSUVW"$nif[0])) $salida COMPROBAR_CIF($nif);
    if(
stristr("0123456789"$nif[0])) $salida COMPROBAR_NIF($nif);
    
// Si la comprobación ha dado errónea se devuelve texto
    
if($salida <> '1') return "Error en documento (CIF/NIF/NIE)";
    return 
"";
}
/***************************************************************************************************************/
function COMPROBAR_NIE($nie){
    if(
$nie[0] == "X"$nie "0".substr($nie1);
    if(
$nie[0] == "Y"$nie "1".substr($nie1);
    if(
$nie[0] == "Z"$nie "2".substr($nie1);
    
$dni substr($nie0, -1);
    if(
LETRA_NIF($dni) <> substr($nie, -11)) return "Error: NIE erróneo";
    return 
1;
}
/***********************************************************************************/
function COMPROBAR_NIF($nif){
    
$nif str_replace(" """$nif);
    
$nif str_replace("."""$nif);
    
$nif str_replace("-"""$nif);
    
$nif str_replace("_"""$nif);
    
$nif str_replace(","""$nif);
    
$dni substr($nif0, -1);
    if(
LETRA_NIF($dni) <> strtoupper(substr($nif, -11))) return "Error: NIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function COMPROBAR_CIF($cif){
    
$cif str_replace(" """$cif);
    
$cif str_replace("."""$cif);
    
$cif str_replace("-"""$cif);
    if(
strlen($cif) <> 9) return "Error: Número de caracteres del CIF no es 9";
    
$validos "ABCDEFGHJKLMNPQRSUVW";
    if(!
strstr($validossubstr($cif01))) return "Error: Primera letra del CIF errónea";
    if(!
ctype_digit(substr($cif17))) return "Error: Dígitos no numéricos en el CIF";

    
// Cálculo del dígito final
    
$a $cif[2] + $cif[4] + $cif[6];
    for(
$i=1$i<=7$i=$i+2){
        
$x $cif[$i] * 2;
        
$x sprintf('%02d'$x);
        
$b += $x[0] + $x[1];
    }
    
$c $a $b;
    
$c sprintf('%02d'$c);
    
$d 10 $c[1];
    if(
$d == 10$d 0;
    
$letras = array("J","A","B","C","D","E","F","G","H","I");
    if(
$cif[8] <> $d && $cif[8] <> $letras[$d]) return "Error: CIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function LIMPIAR_NIF($nif){
    
$nif str_replace(' '''$nif);
    
$nif str_replace('-'''$nif);
    
$nif str_replace('/'''$nif);
    
$nif str_replace('_'''$nif);
    
$nif str_replace('.'''$nif);
    
$nif str_replace(','''$nif);        
    
$nif strtoupper($nif);            
    return 
$nif;
}
/***************************************************************************************************************/
function LETRA_NIF($dni){
    
$dni str_replace(" """$dni);
    
$dni str_replace("."""$dni);
    
$resto = (int) ($dni 23);
    
$letras "TRWAGMYFPDXBNJZSQVHLCKE";
    
$letra substr ($letras$resto1);
    return 
$letra;
}
?>
Saludos
Responder Con Cita
  #6  
Antiguo 02-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por Sistel Ver Mensaje
Yo, desde hace muchos años, uso las mismas funciones para comprobar si un documento (NIF, NIE o CIF) expedido en España es válido.
En PHP, llamando a la función COMPROBAR_DOCUMENTO($nif) :
Código PHP:
<?php
function COMPROBAR_DOCUMENTO($nif){
    
// Limpia
    
$nif LIMPIAR_NIF($nif);
    
// Comprueba NIF, CIF o NIE
    
if(stristr("XYZ"$nif[0])) $salida COMPROBAR_NIE($nif);
    if(
stristr("ABCDEFGHJKLMNPQRSUVW"$nif[0])) $salida COMPROBAR_CIF($nif);
    if(
stristr("0123456789"$nif[0])) $salida COMPROBAR_NIF($nif);
    
// Si la comprobación ha dado errónea se devuelve texto
    
if($salida <> '1') return "Error en documento (CIF/NIF/NIE)";
    return 
"";
}
/***************************************************************************************************************/
function COMPROBAR_NIE($nie){
    if(
$nie[0] == "X"$nie "0".substr($nie1);
    if(
$nie[0] == "Y"$nie "1".substr($nie1);
    if(
$nie[0] == "Z"$nie "2".substr($nie1);
    
$dni substr($nie0, -1);
    if(
LETRA_NIF($dni) <> substr($nie, -11)) return "Error: NIE erróneo";
    return 
1;
}
/***********************************************************************************/
function COMPROBAR_NIF($nif){
    
$nif str_replace(" """$nif);
    
$nif str_replace("."""$nif);
    
$nif str_replace("-"""$nif);
    
$nif str_replace("_"""$nif);
    
$nif str_replace(","""$nif);
    
$dni substr($nif0, -1);
    if(
LETRA_NIF($dni) <> strtoupper(substr($nif, -11))) return "Error: NIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function COMPROBAR_CIF($cif){
    
$cif str_replace(" """$cif);
    
$cif str_replace("."""$cif);
    
$cif str_replace("-"""$cif);
    if(
strlen($cif) <> 9) return "Error: Número de caracteres del CIF no es 9";
    
$validos "ABCDEFGHJKLMNPQRSUVW";
    if(!
strstr($validossubstr($cif01))) return "Error: Primera letra del CIF errónea";
    if(!
ctype_digit(substr($cif17))) return "Error: Dígitos no numéricos en el CIF";

    
// Cálculo del dígito final
    
$a $cif[2] + $cif[4] + $cif[6];
    for(
$i=1$i<=7$i=$i+2){
        
$x $cif[$i] * 2;
        
$x sprintf('%02d'$x);
        
$b += $x[0] + $x[1];
    }
    
$c $a $b;
    
$c sprintf('%02d'$c);
    
$d 10 $c[1];
    if(
$d == 10$d 0;
    
$letras = array("J","A","B","C","D","E","F","G","H","I");
    if(
$cif[8] <> $d && $cif[8] <> $letras[$d]) return "Error: CIF erróneo";
    return 
1;
}
/***************************************************************************************************************/
function LIMPIAR_NIF($nif){
    
$nif str_replace(' '''$nif);
    
$nif str_replace('-'''$nif);
    
$nif str_replace('/'''$nif);
    
$nif str_replace('_'''$nif);
    
$nif str_replace('.'''$nif);
    
$nif str_replace(','''$nif);        
    
$nif strtoupper($nif);            
    return 
$nif;
}
/***************************************************************************************************************/
function LETRA_NIF($dni){
    
$dni str_replace(" """$dni);
    
$dni str_replace("."""$dni);
    
$resto = (int) ($dni 23);
    
$letras "TRWAGMYFPDXBNJZSQVHLCKE";
    
$letra substr ($letras$resto1);
    return 
$letra;
}
?>
Saludos
Gracias me faltaba la parte dell algoritmo para comprobar los NIE (Offline), con esto listo.

Una cosa menos.
Responder Con Cita
  #7  
Antiguo 03-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
continuo con los CIFS, perdonad los que ya tengais este tema solucionado, pero creo que es una parte importante para que en el futuro no echen para atrás facturas enviadas por errores en los cif/nif/nie/Nombres y por lo tanto se queden facturas huerfanas (no se si se queda aceptado "00" o no aceptado, pero está claro que se va a quedar con errores)

Por lo que tengo visto lo normal es que los que están dado de alta en el ROI los 2 primeros caracteres identifique el país, pero sopresa, primera excepción que me encuentro:
Los que empiezan por "ESN", las primeras letras no identifican al pais si no a "Entidades no residentes" por lo tanto tratamiento¿?: comprobar por el curl extranjero o español, por que el curl extranjero no admite "ESN", así que supongo que será español.

Tenedlo en cuenta sobre todo los que trabajais programas que hacen facturas para laboratorios externos, holandeses, alemanes, etc, que se os va a dar más de un caso.

Esto es más lioso de lo que esperaba, los que podais aportar ideas, documentos... se agradece

Última edición por ermendalenda fecha: 03-10-2021 a las 10:20:10.
Responder Con Cita
  #8  
Antiguo 04-10-2021
Noe277 Noe277 is offline
Miembro
 
Registrado: jul 2017
Posts: 162
Poder: 9
Noe277 Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.
Los Alpha 3 se usan para factura-e, para listados oficiales, modelos y SII Alpha 2


Y una pregunta el Zuzendu de Gipuzkoa sabemos algo de el ?

Última edición por Noe277 fecha: 04-10-2021 a las 09:17:34.
Responder Con Cita
  #9  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por Noe277 Ver Mensaje
Los Alpha 3 se usan para factura-e, para listados oficiales, modelos y SII Alpha 2


Y una pregunta el Zuzendu de Gipuzkoa sabemos algo de el ?
Gracias
Ni idea de Zuzendu
Responder Con Cita
  #10  
Antiguo 04-10-2021
JoseLeeTo JoseLeeTo is offline
Miembro
 
Registrado: jun 2021
Posts: 78
Poder: 5
JoseLeeTo Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
Lo prometiddo es deuda
Aquí os dejo los calculos de los cifs, españa, extranjero.
Aún me queda una duda, que no me he peleado mucho, pero ya veo codigo fuente flotando en el aire y es hora del descanso.

Resulta que para la comprobación del cif extranjeero se envia el cif dividido en 2 campos;
Por un lado el identificador del pais
Por otro Lado el resto del identificador.
He probado con el identificador del Pais de 2 caracteres, por que resulta que hay de 2 caracteres, de 3 y otro identificadorn úmerico (os mando la tabla de paises en una excell), los probaré todos el Lunes, si probais vosotros antes decidme.

XML Petición ejemplo comproobacion nif ESPAÑA
Código:
<?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>
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



Ejemplo xml Petición Nif Extranjero
Código:
<?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>
Curl Extranjero:
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
Ojo: un cif extranjero no es el que empieza por X o Y, esos son cifs extranjeros adaptados a España y hay que comprobarlos según el Curl de España.

Muchísimas gracias por la aportación.
Responder Con Cita
  #11  
Antiguo 04-10-2021
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Poder: 7
ermendalenda Va por buen camino
Cita:
Empezado por JoseLeeTo Ver Mensaje
Muchísimas gracias por la aportación.
Nada. Es buenísimo. Para los cifs españoles no hace falta que mandes nada en el nombre, te lo devuelve. Y te devuelve el cif, si te equivocas de letra te devuelve la letra correcta.
Para los nifs y nie tienes que mandarle una parte del nombre aproximada y te lo devuelve completo, lo que tienen registrado.
Para los ESN se le quita El Es y se manda la consulta a la de España, son los no residentes (Extranjeros con un nif de alta en españa pero no están en el registro ROI), por ejemplo los chinos de Aliexpress, amazon, muchos laboratorios Europeos...



Para los extranjeros: En el primer campo, siempre los 2 caracteres del país, y en el segundo el código. Y te devuelve nombre y dirección, que además creo que la he conseguido formatear para sacar dirección, ciudad, población y cod. Postal(aunque es un algoritmo aprox creo que vale para la mayoría de los casos, ya que al devolver la dirección en un solo campo hay que hacer inventos. Ten en cta que como devuelve la dirección con saltos de líneas (asc(10)) se puede más o menos formatear.

Un consejo, cuando compreis productos chinos, normalmente el proveedor tiene un ESN o un VIES(Registro en el ROI), muchas veces falso, en ese caso no comprar nada, y podeis comprobarlo con estos CURLS.

Última edición por ermendalenda fecha: 04-10-2021 a las 10:03:32.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice newtron Internet 3716 19-01-2026 20:01:34
Como utilizar la ayuda del nuevo Sistema Operativo gluglu Humor 3 24-09-2007 09:39:05
Aplicacion Agencia De Viajes ArdiIIa Varios 9 20-01-2007 16:49:53
El Vasco Aguirre Al González La Taberna 5 26-05-2006 09:22:28
Microsoft ha lanzado su nuevo sistema operativo DarkByte Humor 0 25-01-2004 09:21:14


La franja horaria es GMT +2. Ahora son las 00:30:13.


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