Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2021
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 112
Poder: 5
unomasmas Va por buen camino
Cita:
Empezado por ermendalenda Ver Mensaje
El último crc del último caso está mal.
No puedes poner el mismo. Tienes que calcularlo según lo que has cambiado. Es lioso pero es así
No sé si ya lo has solucionado. Si no, como creo que también lo estás programando en C#, por si te sirve (si no a ti, tal vez a otro) dejo la función que tengo por ahora y un par de ellas auxiliares para obtener el dato.
Código:
/// <summary>
/// Obtiene la cadena para el código QR
/// </summary>
/// <param name="xmlFile">Fichero XML del que obtener info: Fichero Ticket-BAI</param>
/// <param name="serverConsulta">la parte fija de conexión al servidor, según la Diputación</param>
/// <param name="encoded">Codificamos o no?</param>
/// <param name="tBaiId">Opcional. Podemos pasar el identificador TBAI. Si no, lo obtiene del XML Ticket-BAI</param>
/// <returns></returns>
public static string GetQRCodeString(string xmlFile, string serverConsulta, bool encoded, string tBaiId="")
{
    try
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlFile);

        if (tBaiId == string.Empty)
        {
            tBaiId = GetTBaiId(xmlFile);
        }
        if (encoded)
        {
            tBaiId = GetURLEncodedString(tBaiId);
        }

        string result = serverConsulta;
        result += @"?id=" + tBaiId;
        result += @"&s=" + xmlDoc.DocumentElement.GetValue("//Factura/CabeceraFactura/SerieFactura");
        result += @"&nf=" + xmlDoc.DocumentElement.GetValue("//Factura/CabeceraFactura/NumFactura");
        result += @"&i=" + xmlDoc.DocumentElement.GetValue("//Factura/DatosFactura/ImporteTotalFactura");
        result += @"&cr=" + GetCrc8(result);

        return result;
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
        return null;
    }
}

/// <summary>
/// Obtiene identificador TBAI
/// </summary>
/// <param name="xmlFile">Fichero Ticket-BAI de donde sacar la info para obtener el identificar</param>
/// <returns>Cadena con el identificador</returns>
public static string GetTBaiId(string xmlFile)
{
    try
    {
        string result;
        string separador = "-";
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlFile);

        string nif = xmlDoc.DocumentElement.GetValue("//Sujetos/Emisor/NIF").PadLeft(9, '0');  //9 NIF Emisor

        string fechaExpedicion = xmlDoc.DocumentElement.GetValue("//Factura/CabeceraFactura/FechaExpedicionFactura");  //Fecha Formato dd-mm-yyyy
        DateTime parsedDate;
        DateTime.TryParseExact(fechaExpedicion, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate);
        fechaExpedicion = parsedDate.ToString("ddMMyy");

        string signatureValue = GetSignatureValue(xmlDoc, 13);

        result = "TBAI" + separador;
        result += nif + separador;
        result += fechaExpedicion + separador;
        result += signatureValue + separador;
        result += GetCrc8(result);

        return result;
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
        return null;
    }
}

/// <summary>
/// Codifica una cadena para dar formato URI
/// </summary>
/// <param name="inputString">La cadena a codificar</param>
/// <returns>La cadena codificada</returns>
private static string GetURLEncodedString(string inputString)
{
    string result = Uri.EscapeDataString(inputString);
    return result;
}
Responder Con Cita
  #2  
Antiguo 24-11-2023
MrRipley MrRipley is offline
Registrado
 
Registrado: nov 2023
Posts: 2
Poder: 0
MrRipley Va por buen camino
Consulta función GetCrc8

Hola, unomasmas
Igual te sorprende una respuesta a tu post 4 años después de publicarlo, pero estoy con un programa de TicketBai que no consigo rematar.
Tu código me puede ser útil, pero me falta el punto más importante para mí código:

¿Cuál es la implementación para tu función "GetCrc8"?

Estoy creando links de QR con Batuz, Bizkaia, y me falla siempre el código CRC. He probado varias funciones. El algoritmo de la documentación está en java. He hecho "mi versión" del mismo, pero los códigos CRC siguen siendo incorrectos.
Un saludo


