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

 
 
Herramientas Buscar en Tema Desplegado
  #11  
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
 



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 1 Día 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 22:52:11.


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