Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Envío de registros y sus respuestas (https://www.clubdelphi.com/foros/forumdisplay.php?f=66)
-   -   Demo con código Verifactu.dll para (delphi 7) (https://www.clubdelphi.com/foros/showthread.php?t=97004)

seccion_31 05-08-2025 22:07:09

A nivel de consulta no será tanto problema

A nivel de declaración si.

seccion_31 06-08-2025 07:20:37

ya esta resuelto !

ahora ya se puede consultar un periodo, SIN especificar fechas de expedicion.

Mañana enviare para publicacion la version 4.8 (si no surge otra cosa)

Si quereis incluir otra funcionalidad, ahora es buen momento.

Saludos !

DarkDudae 06-08-2025 09:45:11

Cita:

Empezado por seccion_31 (Mensaje 566934)
ya esta resuelto !

ahora ya se puede consultar un periodo, SIN especificar fechas de expedicion.

Mañana enviare para publicacion la version 4.8 (si no surge otra cosa)

Si quereis incluir otra funcionalidad, ahora es buen momento.

Saludos !

Gracias nuevamente compañero.

Respecto al tema fechas, y a fin de que el componente sea más polivalente, igual sería una buena idea que si la fecha de inicio y fin de la consulta coinciden con el primer y último día del mes consultado, se lance la búsqueda por período a nivel interno. De esta forma no haría falta diferenciar cuándo consultamos un período y cuando un rango de fechas a la hora de lanzar la consulta. Siempre se haría con los mismos parámetros.

Respecto a peticiones, ahora mismo no se me ocurre ninguna, aunque ando buscando alguna forma gratuita y legal de consultar los datos fiscales de una empresa introduciendo únicamente su NIF. He visto softwares que tienen esta característica (supongo que pagarán alguna API de las empresas que ofrecen estos servicios como eInforma), pero algo así ayudaría muchísimo al tema de prevenir datos fiscales incorrectos que desemboquen en rechazos por parte de la AEAT, además de facilitarle la vida al usuario. No sé si alguien más del foro podría ayudarnos en este punto...

valdusio 06-08-2025 10:46:08

Cita:

Empezado por seccion_31 (Mensaje 566934)
ya esta resuelto !

ahora ya se puede consultar un periodo, SIN especificar fechas de expedicion.

Mañana enviare para publicacion la version 4.8 (si no surge otra cosa)

Si quereis incluir otra funcionalidad, ahora es buen momento.

Saludos !

De nuevo muchas gracias por el gran aporte.
Cuando generas un XML de anulación de factura, aparecen dos mensajes referente a la huella. No se como desactivarlos.
Se ve que lo pusistes para probar y se te olvidó desactivarlos.
Muchas Gracias.

seccion_31 06-08-2025 11:03:20

Cita:

Empezado por valdusio (Mensaje 566936)
De nuevo muchas gracias por el gran aporte.
Cuando generas un XML de anulación de factura, aparecen dos mensajes referente a la huella. No se como desactivarlos.
Se ve que lo pusistes para probar y se te olvidó desactivarlos.
Muchas Gracias.

Ya esta retirado el aviso, (que verguenza), ahi se me escapó el showmessage

Saludos !

seccion_31 06-08-2025 19:42:28

ya he pasado a neftali la 4.8 para que la suba al ftp:


Saludos !

Neftali [Germán.Estévez] 07-08-2025 08:52:56

Ya está subida al FTP.
https://terawiki.clubdelphi.com/Otro...%20Delphi%207/

Gracias.

Matorral 07-08-2025 08:58:21

Millón de gracias compañeiro.

starlet 07-08-2025 11:51:29

Increible trabajo!!!

Mil gracias.

valdusio 08-08-2025 11:49:31

Cita:

Empezado por seccion_31 (Mensaje 566938)
Ya esta retirado el aviso, (que verguenza), ahi se me escapó el showmessage

Saludos !

Buenos días,
siento ser pesado, pero he puesto la ultima versión (4.8) y me continúan saliendo los mensajes.

Muchas gracias por el magnifico trabajo que estás haciendo.

DarkDudae 08-08-2025 12:47:39

Cita:

Empezado por valdusio (Mensaje 566984)
Buenos días,
siento ser pesado, pero he puesto la ultima versión (4.8) y me continúan saliendo los mensajes.

Muchas gracias por el magnifico trabajo que estás haciendo.

Yo aún no la he probado, pero recuerda que tienes que copiar la dll nueva a la carpeta de tu programa y a las carpetas de SysWow64 o System32 (dependiendo)

valdusio 08-08-2025 13:10:01

Cita:

Empezado por DarkDudae (Mensaje 566986)
Yo aún no la he probado, pero recuerda que tienes que copiar la dll nueva a la carpeta de tu programa y a las carpetas de SysWow64 o System32 (dependiendo)

Es lo que he hecho,
pero creo que el problemas está en que la DLL está compilada antes (06/08/2025 08:07) que la modificación de uVerifactuFuncs.pas. (06/082025 11:02).
A mi me da error si intento compilar la DLL

seccion_31 08-08-2025 13:45:35

Cita:

Empezado por valdusio (Mensaje 566987)
Es lo que he hecho,
pero creo que el problemas está en que la DLL está compilada antes (06/08/2025 08:07) que la modificación de uVerifactuFuncs.pas. (06/082025 11:02).
A mi me da error si intento compilar la DLL

He revisado y Ya No hay un solo showmessage dentro de la unidad de la DLL.

la DLL se encuentra en la carpeta del programa DEMO con fecha del 6/08 hora 8 de la mañana

Probare mas tarde.

Saludos !

seccion_31 08-08-2025 19:51:17

Efectivamente, Salia el mensaje de marras, al eliminar, con la demo.

he recompilado la DLL y ya no sale. Algo debí hacer mal en el ultimo momento.

Ya esta enviada para su publicacion, espero que la coloquen encima de la que hay. 4.8

He vuelto a borrar usando la demo y ha funcionado bien.

Saludos !

disculpas.

seccion_31 09-08-2025 11:27:44

Cita:

Empezado por seccion_31 (Mensaje 566995)
Efectivamente, Salia el mensaje de marras, al eliminar, con la demo.

he recompilado la DLL y ya no sale. Algo debí hacer mal en el ultimo momento.

Ya esta enviada para su publicacion, espero que la coloquen encima de la que hay. 4.8

He vuelto a borrar usando la demo y ha funcionado bien.

Saludos !

disculpas.

Ya está subido
Podéis descargarlo a ver qué tal
4.8

Slds !

valdusio 09-08-2025 11:42:27

Cita:

Empezado por seccion_31 (Mensaje 566999)
Ya está subido
Podéis descargarlo a ver qué tal
4.8

Slds !

Probado y sin "mensajitos".

Muchas Gracias

seccion_31 11-08-2025 10:52:50

Buenos dias !

La version 5.0 sera una version temprana (que llamo fase 1 de 3 ) que permitirá obtener archivos en formato facturaE de las facturas enviadas:

Código:

      // generamos facturasE, preparacion de los eventos:

      VeriFactuD7.OnFacturaEData:=onDatosFacturaE;                        // evento que permite indicar datos generales
      VeriFactuD7.OnFacturaELineas:=onLineasFacturaE;                    // permite indicar linea a linea de la factura
      VeriFactuD7.OnFacturaECompleta:=onCompletaFacturaE;              // factura completa !

      VeriFactuD7.generaFacturaE( xmlFacturaE );                            //  generamos en la ruta donde iran los archivos

      // Fin !
      VeriFactuD7.final( LogFile );                                          // Liberamos la sesion

Código:

    procedure onDatosFacturaE( Sender: TObject; numSerieFactura:string; indice:integer; facturaEData:TFacturaEData; var procesa:boolean);
    procedure onLineasFacturaE( Sender: TObject; numSerieFactura:string; indice:integer; facturaELinea:TInvoiceLine; var sigue:boolean);
    procedure onCompletaFacturaE( Sender: TObject; numSerieFactura:string; indice:integer; filename:string);

La version 6, permitira generar ademas en formato UBL.

Saludos !

Matorral 11-08-2025 11:40:57

Cita:

Empezado por seccion_31 (Mensaje 567015)
Buenos dias !

La version 5.0 sera una version temprana (que llamo fase 1 de 3 ) que permitirá obtener archivos en formato facturaE de las facturas enviadas:

Código:

      // generamos facturasE, preparacion de los eventos:

      VeriFactuD7.OnFacturaEData:=onDatosFacturaE;                        // evento que permite indicar datos generales
      VeriFactuD7.OnFacturaELineas:=onLineasFacturaE;                    // permite indicar linea a linea de la factura
      VeriFactuD7.OnFacturaECompleta:=onCompletaFacturaE;              // factura completa !

      VeriFactuD7.generaFacturaE( xmlFacturaE );                            //  generamos en la ruta donde iran los archivos

      // Fin !
      VeriFactuD7.final( LogFile );                                          // Liberamos la sesion

Código:

    procedure onDatosFacturaE( Sender: TObject; numSerieFactura:string; indice:integer; facturaEData:TFacturaEData; var procesa:boolean);
    procedure onLineasFacturaE( Sender: TObject; numSerieFactura:string; indice:integer; facturaELinea:TInvoiceLine; var sigue:boolean);
    procedure onCompletaFacturaE( Sender: TObject; numSerieFactura:string; indice:integer; filename:string);

La version 6, permitira generar ademas en formato UBL.

Saludos !


Impresionante¡¡¡ :cool::cool:
:D

ramherfer 11-08-2025 23:19:21

Cita:

Empezado por seccion_31 (Mensaje 566999)
Ya está subido
Podéis descargarlo a ver qué tal
4.8

Slds !

Por muchas gracias que te de, o paellas que disfrutaramos (tu por supuesto invitado) jamás estaría pagado el trabajo que has hecho y gracias al cual muchos hemos sobrevivido a esta (con perdon...) mierda en mayusculas.
Confié en el proyecto desde el principio, ya que aportaba un rayo de claridad y esperanza con esa bendita hoja excel. Y no me equivoque ¡¡GRACIAS!!

rafa1963 12-08-2025 10:24:31

Me uno a tu parecer compañero ramherfer, y estoy mil veces agradecido a todos vosotros por vuestro apoyo, y por la inmejorable labor que habéis realizado entre todos.
Un millón de Gracias ya habéis hecho posible el salir a delante de este traspié
tan grande.

DarkDudae 12-08-2025 11:07:49

Gracias compañero. Como siempre, si necesitas que te eche una mano con algo, no dudes en comentármelo.

rafa1963 12-08-2025 11:08:46

Agradecido eternamente.

seccion_31 12-08-2025 13:18:51

gracias ! este componente ha recibido aportaciones y correcciones de compañeros del foro !! : )


Por explayarme un poco:

Para generar la facturaE, usa una unidad de diseño propio que llamo urecordToXML, que transforma un record en un XML. esa unidad estaba diseñada originalmente a hacerse cargo del diseño del componente verifactu, encapsulando todo el objeto SOAP en un record.... Pero quedo abandonada, al tomar otro camino.... (Para diseñar el componente intente 3 direcciones distintas, hasta la DLL de hoy).

Asi que ahora he trasladado el diseño de facturaE, a un conjunto de records que generan el XML facturaE. Lo cual le otorga una excelente capacidad de adaptacion, basta incluir en el record el campo que falta y recompilar, asi de simple.

Código:

 

    TFacturae=record
          FileHeader:TFileHeader;
          Parties  :TParties;
          Invoices  :TInvoices;
    end;

Ahora soporta alta de factura (ya validado), rectificativa (en proceso), y anulacion (en proceso), en formato facturaE.

Saludos !!

: )