Cita:
Empezado por unomasmas Ver Mensaje
No sé si ya lo has solucionado. Si no, como creo que también lo estás programando en C#, por si te sirve (si no a ti, tal vez a otro) dejo la función que tengo por ahora y un par de ellas auxiliares para obtener el dato.
Código:
/// <summary>
/// Obtiene la cadena para el código QR
/// </summary>
/// <param name="xmlFile">Fichero XML del que obtener info: Fichero Ticket-BAI</param>
/// <param name="serverConsulta">la parte fija de conexión al servidor, según la Diputación</param>
/// <param name="encoded">Codificamos o no?</param>
/// <param name="tBaiId">Opcional. Podemos pasar el identificador TBAI. Si no, lo obtiene del XML Ticket-BAI</param>
/// <returns></returns>
public static string GetQRCodeString(string xmlFile, string serverConsulta, bool encoded, string tBaiId="")
{
    try
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlFile);

        if (tBaiId == string.Empty)
        {
            tBaiId = GetTBaiId(xmlFile);
        }
        if (encoded)
        {
            tBaiId = GetURLEncodedString(tBaiId);
        }

        string result = serverConsulta;
        result += @"?id=" + tBaiId;
        result += @"&s=" + xmlDoc.DocumentElement.GetValue("//Factura/CabeceraFactura/SerieFactura");
        result += @"&nf=" + xmlDoc.DocumentElement.GetValue("//Factura/CabeceraFactura/NumFactura");
        result += @"&i=" + xmlDoc.DocumentElement.GetValue("//Factura/DatosFactura/ImporteTotalFactura");
        result += @"&cr=" + GetCrc8(result);

        return result;
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
        return null;
    }
}

/// <summary>
/// Obtiene identificador TBAI
/// </summary>
/// <param name="xmlFile">Fichero Ticket-BAI de donde sacar la info para obtener el identificar</param>
/// <returns>Cadena con el identificador</returns>
public static string GetTBaiId(string xmlFile)
{
    try
    {
        string result;
        string separador = "-";
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(xmlFile);

        string nif = xmlDoc.DocumentElement.GetValue("//Sujetos/Emisor/NIF").PadLeft(9, '0');  //9 NIF Emisor

        string fechaExpedicion = xmlDoc.DocumentElement.GetValue("//Factura/CabeceraFactura/FechaExpedicionFactura");  //Fecha Formato dd-mm-yyyy
        DateTime parsedDate;
        DateTime.TryParseExact(fechaExpedicion, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out parsedDate);
        fechaExpedicion = parsedDate.ToString("ddMMyy");

        string signatureValue = GetSignatureValue(xmlDoc, 13);

        result = "TBAI" + separador;
        result += nif + separador;
        result += fechaExpedicion + separador;
        result += signatureValue + separador;
        result += GetCrc8(result);

        return result;
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message, System.Reflection.MethodBase.GetCurrentMethod().Name, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
        return null;
    }
}

/// <summary>
/// Codifica una cadena para dar formato URI
/// </summary>
/// <param name="inputString">La cadena a codificar</param>
/// <returns>La cadena codificada</returns>
private static string GetURLEncodedString(string inputString)
{
    string result = Uri.EscapeDataString(inputString);
    return result;
}
Responder Con Cita
  #3  
Antiguo 24-11-2023
MaeseKvothe MaeseKvothe is offline
Miembro
 
Registrado: abr 2023
Posts: 15
Poder: 0
MaeseKvothe Va por buen camino
Cita:
Empezado por MrRipley Ver Mensaje
Hola, unomasmas
Igual te sorprende una respuesta a tu post 4 años después de publicarlo, pero estoy con un programa de TicketBai que no consigo rematar.
Tu código me puede ser útil, pero me falta el punto más importante para mí código:

¿Cuál es la implementación para tu función "GetCrc8"?

Estoy creando links de QR con Batuz, Bizkaia, y me falla siempre el código CRC. He probado varias funciones. El algoritmo de la documentación está en java. He hecho "mi versión" del mismo, pero los códigos CRC siguen siendo incorrectos.
Un saludo

