Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SDK Componente Verifactu para Delphi 7+ - Subforo Avisos/consultas (https://www.clubdelphi.com/foros/forumdisplay.php?f=81)
-   -   Ejemplos De Codigo util (https://www.clubdelphi.com/foros/showthread.php?t=97754)

seccion_31 11-10-2025 10:08:37

Ejemplos De Codigo util
 
Se me ha ocurrido que podriamos publicar extractos de codigo utiles usando la libreria.

Esta porcion de codigo comprueba la version de tipos del ejecutable y de la DLL.
Es muy importante que los tipos, que son la definicion de los records y estructuras de datos que intercambian la DLL y el ejecutable sean iguales, de lo contrario podemos tener efectos indeseados graves.

Creo que no deberia faltar al inicio de la ejecucion:

Código:

    Verifactu:=TVerifactu.create(nil);
    if Verifactu.versionTiposDLL<>Verifactu.versionTiposEXE then
    begin
          showmessage('Tipos VeriFactu Diferentes:'+^M+
                      'DLL='+Verifactu.versionTiposDLL+^M+
                      'EXE='+Verifactu.versionTiposEXE );
                     
    end;
    Verifactu.free;


seccion_31 11-10-2025 10:15:47

Este otro codigo, guarda en una base de datos de incidencias, problemas tecnicos de envio:


Código:

    ok:=Verifactu.envio( resultado );

    if not resultado.envioOk then        // el envio ha sido fallido por causas tecnicas (ha salido del try... except)
    begin
                // lo anotamos en el libro de incidencias
                for f:=1 to resultado.nFacturas do
                begin
                      dbIncidencias.insert;                                                       
                              dbIncidencias.fieldbyName('fecha').asdatetime:=date;
                          dbIncidencias.fieldbyName('hora').text:=timetostr(time);
                      dbIncidencias.fieldbyName('motivo').text:=resultado.error;
                      dbIncidencias.fieldbyName('NumSerie').text:=resultado.facturas[f].NumSerieFactura;
                          dbIncidencias.post;
                end;
    end;


Neftali [Germán.Estévez] 13-10-2025 11:54:50

^\||/^\||/^\||/^\||/^\||/

seccion_31 16-10-2025 11:10:21

Varias indicaciones:

Indices de elementos:

Los indices de array para ivas y exentas empiezan en 0 hasta n-1 elementos

Los indices en la consulta / recepcion de resultados empiezan en 1 hasta n elementos


Recoger huellas sin envio

Si es necesario podemos calcular todas las huellas del paquete de envio sin enviarlo realmente, para ello colocaremos el registro inicial, añadiremos las facturas a enviar, y marcaremos simular a true. Verifactu.Simular:=true;
Tras el envio (que no se realizara) en el resultado tendremos las huellas calculadas. y en VeriFactu.getRegistroFinal( ... ) la ultima huella calculada.

Si es necesario deshabilitar los paths con '' para guardar el XML del envio y registro de factura, etc...

En resultado.EstadoEnvio tendremos el texto 'Envio Simulado'

seccion_31 17-10-2025 07:02:38

Es importante recordar que antes de cargar el TRegistrofactura llamar a la funcion

TVeriFactu.clearFactura(afactura);

Para dejar en blanco todos los campos del registro TRegistrofactura


Anular o abonar una factura sin registro previo en la AEAT:

Basta con indicar en los datos de la factura TRegistrofactura.sinregistroPrevio:=true

DarkDudae 24-10-2025 14:06:55

Cita:

Empezado por seccion_31 (Mensaje 568684)
Es importante recordar que antes de cargar el TRegistrofactura llamar a la funcion

TVeriFactu.clearFactura(afactura);

Para dejar en blanco todos los campos del registro TRegistrofactura


Anular o abonar una factura sin registro previo en la AEAT:

Basta con indicar en los datos de la factura TRegistrofactura.sinregistroPrevio:=true

Pues esta sería una mejora sencilla de implementar en el componente.

Una propiedad llamada FechaInicioVerifactu (por defecto en blanco) pero que el usuario pueda asignar en tiempo de ejecución.
De esta forma, sabemos que si se realiza una operación de anulación/abono/rectificación/sustitución sobre facturas previas al campo FechaInicioVeriFactu, por defecto la propiedad sinregistroPrevio se ponga a True.


La franja horaria es GMT +2. Ahora son las 06:30:15.

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