seccion_31 13-08-2025 20:19:07

La 4.8 tiene un error, en la generacion de facturas F3 descubierto por matorral (gracias!)

Debe quedar asi, el extracto de codigo que la genera:

Código Delphi [-]
// tipo F3, si hay factura sustituida
    if facturaRegistro.nSustituye>0  then
    begin
        Factura.RegistroAlta.TipoFactura := ClaveTipoFacturaType.F3;

        // puse aqui el create de facturasSustituidas
        facturasSustituidas:=FacturasSustituidas2.create();

        for j:=0 to facturaRegistro.nSustituye-1 do
        begin
//            facturasSustituidas:=FacturasSustituidas2.create();
            facturaSustiuida:=IDFacturaARType.Create;

            facturaSustiuida.IDEmisorFactura       :=cabecera.emisor.nifEmisor;
            facturaSustiuida.NumSerieFactura       :=facturaRegistro.sustituyeTicketF3[j].NumSerieTicket;
            facturaSustiuida.FechaExpedicionFactura:=verifactuFecha(facturaRegistro.sustituyeTicketF3[j].fechaTicket);

            setlength(facturasSustituidas,j+1);
            facturasSustituidas[ High(facturasSustituidas ) ]:=facturaSustiuida;

        end;

        Factura.RegistroAlta.FacturasSustituidas:=facturasSustituidas;
    end;