No viene directamente a mí la pregunta pero yo también lo tengo hecho en C#, así que tal vez te pueda echar una mano aunque a mi función no la he llamado "GetCrc8".
Te paso la clase completa:
Código Delphi [-]
    public class CRC8Calc
    {
        private const string UTF_8 = "UTF-8";
        private static byte[] crc8_table = new byte[] { (byte) 0x00, (byte) 0x07, (byte) 0x0E, (byte) 0x09, (byte) 0x1C, (byte) 0x1B, (byte) 0x12, (byte) 0x15,
(byte) 0x38, (byte) 0x3F, (byte) 0x36, (byte) 0x31, (byte) 0x24, (byte) 0x23, (byte) 0x2A, (byte) 0x2D,
(byte) 0x70, (byte) 0x77, (byte) 0x7E, (byte) 0x79, (byte) 0x6C, (byte) 0x6B, (byte) 0x62, (byte) 0x65,
(byte) 0x48, (byte) 0x4F, (byte) 0x46, (byte) 0x41, (byte) 0x54, (byte) 0x53, (byte) 0x5A, (byte) 0x5D,
(byte) 0xE0, (byte) 0xE7, (byte) 0xEE, (byte) 0xE9, (byte) 0xFC, (byte) 0xFB, (byte) 0xF2, (byte) 0xF5,
(byte) 0xD8, (byte) 0xDF, (byte) 0xD6, (byte) 0xD1, (byte) 0xC4, (byte) 0xC3, (byte) 0xCA, (byte) 0xCD,
(byte) 0x90, (byte) 0x97, (byte) 0x9E, (byte) 0x99, (byte) 0x8C, (byte) 0x8B, (byte) 0x82, (byte) 0x85,
(byte) 0xA8, (byte) 0xAF, (byte) 0xA6, (byte) 0xA1, (byte) 0xB4, (byte) 0xB3, (byte) 0xBA, (byte) 0xBD,
(byte) 0xC7, (byte) 0xC0, (byte) 0xC9, (byte) 0xCE, (byte) 0xDB, (byte) 0xDC, (byte) 0xD5, (byte) 0xD2,
(byte) 0xFF, (byte) 0xF8, (byte) 0xF1, (byte) 0xF6, (byte) 0xE3, (byte) 0xE4, (byte) 0xED, (byte) 0xEA,
(byte) 0xB7, (byte) 0xB0, (byte) 0xB9, (byte) 0xBE, (byte) 0xAB, (byte) 0xAC, (byte) 0xA5, (byte) 0xA2,
(byte) 0x8F, (byte) 0x88, (byte) 0x81, (byte) 0x86, (byte) 0x93, (byte) 0x94, (byte) 0x9D, (byte) 0x9A,
(byte) 0x27, (byte) 0x20, (byte) 0x29, (byte) 0x2E, (byte) 0x3B, (byte) 0x3C, (byte) 0x35, (byte) 0x32,
(byte) 0x1F, (byte) 0x18, (byte) 0x11, (byte) 0x16, (byte) 0x03, (byte) 0x04, (byte) 0x0D, (byte) 0x0A,
(byte) 0x57, (byte) 0x50, (byte) 0x59, (byte) 0x5E, (byte) 0x4B, (byte) 0x4C, (byte) 0x45, (byte) 0x42,
(byte) 0x6F, (byte) 0x68, (byte) 0x61, (byte) 0x66, (byte) 0x73, (byte) 0x74, (byte) 0x7D, (byte) 0x7A,
(byte) 0x89, (byte) 0x8E, (byte) 0x87, (byte) 0x80, (byte) 0x95, (byte) 0x92, (byte) 0x9B, (byte) 0x9C,
(byte) 0xB1, (byte) 0xB6, (byte) 0xBF, (byte) 0xB8, (byte) 0xAD, (byte) 0xAA, (byte) 0xA3, (byte) 0xA4,
(byte) 0xF9, (byte) 0xFE, (byte) 0xF7, (byte) 0xF0, (byte) 0xE5, (byte) 0xE2, (byte) 0xEB, (byte) 0xEC,
(byte) 0xC1, (byte) 0xC6, (byte) 0xCF, (byte) 0xC8, (byte) 0xDD, (byte) 0xDA, (byte) 0xD3, (byte) 0xD4,
(byte) 0x69, (byte) 0x6E, (byte) 0x67, (byte) 0x60, (byte) 0x75, (byte) 0x72, (byte) 0x7B, (byte) 0x7C,
(byte) 0x51, (byte) 0x56, (byte) 0x5F, (byte) 0x58, (byte) 0x4D, (byte) 0x4A, (byte) 0x43, (byte) 0x44,
(byte) 0x19, (byte) 0x1E, (byte) 0x17, (byte) 0x10, (byte) 0x05, (byte) 0x02, (byte) 0x0B, (byte) 0x0C,
(byte) 0x21, (byte) 0x26, (byte) 0x2F, (byte) 0x28, (byte) 0x3D, (byte) 0x3A, (byte) 0x33, (byte) 0x34,
(byte) 0x4E, (byte) 0x49, (byte) 0x40, (byte) 0x47, (byte) 0x52, (byte) 0x55, (byte) 0x5C, (byte) 0x5B,
(byte) 0x76, (byte) 0x71, (byte) 0x78, (byte) 0x7F, (byte) 0x6A, (byte) 0x6D, (byte) 0x64, (byte) 0x63,
(byte) 0x3E, (byte) 0x39, (byte) 0x30, (byte) 0x37, (byte) 0x22, (byte) 0x25, (byte) 0x2C, (byte) 0x2B,
(byte) 0x06, (byte) 0x01, (byte) 0x08, (byte) 0x0F, (byte) 0x1A, (byte) 0x1D, (byte) 0x14, (byte) 0x13,
(byte) 0xAE, (byte) 0xA9, (byte) 0xA0, (byte) 0xA7, (byte) 0xB2, (byte) 0xB5, (byte) 0xBC, (byte) 0xBB,
(byte) 0x96, (byte) 0x91, (byte) 0x98, (byte) 0x9F, (byte) 0x8A, (byte) 0x8D, (byte) 0x84, (byte) 0x83,
(byte) 0xDE, (byte) 0xD9, (byte) 0xD0, (byte) 0xD7, (byte) 0xC2, (byte) 0xC5, (byte) 0xCC, (byte) 0xCB,
(byte) 0xE6, (byte) 0xE1, (byte) 0xE8, (byte) 0xEF, (byte) 0xFA, (byte) 0xFD, (byte) 0xF4, (byte) 0xF3 };
        public static String Calculate(string input)
        {
            byte[] data = Encoding.ASCII.GetBytes(input);
            int len = data.Length;
            int crc = 0;
            for (int i = 0; i < len; i++)
            {
                crc = CRC8Calc.crc8_table[(crc ^ data[i]) & 0xff];
            }
            return String.Format("{0:000}", crc & 0xFFL);
        }
    }

