FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1761
|
|||
|
|||
Hola, he leído en Linkedin un mensaje de que ha habido una ponencia de Javier Hurtado que habla de algo de que están estudiando que los del SII yengan obligación de verifactu o que los de autofacturas sii hagan verifactu.como no se entendía muy bien el mensaje, os pregunto si alguno tenéis noticia de ese congreso/ponencia.
Gracias |
#1762
|
|||
|
|||
Cita:
https://www.boe.es/diario_boe/txt.ph...OE-A-2024-2097 |
#1763
|
||||
|
||||
#1764
|
|||
|
|||
Madre mía.
No creo que siga dando ponencias de verifactu Aunque todo es posible |
#1765
|
|||
|
|||
Posiblemente ahora si tendrá mucho más tiempo para hacer ponencias, de hecho, las está haciendo, creo que he visto una con Wolter Kluvers y fue hace un mes, creo recordar, osea, después de su despido.
|
#1766
|
||||
|
||||
El tipo ese es un vendido a los "fachas".
|
#1767
|
|||
|
|||
Firma Digital por DLL y XML schema binding de facturae
Hola
OS dejo mi planteamiento sobre la generación de XML y Firma por si le sirve a alguien para algo o le sirve de idea. La idea es aplicar el sistema de Firma por DLL para Verifactu y para facturae. 1-Guardar el certificado digital y la contraseña encriptada en la base de datos Código:
FileStream := TMemoryStream.Create; FileStream.LoadFromFile(Filename); // Fichero del certificado TempStream := TMemoryStream.Create; TempStream := EncriptarStream(FileStream); TBlobField(Dataset.FieldByName('CertFirmaDigital')).LoadFromStream(TempStream); Me acordé que hace unos años compré xmlblackbox para Delphi XE3 y no lo había usado nunca. Se me ocurrió que para no andar comprando librerias constantemente , se podía hacer una DLL con Delphi XE3 para firmar y poder usarla con mis aplicaciones de Delphi 11, etc... Código de la DLL con la funcion de firma en la carpeta DLLFirma y también las DLL compiladas por si sacan a alguien del paso, dejo el enlace para la descarga porque es demasiado grande para adjuntar con las DLL compiladas h t t p s : // drive.google.com/file/d/1vrtpSGHje-l-3XW6peIGqYxHkH0g9aYx/view?usp=drive_link Código:
// Para comprobar si un certificvado es Valido , pasando un IStream function StreamCertificadoValido(CertStream : IStream ; Password : Pchar) : Boolean; StdCall; // Para comprobar si un certificvado es Valido , pasando un String con la ubicación del fichero function FicheroCertificadoValido(Filename,Password : Pchar) : Boolean; StdCall; // Para firmar el XML , devuelve el XML Firmado function FirmaFacturae(CertStream,XMLFacturae : IStream ; Password : Pchar): Pchar; StdCall; // Para obtener cierta información del certificado (La idea final es devolver un XML con todo, pero...) function DatoCertificado(CertStream : IStream ; Password,Dato : Pchar) : Pchar; StdCall; Código:
// Ejemplos LLamada a las funciones de la DLL desde la Aplicacion //Definir las funciones function FirmaFacturae(CertStream,XMLFacturae : IStream ; Password : Pchar): Pchar; StdCall; external 'DLLFirmaCrt.x32.dll'; function FicheroCertificadoValido(Filename,Password : Pchar) : Boolean; StdCall; external 'DLLFirmaCrt.x32.dll' name 'FicheroCertificadoValido'; function StreamCertificadoValido(CertStream : IStream ; Password : Pchar) : Boolean; StdCall; external 'DLLFirmaCrt.x32.dll' name 'StreamCertificadoValido'; function DatoCertificado(CertStream : IStream ; Password,Dato : Pchar) : Pchar; StdCall; external 'DLLFirmaCrt.x32.dll' name 'DatoCertificado'; // Firmar XML facturae con la DLL procedure TFr_user.ButtonClick(Sender: TObject); var Fichero,XMLString,ResultadoXML : String; var XSendCertificadoFirma,SendXMLStream : IStream; var XMLFileStream : TStringStream; var TempStream : TMemoryStream; begin { Fichero := 'nombre del fichero xml o directamente usar XMLString' } XMLString := TFile.ReadAllText(Fichero,TEncoding.Unicode); // Test de firma // El certificado TBlobField(Dataset.FieldByName('CertFirmaDigital')).SaveToStream(TempStream); // Lo desencriptamos XCertificadoFirma := DesencriptarStream(TempStream); XCertificadoFirma.Seek(0,soFromBeginning); XSendCertificadoFirma := TStreamAdapter.Create(XCertificadoFirma, soReference); //soOwned //El XMl A firmar XMLFileStream := TStringStream.Create(XMLString,TEncoding.Unicode); SendXMLStream := TStreamAdapter.Create(XMLFileStream, soReference); // Adap`tamos a IStream if XSendCertificadoFirma <> nil then Begin ResultadoXML := FirmaFacturae(XSendCertificadoFirma,SendXMLStream,Pchar(XCertificadoPass)); // SI ho hay error , guardamos el fichero if Copy(ResultadoXML,1,7) <> '<Error>' then Begin TFile.WriteAllText(FicheroFirmado,ResultadoXML,TEncoding.Unicode); End else Begin // Error f_control(nil,'M',f_frase('NO SE HA PODIDO FIRMAR DIGITALMENTE LA FACTURA.',0),ResultadoXML,''); End; End else Begin //Showmessage('No hay certificado'); End; XMLFileStream.Free; SendXMLStream := nil; end; 3- Mi planteamiento de como generar el XML verifactu ya corre por este hilo. 4- Para generar el XML facturae. Usar el esquema que proporciona la AEAT y con XML Schema Binding generar el Pas "SistemaFacturaev3_2_2.pas" , lo adjunto en la carpetas Facturae. UFacturaE.pas es un ejemplo no terminado 100% de como se genera facilmente el XML Facturae, funciona , pero añadir cosas, solo es un ejemplo de como usar SistemaFacturaev3_2_2.pas Saludos --------------------------------------------------------------------------------------------------------------- NOTA DEL MODERADOR: Añado los ficheros al FTP del club (junto a la documentación), con un pequeño fichero de texto en la misma ubicación con una explicación. Y actualizo el mensaje #2 del hilo, que es el que recopila códigos. Última edición por Neftali [Germán.Estévez] fecha: Hace 6 Horas a las 11:09:40. Razón: Añado nota para os ficheros |
#1768
|
||||
|
||||
Gracias por tu aporte compañero.
__________________
Be water my friend. |
#1769
|
||||
|
||||
Ayer sacaron información nueva.
https://www.agenciatributaria.es/AEA...ERI_FACTU.html Se ha incorporado nueva documentación técnica asociada a los sistemas VERI*FACTU y no VERI*FACTU , concretamente un nuevo documento donde se detalla las especificaciones técnicas para la generación de la huella o hash de los registros de facturación y de eventos, en su versión 0.1.0 y con carácter de borrador, hasta la publicación de la Orden Ministerial definitiva. También se ha actualizado la Documentación de descripción de servicios web en su versión 0.3.1. NOTA DEL MODERADOR: Gracias. Actualizo el mensaje número #1 con la recopilación de información y añado el fichero al FTP del club. Última edición por Neftali [Germán.Estévez] fecha: Hace 6 Horas a las 10:28:59. |
#1770
|
|||
|
|||
Cita:
Perfecto. Gracias Un pasito más. |
#1771
|
|||
|
|||
Acabo de leer ese artículo y me he puesto a provar de generar el hash como dicen en el ejemplo, mi lenguaje de programación es Harbour y disponemos de la función HB_SHA256 para ese menester.
Así que lo he probado de esa manera como el Pdf para comprovar hash de ejemplos... LogDebug( Upper(HB_SHA256( "IDEmisorFactura=89890001K&NumSerieFactura=12345678/G33&FechaExpedicionFactura=01-01-2024&TipoFactura=F1&CuotaTotal=12.35&ImporteTotal=123.45&Huella=&FechaHoraHusoGenRegistro=2024-01-01T19:20:30+01:00" )) ) LogDebug( Upper(HB_SHA256( "IDEmisorFactura=89890001K&NumSerieFactura=12345679/G34&FechaExpedicionFactura=01-01-2024&TipoFactura=F1&CuotaTotal=12.35&ImporteTotal=123.45&Huella=3C464DAF61ACB827C65FDA19F352A4E3BDC2 C640E9E9FC4CC058073F38F12F60&FechaHoraHusoGenRegistro=2024-01-01T19:20:35+01:00" )) ) Resultados: 3C464DAF61ACB827C65FDA19F352A4E3BDC2C640E9E9FC4CC058073F38F12F60 F7B94CFD8924EDFF273501B01EE5153E4CE8F259766F88CF6ACB8935802A2B97 Correcto!!! Así pues, a pensar en como voy a implementarlo en mi aplicación... |
#1772
|
|||
|
|||
Cita:
aqui tienes tb una de las webs para comprobar los textos a sha256 para comprobar lo que generes. https://www.convertstring.com/es/Hash/SHA256 |
#1773
|
|||
|
|||
Tiene pinta de que la cadena sobre la que se calcula el hash va a ser parte del QR(por la configuracio tipo parámetros dirección web), similar a ticketbai.
Con lo cual, tenedlo en cuenta para no usar caracteres extraños en la separación de número serie/numero se factura que os puedan dar conflictos con ma codificación URI para llamadas a webs. O tendréis que pasar a Uri(hexa) los caracteres que puedan dar conflictos para generar el QR Ejemplo caracteres conflictivos: /+:;,*<>[]\ En el caso de que lo queráis usar, simplemente es pasarlo a hexa por ejemplo el espacio es %20.., aunque el espacio no lo permiten Pero la reprentaciob escrita(para la factura electrónica, no hay que convertirlo) Es una pequeña traba más. Última edición por ermendalenda fecha: Hace 29 Minutos a las 16:41:32. |
#1774
|
|||
|
|||
aún así, NO entiendo lo de generar la huella si mi SIF SOLAMENTE funciona en modo VERI*FACTU.
¿No es la propia hacienda la que va a hacer la custodia, trazabilidad, inalterabilidad... de los registros que enviemos a su servidor??? De ser así, no entiendo el porque debemos de hacer nuestra "trazabilidad" cuando la trazabilidad corresponde a quien custodie y tenga TODA la información de los registros enviados. No se, no veo la utilidad de nuestro SIF. Yo tengo entendido que debemos generar el registro, transmitir a hacienda e imprimir documento (factura). El SIF VERI*FACTU le corresponde esa tarea, que para lo demás, por eso remitimos los registros generados a hacienda, para quitarnos esa tarea y responsabilidad de guarda-custodia, trazabilidad... ¿Soy yo que lo tengo mal entendido??? |
#1775
|
|||
|
|||
Cita:
Imagina que usas una dll o una api de un tercero, para el envio, que destroza el xml y por ejemplo quita los puntos decimales. Última edición por ermendalenda fecha: Hace 1 Minuto a las 17:09:37. |
|
|
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 |
|