Unidad: uVerifactuFuncs

Funcion: altafactura_F1_F2_F3_R4_R5_verifactu


Con esto queda solucionado: ira a compilacion en la 5.0 que incorporara como digo una versión temprana del interface con generación de facturaE

Si alguien lo necesita YA y no puede recompilar la DLL, que me escriba.


La próxima 5.0 FacturaE ya tiene alta (validado), rectificativa(validado), anulación(por validar) en una versión temprana, para facturas nacionales.


Saludos !

: )

ramherfer 14-08-2025 11:57:53

Buenos días compañeros.
En los cotejos de factura con la AEAT si la fecha de operacion es distinta a la fecha de factura hay que coger para el cálculo de las variables ejercicio y periodo de la fecha de operación ya que en caso de no hacerlo el mensaje "Error en huella Error en Total" y si se toma la fecha de operación para obtener el valor de esas variables el mensaje "Huella ok Total ok".

Imagino que será un comportamiento normal ¿no?

seccion_31 14-08-2025 18:36:57

Cita:

Empezado por ramherfer (Mensaje 567074)
Buenos días compañeros.
En los cotejos de factura con la AEAT si la fecha de operacion es distinta a la fecha de factura hay que coger para el cálculo de las variables ejercicio y periodo de la fecha de operación ya que en caso de no hacerlo el mensaje "Error en huella Error en Total" y si se toma la fecha de operación para obtener el valor de esas variables el mensaje "Huella ok Total ok".