Última edición por Casimiro Notevi fecha: 24-11-2023 a las 20:20:28.
Responder Con Cita
  #4  
Antiguo 24-11-2023
MrRipley MrRipley is offline
Registrado
 
Registrado: nov 2023
Posts: 2
Poder: 0
MrRipley Va por buen camino
Gracias!

Pruebo con tu código.
¡Muchas gracias!
Responder Con Cita
  #5  
Antiguo 27-11-2023
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: 18.323
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
Cita:
Empezado por MrRipley Ver Mensaje
¿Cuál es la implementación para tu función "GetCrc8"?

Al inicio de este hilo, en el mensaje 2, hay links a implementaciones de código de diferentes temas, entre ellos varias implementaciones del CRC8.
__________________
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.
Responder Con Cita
  #6  
Antiguo 27-11-2023
VictorCasajuana VictorCasajuana is offline
Registrado
 
Registrado: oct 2022
Posts: 1
Poder: 0
VictorCasajuana Va por buen camino
validar xml con xsd

Hola!
He estado revisando en el hilo si alguien validaba los xml generados contra los xsd y no veo que nadie lo haga. No es buena práctica? me estoy planteando validarlos antes de enviarlos para minimizar los errores.
Gracias!
Responder Con Cita
  #7  
Antiguo 27-11-2023
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Poder: 5
Sistel Va por buen camino
Cita:
Empezado por VictorCasajuana Ver Mensaje
Hola!
He estado revisando en el hilo si alguien validaba los xml generados contra los xsd y no veo que nadie lo haga. No es buena práctica? me estoy planteando validarlos antes de enviarlos para minimizar los errores.
Gracias!
Hola,

