![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1821
|
|||
|
|||
Señor@s... PROBLEMA RESUELTO.
O mejor dicho... motivo descubierto. El problema está en el proceso de envío con NetHTTPClient1. Si utilizo idhttp1, no hay ningún problema y la factura se envía sin problemas, sin cambiar NADA en el proceso de creación del archivo, firma, etc. ¿Cómo puedo saber la diferencia entre lo que envía NetHTTPClient1 y lo que envía idhttp1 para saber dónde está el problema? Estoy más familiarizado con el uso del almacén de certificados en vez de con los archivos directamente y tendría que cambiar la aplicación. (aparte de que ahora NECESITO saber por qué me falla NetHTTPClient1 para poder dormir) Gracias iMia por sugerir el envío con idhttp1. La verdad es que estaba (estábamos) enfocados en que el problema no estaba ahí, sino en la generación del XML o en la firma. Última edición por espinete fecha: 07-10-2021 a las 15:18:32. |
#1822
|
|||
|
|||
La firma o las firmas
Una duda sobe la firma o las firmas.
Se supone que hay tres firmas, la de aplicación, la de usuario y la de dispositivo. No termina de cuadrarme esto, pero por lo que he leido es asi. Y que supongo que esto se puede hacer desasistido... o cada vez que emita una factura, he de seleccionar el certificado de la lista de certificados y firmar el xml? Pero ahora, como incorporo las 3 firmas? o ha de ser una de las tres ? o una que contempla las tres? O es que el software garante ya esta certificado, y se da por supuesto que esa firma esta incluida al usar ese software? Perdón por mis preguntas ya obsoletas... Que veo que andais ya todos en otros pasos del proceso. Supuestamente con Chilkat se podría automatizar todo esto... y hacerlo de forma desasistida, no? Tengo que integrarlo en una aplicación desarrollada en Velneo6, que no permite hacer firmas. Alguien tiene el mismo problema? estoy pensando en hacerlo bajo php, o python.o c++ para que sea un .exe que se ejecute desde Velneo... O lo suyo seria una dll. Gracias! |
#1823
|
|||
|
|||
Hasta ahora yo solo he utilizado dos firmas (usando el mismo certificado, en mi caso)
- Firmar la factura - Firmar el envío No sé hasta qué punto hay que certificar el dispositivo... ¿Y si es un software alojado en la nube, por ejemplo, en Azure? Qué se utiliza en ese caso? Cuál sería el "dispositivo" en ese caso, teniendo en cuenta que en Azure, Google Cloud, AWS, etc. puede haber réplicas exactas de la misma aplicación según el volumen de carga? |
#1824
|
|||
|
|||
Cita:
T Consigue un certificado de firma (o de autónomo o de dispositivo o de lo que sea) con su clave. Aún puedes hacer pruebas sin dar dte alta en software grnté(solo es a una clave que te Dan la forales por rellenar un formulario de compromiso de que el software cumple) este para las pruebas aún no te hace falta. Y con la clave que te den la tienes que escribir en el xml en un campo específico, de momento pon cualquier cosa. Firmar el software (si es una distribución de escritorio(que se instala en un equipo y no se ejecutaen la web o similar) tienes que firmarlo, pero eso no tiene que incluirse en lo que envías. Cada nueva versión tienes que guardar la copia y volver a firmar. (para las pruebas tampoco te hace falta). Pribldma que tu software no puede firmar: Aquí cada uno ha hecho cosas distintas en la medida de lo que conoce, facilidad, costes.ll más adaptable a lo que tengas etcc. Ejemplo usar el firmador.pho que desarrollo un usuario y ejecutarlo con algún servidor php instalado en cualquier sitio. Por ejemplo un servidor XAMPP.. Ejemplo 2, usar librerías que tiene un coste, te facilitan que lo puedes integrar con un montón de softwares, Chilkat, etc.. Usar el firmador de Autofirmacommanline. Exe. No te preocupes si tu software no puede firmar o enviar. Te recomie do que te relee as todo el hilo (todas la s páginas) que al principio es un poco lío pero lte va a despejar todas las dudas. Para enviar puedes usar el software de distribución gratuita CURL. |
#1825
|
|||
|
|||
Cita:
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; } |
#1826
|
|||
|
|||
Cita:
|
#1827
|
|||
|
|||
Cita:
1) Reviso si existen facturas anteriores que no se hayan firmado. 2) Si si, se firman por orden y se intenta envío, pero antes de enviar, se comprueba si existen anteriores sin enviar. 3) Si sí, se empiezan a enviar por orden desde la primera sin enviar hasta la última Así no tendría que estar comprobando constantemente si hay conexión o no. ¿Le veis algún problema a este método? |
#1828
|
|||
|
|||
Cita:
|
#1829
|
|||
|
|||
Cita:
|
#1830
|
|||
|
|||
Ah claro en ese caso sí, pero no sé si hay que tenr cuidado de que si tienes que mandarla también por Sii en que orden, es mejor firmarlas antes y enviarlas por si hacen un control, quien va antes el huevo o la gallina?
|
#1831
|
||||
|
||||
Hola a todos.
Bizkaia ha actualizado los documentos en su página web. Se han publicado los siguientes documentos del LROE: Validaciones y errores LROE 1.0.6 Entorno piloto del LROE 1.0.0 Pero siguen sin tener los servidores en marcha. ![]() |
#1832
|
|||
|
|||
Cita:
muchas gracias por tu respuesta. Si que había pensado una solución basada en php, o quizás hago una dll en C++ para que sea todo mas rápido. La duda que me queda, es si es posible automatizarlo tanto que no sea necesario que el usuario seleccione el certificado del almacén. Y si el certificado de dispositivo y de entidad empresarial pueden ser el mismo. Es decir, es uno de los dos, no los dos certificados simultáneamente. Que la documentación al respecto es muy confusa. Gracias de antemano Carlos |
#1833
|
||||
|
||||
Cita:
|
#1834
|
|||
|
|||
Cita:
Creo que te estás liando un poco. A ver, lo importante es usar un certificado para: - Firmar el XML - Enviar el XML a Hacienda Foral Se pueden dar dos casos: 1.- Estás firmando en el mismo equipo que factura. Esto se llama, según la normativa, "arquitectura con firma en cliente" 2.- Estás firmando en un servidor (equipo diferente al que factura). Entonces es "arquitectura con firma en servidor". Para el caso 1 se pueden emplear para la firma: - Certificado de persona física - Certificado de representante de entidad - Certificado de autónomo (estreno en nuestras pantallas ![]() - Sello de empresa - Certificado de dispositivo (de Izenpe, gratis y para 10 años) Para el caso 2, se admiten los mismos certificados que para el caso 1, a excepción del certificado de dispositivo, que no es válido en este caso de "arquitectura con firma en servidor". Otro tema separado es la firma de la aplicación. Este caso es si la aplicación de facturación (con software garante) se distribuye e instala mediante un único fichero (clásico fichero .exe para Windows) En este caso, se precisa que el fichero que se distribuye vaya firmado con un certificado de aplicación (que es un engendro raro y caro que venden algunos proveedores de este tipo de productos) que dirá en el momento de la instalación que el fichero está firmado por la entidad tal y cual. Y, en este caso, se deben guardar las versiones anteriores para posibles inspecciones. Mi consejo es el de siempre: mejor firma en una máquina diferente a la que factura y a la que no tenga acceso de manipulación el cliente. Más que nada para evitar que tú, como desarrollador puedas ir a la cárcel por manipulación ![]() Saludos |
#1835
|
|||
|
|||
Cita:
|
#1836
|
|||
|
|||
Cita:
Borra eso de "borrar la factura". Ahora eso es delito muy grave y puedes acabar en busca y captura ![]() Si quieres, di mejor: "anular la factura", que eso sí está permitido y no tiene peligro de cárcel ![]() Saludos |
#1837
|
|||
|
|||
Cita:
![]() ![]() ![]() ![]() |
#1838
|
||||
|
||||
![]() Cita:
![]() ![]() |
#1839
|
|||
|
|||
Tengo una pequeña duda, no se si alguno sabrá ayudarme.
Puedo subir unicamente facturas simplificadas? Yo solamente subiré facturas simplificadas. Los clientes realizan encargos, dejan dinero a cuenta del producto, y pueden tardar 3 meses en pagarlo. Por ejemplo: 3 Cobros = 3 facturas simplificadas. Ahora bien, viene el cliente y anula esa venta por que ya no la quiere. Que hago? genero 3 ticketBai ANULACION? cada uno haciendo referencia a cada factura simplificada? |
#1840
|
|||
|
|||
Cita:
Hay varias formas de hacerlo pero lo importante es que si haces un ingreso tienes que por supuesto hacer factura. Mi caso es parecido, me hacen un encargo que tardan unos días en recoger y me pagan algo a cta, ese acta tengo que Hcer una fa tura prorratenafolo ea itativamebte a los tipos impositivos del contenido del pedido. Cuando recogen el pedido me pagan el resto y hago una factura en negativo del importe que me dieron acta y la factura del pedido. En tu caso parece que das mercancía a crédito, en ese caso creo que tienes que hacer una factura completa, pero eso es más complicado. Yo en vez de hacer una negativa lo meto en la misma factura final con lo cual si me han pagado entero actase quedara total 0. Última edición por ermendalenda fecha: 08-10-2021 a las 17:52:08. |
![]() |
|
|
![]() |
||||
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 | 3706 | Hace 2 Semanas 09:38:43 |
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 |
![]() |
|