Imagino que será un comportamiento normal ¿no?

Es normal
Cuando se diseño la demo no había fecha de operación

Como he dicho en anteriores mensajes lo que manda es la fecha de operación

Y es la que determinara el periodo de liquidación

Más vale que coincida el periodo de operación con el de emisión de factura.

Saludos!

Matorral 16-08-2025 11:55:09

Fallo en Envio de 20 Fras. Simplificadas
 
Buenos días compañeros¡¡

Alguien podría probar a enviar en la demo 20 facturas simplificadas? es decir, hacer el excel con 20 facturas simplificadas y probar el envío?

A mi me da fallo al hacer el envío

Código:

El Envio No Ha Podido Ser Realizado
Error Al Enviar
(ESOAPHTTPException)-Se requiere un certificado para completar la autenticación de cliente - URL:https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP - SOAPAction:""

En cambio si el envío lo hago de 15 facturas me funciona perfectamente.

En las opciones del proyecto, en Linker, Memory sizes tengo :

Min stack size = $00004000
Max stack size = $00990000
Image base = $00700000

Probé desde varios pc I7 10ª generación 16GB RAM y no me funciona en ninguno.

Otro dato mas, si envío el XML generado en la demo desde el Web Services de Hacienda me lo acepta sin problemas.

Os lo agradezco, porque me interesa saber si es problema de mi configuración (puesto que me pasa en mis aplicaciones y en la demo).


Saludos y millón de gracias por anticipado¡¡¡

seccion_31 16-08-2025 11:59:09