Yo utilizo PHP y valido en XML creado contra el XSD
Código PHP:
function VALIDAR_XML($xml$fichero_xsd) {
    
// Valida un string xml frente a un fichero de esquema xsd
    // No devuelve nada si ha ido bien y los errores si ha ido mal
    
libxml_use_internal_errors(true);
    
$domDocument = new DOMDocument();
    
$domDocument->loadXML($xml);
    if (!
$domDocument->schemaValidate($fichero_xsd)) {
        
$errores libxml_get_errors();
        
libxml_clear_errors();        
        return 
$errores// Devuelve array de errores si los hay o nada si no hay errores
    
}

Eso sí, la función DOMDocument::schemaValidate de PHP no permite que la URL del schemaLocation sea externa.
Así que tuve que cambiar la línea de import del XSD a:
Código:
<import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
y guardar el fichero xmldsig-core-schema.xsd en el mismo directorio.

Pero funciona perfecto y valida frente al XSD.

Saludos
Responder Con Cita
  #8  
Antiguo 28-11-2023
unomasmas unomasmas is offline
Miembro
 
Registrado: dic 2019
Posts: 112
Poder: 5
unomasmas Va por buen camino
Cita:
Empezado por MrRipley Ver Mensaje
Hola, unomasmas
Igual te sorprende una respuesta a tu post 4 años después de publicarlo, pero estoy con un programa de TicketBai que no consigo rematar.
Tu código me puede ser útil, pero me falta el punto más importante para mí código:

¿Cuál es la implementación para tu función "GetCrc8"?

Estoy creando links de QR con Batuz, Bizkaia, y me falla siempre el código CRC. He probado varias funciones. El algoritmo de la documentación está en java. He hecho "mi versión" del mismo, pero los códigos CRC siguen siendo incorrectos.
Un saludo
Así es como lo tengo yo:
Código:
        private static readonly byte[] _crc8Table = new byte[] {
            (byte) 0x00, (byte) 0x07, (byte) 0x0E, (byte) 0x09, (byte) 0x1C, (byte) 0x1B, (byte) 0x12, (byte) 0x15,
            (byte) 0x38, (byte) 0x3F, (byte) 0x36, (byte) 0x31, (byte) 0x24, (byte) 0x23, (byte) 0x2A, (byte) 0x2D,
            (byte) 0x70, (byte) 0x77, (byte) 0x7E, (byte) 0x79, (byte) 0x6C, (byte) 0x6B, (byte) 0x62, (byte) 0x65,
            (byte) 0x48, (byte) 0x4F, (byte) 0x46, (byte) 0x41, (byte) 0x54, (byte) 0x53, (byte) 0x5A, (byte) 0x5D,
            (byte) 0xE0, (byte) 0xE7, (byte) 0xEE, (byte) 0xE9, (byte) 0xFC, (byte) 0xFB, (byte) 0xF2, (byte) 0xF5,
            (byte) 0xD8, (byte) 0xDF, (byte) 0xD6, (byte) 0xD1, (byte) 0xC4, (byte) 0xC3, (byte) 0xCA, (byte) 0xCD,
            (byte) 0x90, (byte) 0x97, (byte) 0x9E, (byte) 0x99, (byte) 0x8C, (byte) 0x8B, (byte) 0x82, (byte) 0x85,
            (byte) 0xA8, (byte) 0xAF, (byte) 0xA6, (byte) 0xA1, (byte) 0xB4, (byte) 0xB3, (byte) 0xBA, (byte) 0xBD,
            (byte) 0xC7, (byte) 0xC0, (byte) 0xC9, (byte) 0xCE, (byte) 0xDB, (byte) 0xDC, (byte) 0xD5, (byte) 0xD2,
            (byte) 0xFF, (byte) 0xF8, (byte) 0xF1, (byte) 0xF6, (byte) 0xE3, (byte) 0xE4, (byte) 0xED, (byte) 0xEA,
            (byte) 0xB7, (byte) 0xB0, (byte) 0xB9, (byte) 0xBE, (byte) 0xAB, (byte) 0xAC, (byte) 0xA5, (byte) 0xA2,
            (byte) 0x8F, (byte) 0x88, (byte) 0x81, (byte) 0x86, (byte) 0x93, (byte) 0x94, (byte) 0x9D, (byte) 0x9A,
            (byte) 0x27, (byte) 0x20, (byte) 0x29, (byte) 0x2E, (byte) 0x3B, (byte) 0x3C, (byte) 0x35, (byte) 0x32,
            (byte) 0x1F, (byte) 0x18, (byte) 0x11, (byte) 0x16, (byte) 0x03, (byte) 0x04, (byte) 0x0D, (byte) 0x0A,
            (byte) 0x57, (byte) 0x50, (byte) 0x59, (byte) 0x5E, (byte) 0x4B, (byte) 0x4C, (byte) 0x45, (byte) 0x42,
            (byte) 0x6F, (byte) 0x68, (byte) 0x61, (byte) 0x66, (byte) 0x73, (byte) 0x74, (byte) 0x7D, (byte) 0x7A,
            (byte) 0x89, (byte) 0x8E, (byte) 0x87, (byte) 0x80, (byte) 0x95, (byte) 0x92, (byte) 0x9B, (byte) 0x9C,
            (byte) 0xB1, (byte) 0xB6, (byte) 0xBF, (byte) 0xB8, (byte) 0xAD, (byte) 0xAA, (byte) 0xA3, (byte) 0xA4,
            (byte) 0xF9, (byte) 0xFE, (byte) 0xF7, (byte) 0xF0, (byte) 0xE5, (byte) 0xE2, (byte) 0xEB, (byte) 0xEC,
            (byte) 0xC1, (byte) 0xC6, (byte) 0xCF, (byte) 0xC8, (byte) 0xDD, (byte) 0xDA, (byte) 0xD3, (byte) 0xD4,
            (byte) 0x69, (byte) 0x6E, (byte) 0x67, (byte) 0x60, (byte) 0x75, (byte) 0x72, (byte) 0x7B, (byte) 0x7C,
            (byte) 0x51, (byte) 0x56, (byte) 0x5F, (byte) 0x58, (byte) 0x4D, (byte) 0x4A, (byte) 0x43, (byte) 0x44,
            (byte) 0x19, (byte) 0x1E, (byte) 0x17, (byte) 0x10, (byte) 0x05, (byte) 0x02, (byte) 0x0B, (byte) 0x0C,
            (byte) 0x21, (byte) 0x26, (byte) 0x2F, (byte) 0x28, (byte) 0x3D, (byte) 0x3A, (byte) 0x33, (byte) 0x34,
            (byte) 0x4E, (byte) 0x49, (byte) 0x40, (byte) 0x47, (byte) 0x52, (byte) 0x55, (byte) 0x5C, (byte) 0x5B,
            (byte) 0x76, (byte) 0x71, (byte) 0x78, (byte) 0x7F, (byte) 0x6A, (byte) 0x6D, (byte) 0x64, (byte) 0x63,
            (byte) 0x3E, (byte) 0x39, (byte) 0x30, (byte) 0x37, (byte) 0x22, (byte) 0x25, (byte) 0x2C, (byte) 0x2B,
            (byte) 0x06, (byte) 0x01, (byte) 0x08, (byte) 0x0F, (byte) 0x1A, (byte) 0x1D, (byte) 0x14, (byte) 0x13,
            (byte) 0xAE, (byte) 0xA9, (byte) 0xA0, (byte) 0xA7, (byte) 0xB2, (byte) 0xB5, (byte) 0xBC, (byte) 0xBB,
            (byte) 0x96, (byte) 0x91, (byte) 0x98, (byte) 0x9F, (byte) 0x8A, (byte) 0x8D, (byte) 0x84, (byte) 0x83,
            (byte) 0xDE, (byte) 0xD9, (byte) 0xD0, (byte) 0xD7, (byte) 0xC2, (byte) 0xC5, (byte) 0xCC, (byte) 0xCB,
            (byte) 0xE6, (byte) 0xE1, (byte) 0xE8, (byte) 0xEF, (byte) 0xFA, (byte) 0xFD, (byte) 0xF4, (byte) 0xF3 };

        /// <summary>
        /// Calculate the CRC value with data from input string.
        /// </summary>
        /// <param name="input">input string</param>
        /// <returns>The calculated CRC value. Left padding with zeros</returns>
        private string GetCrc8(string input)
        {
            try
            {
                byte[] data = System.Text.Encoding.UTF8.GetBytes(input);
                int len = data.Length;
                byte crc = 0;
                for (int i = 0; i < len; i++)
                    crc = _crc8Table[(crc ^ data[i]) & 0xff];
                long a = (crc & 0xFFL);
                return a.ToString("D3");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message,  System.Reflection.MethodBase.GetCurrentMethod().Name,  MessageBoxButtons.OK, MessageBoxIcon.Error,  MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                return null;
            }
        }
Responder Con Cita
  #9  
Antiguo 05-12-2023
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Poder: 5
Sistel Va por buen camino
Hola,

Hemos recibido email, de TicketBAI de Gipuzkoa, de aviso de cambios de la estructura de los XML a partir del 1 de enero de 2024.
Se acompaña de los nuevos XSD.

No puedo subir el documento porque el foro no me permite ese tamaño de fichero.
Si el administrador puede subirlo, se agradece.

Saludos
Responder Con Cita
  #10  
Antiguo 05-12-2023
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: 18.323
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
Cita:
Empezado por Sistel Ver Mensaje
Hemos recibido email, de TicketBAI de Gipuzkoa, de aviso de cambios de la estructura de los XML a partir del 1 de enero de 2024.
Se acompaña de los nuevos XSD.
Yo e recibido el mail.
Creo que las modificaciones de las que habla, son la que ya han comentado las otras administraciones.
De todas formas, pone que en "breve se publicarán" los esquemas. Yo los descargué ayer y siguen estando en la web los de la v.1.2.1 .

Si disponéis de los nuevos de la versión 1.2.2, dímelo y me los envías por privado y los subo a la web.

Me corrijo yo mismo. En la web de Guipuzcoa y de Álava está la v.1.2.1, pero en la de Vizcaya ya está la v.1.2.2 (alta / anulación)

Los subo al FTP y modifico el mensaje #1 del hilo.
__________________
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: 05-12-2023 a las 11:56:23.
Responder Con Cita
  #11  
Antiguo 05-12-2023
Sistel Sistel is offline
Miembro
 
Registrado: nov 2019
Ubicación: Bilbao
Posts: 373
Poder: 5
Sistel Va por buen camino
Hola,

Os paso los nuevos XSD de la versión 1.2.2 enviados por Gipuzkoa.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip TicketBAI Alta Anulacion Zuzendu Osatu1_2_2.zip (11,6 KB, 6 visitas)
Responder Con Cita
  #12  
Antiguo 05-12-2023
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: 18.323
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
Cita:
Empezado por Sistel Ver Mensaje
Os paso los nuevos XSD de la versión 1.2.2 enviados por Gipuzkoa.
Gracias.
Los subo por separado y actualizo el primer mensaje, porque los de TicketBAI deberían ser iguales para las 3 administraciones, OSATU y ZUZENDU sólo para Guipuzcoa.
__________________
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.
Responder Con Cita
Respuesta



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 3559 Hace 5 Horas 20:02:30
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 02:00:53.


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