Cita:

Empezado por Matorral (Mensaje 567104)
Buenos días compañeros¡¡

Alguien podría probar a enviar en la demo 20 facturas simplificadas? es decir, hacer el excel con 20 facturas simplificadas y probar el envío?

A mi me da fallo al hacer el envío

Código:

El Envio No Ha Podido Ser Realizado
Error Al Enviar
(ESOAPHTTPException)-Se requiere un certificado para completar la autenticación de cliente - URL:https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP - SOAPAction:""

En cambio si el envío lo hago de 15 facturas me funciona perfectamente.

En las opciones del proyecto, en Linker, Memory sizes tengo :

Min stack size = $00004000
Max stack size = $00990000
Image base = $00700000

Probé desde varios pc I7 10ª generación 16GB RAM y no me funciona en ninguno.

Otro dato mas, si envío el XML generado en la demo desde el Web Services de Hacienda me lo acepta sin problemas.

Os lo agradezco, porque me interesa saber si es problema de mi configuración (puesto que me pasa en mis aplicaciones y en la demo).


Saludos y millón de gracias por anticipado¡¡¡

Yo diría que ..

La aeat te pone un límite en el entorno de pruebas...

A mí me ha pasado con facturas normales.

Se sale fuera con eso del certificado y ya.

Slds

A ver los demás que opinan.

mqm 16-08-2025 12:01:15

A mi me ha pasado durante la fase de prueba del componte. Si enviaba mas de 10 facturas, da igual simplificada, ordinarias o ambas, me daba el error que indicas.
Sin embargo si lo bajaba como tu dices a 5 - 10 facturas, entraba sin problemas.
Actualmente ya sin el certificado de prueba, lo tengo en 20 y se lo está tragando bien.

DarkDudae 16-08-2025 12:02:37

A mí de hecho, hace días que con el certificado de pruebas no me deja enviar directamente nada (ni una triste factura).

Me devuelve el error:

Cita:

Error Al Enviar :(ESOAPHTTPException)-Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml"
No obstante, el xml generado parece correcto. De hecho, me devuelve el mismo error incluso cuando hago una consulta.

Sin embargo, con el mío personal sin problemas...

Matorral 16-08-2025 12:25:46

Cita:

Empezado por DarkDudae (Mensaje 567108)
A mí de hecho, hace días que con el certificado de pruebas no me deja enviar directamente nada (ni una triste factura).

Me devuelve el error:



No obstante, el xml generado parece correcto. De hecho, me devuelve el mismo error incluso cuando hago una consulta.

Sin embargo, con el mío personal sin problemas...

Yo tuve que solicitar el de pruebas de nuevo, porque caducaba a los 3 meses, pero no lo volví a usar.
Todas las pruebas las hago con el mío propio.


Cita:

Empezado por Seccion_31
Yo diría que ..

La aeat te pone un límite en el entorno de pruebas...

A mí me ha pasado con facturas normales.

Se sale fuera con eso del certificado y ya.

Slds

A ver los demás que opinan.

Pues vale, a lanzarnos a la piscina¡¡¡ jajaj

seccion_31 16-08-2025 12:27:11

Es posible probar esto...

Enviar las facturas con simular a true
En la demo es el botón que hay junto a enviar
Te genera el XML en la carpeta determinada.

Le dais una mirada

Vais al portal de pruebas

Seleccion del endpoint de envío y lanzais el XML generado a ver que pasa.

Saludos!!

DarkDudae 16-08-2025 12:29:42

Lo que haré será probar a cargarlo directamente en el componente indicando path y password (es un certificado que pedí su renovación y no está caducado). Parece que según cómo se instale el certificado si en local o a nivel de equipo a veces "no lo encuentra" bien por defecto.

El caso es que uso ese certificado para el envío al SII sin problemas (aunque uso un código muy distinto al del componente VeriFactu en ese caso)

Matorral 16-08-2025 13:45:04

Cita:

Empezado por seccion_31 (Mensaje 567110)
Es posible probar esto...

Enviar las facturas con simular a true
En la demo es el botón que hay junto a enviar
Te genera el XML en la carpeta determinada.

Le dais una mirada

Vais al portal de pruebas

Seleccion del endpoint de envío y lanzais el XML generado a ver que pasa.

Saludos!!

Eso funciona. El xml lo acepta bien con un xml de 40 y pico de facturas. Voy a probar a hacer un envio de tropecientas a ver.
Pero bueno, ahora me toca ir a comer con mis hijos. A la vuelta os comento el envio.

seccion_31 16-08-2025 16:31:55

Aparentemente tenemos un XML bien formado
El acceso al certificado es igual para una factura que para 40.

Se que en algún hilo de estos foros se ha visto esta situación y como digo a mí me paso hace tiempo.

A ver qué conclusión sacamos.. si hay otra conclusión

Matorral 17-08-2025 09:41:44

Cita:

Empezado por seccion_31 (Mensaje 567113)
Aparentemente tenemos un XML bien formado
El acceso al certificado es igual para una factura que para 40.

Se que en algún hilo de estos foros se ha visto esta situación y como digo a mí me paso hace tiempo.

A ver qué conclusión sacamos.. si hay otra conclusión

Buenos días¡¡

Encontré este mensaje de mqm de hace unos meses..
Cita:

Empezado por mqm (Mensaje 562472)
haciendo pruebas de envio con la ultima version de la dll.... me esta dando el error :

Error Al Enviar
(ESOAPHTTPException)-- URL:https://prewww1.aeat.es/wlpl/TIKE-CO.../VerifactuSOAP - SOAPAction:""

Esto solo pasa cuando envio mas de 10 factura. Si en vio menos cantidad no lo da. Alguien sabe a que es debido.

Le acabo de escribir para saber si encontró solución. Además envié una consulta a AEAT para saber si hay algún límite de facturas o algo así.

Ya os comentaré cuando contesten.


Por otra parte, hice un envío desde la demo de 398 facturas y enviando el XML desde el Web Service lo acepta sin problemas.

Saludos¡¡

jguso 17-08-2025 17:49:58

ayuda
 
Yo tengo ahora el siguiente problema. al enviar 1 factura.


ejemplo:
fecha de Operacion = 01/01/2025
fecha de Factura = 15/01/2025


me dá error al no coincidir la fecha de Operación con la Fecha de Emisión/Factura, me dice que es incorrecto, aunque se genera la huella ... etc,etc.


alguien ha probado ?

Matorral 18-08-2025 08:32:39

Cita:

Empezado por jguso (Mensaje 567119)
Yo tengo ahora el siguiente problema. al enviar 1 factura.


ejemplo:
fecha de Operacion = 01/01/2025
fecha de Factura = 15/01/2025


me dá error al no coincidir la fecha de Operación con la Fecha de Emisión/Factura, me dice que es incorrecto, aunque se genera la huella ... etc,etc.


alguien ha probado ?

A mi no me da error.

starlet 18-08-2025 12:42:21

Error en Baja
 
Buenas:

Estoy haciendo pruebas para registro de Baja. Aunque no lo voy a usar en mi aplicación de forma "normal", si lo quiero utilizar para las pruebas que permite la AEAT en la instalación del cliente, para chequear certificado de los clientes y procesos básicos y que permite no tirarnos a la piscina sin saber si hay agua...

Básicamente, permiten crear unas facturas (se habla de hasta 10) a modo de prueba, en un canal/serie específico para pruebas (e indicando muy claramente en la descripción, que son pruebas), para inmediatamente dar de baja esos registros y que no afecten a la facturación normal.

Al intentar dar de baja registros, me sale un error (lo he intentado con varias pruebas y siempre me da el mismo error. :

Error excepción en _callbackRS: is not a valid integer value

A alguien más le está pasando???

Muchas gracias.

seccion_31 18-08-2025 14:19:18

Ahora estoy de vacaciones
Ese error de callback... no debería si quiera ejecutarse.

El domingo vuelvo y lo veo.

Con lo que salga

Slds !!


La franja horaria es GMT +2. Ahora son las 16:36:34.

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