Ver Mensaje Individual
  #27  
Antiguo 05-04-2025
Avatar de ramherfer
ramherfer ramherfer is offline
Miembro
 
Registrado: may 2013
Ubicación: Valencia
Posts: 162
Reputación: 14
ramherfer Va por buen camino
Cita:
Empezado por seccion_31 Ver Mensaje
donde si tiene un error es en la anulacion (DLL)


en la 3.0 estara corregido


pero si quereis corregirlo ya:


uverifactuFuncs.pas (D10):


reemplazar esta funcion:


Código:
function anulacionfactura_verifactu(sesion:integer; cabecera:TVeriFactuInicio; indice:integer):RegistroFacturaType;
var
    Factura             : RegistroFacturaType;
    Destinatario        : PersonaFisicaJuridicaType;
    ListaDestinatarios  : Destinatarios;
    ListaDesglose       : DesgloseType;
    DetalleDesglose     : DetalleType;
    XSDatetime          : TXSDatetime;

    j:integer;
    _huellaAnterior     : string;
    facturaRegistro     : TRegistrofactura;
begin
    facturaRegistro:=sesiones[sesion].facturas[indice];

    Factura := RegistroFacturaType.Create;

    Factura.RegistroAnulacion             := RegistroAnulacion.Create;
    Factura.RegistroAnulacion.IDVersion   := VersionType._1_0;

    Factura.RegistroAnulacion.IDFactura                               := IDFacturaExpedidaBajaType.Create;
    Factura.RegistroAnulacion.IDFactura.IDEmisorFacturaAnulada        := cabecera.emisor.nifEmisor;
    Factura.RegistroAnulacion.IDFactura.NumSerieFacturaAnulada        := facturaRegistro.numSerieFactura;
    Factura.RegistroAnulacion.IDFactura.FechaExpedicionFacturaAnulada := verifactuFecha( facturaRegistro.fechafactura ) ; // (dd-mm-yyyy)


    // Encadenamiento
    Factura.RegistroAnulacion.Encadenamiento := Encadenamiento2.Create;

    // ¿ es el primer registro ?
    if sesiones[sesion].facturas[indice-1].huella='' then Factura.RegistroAnulacion.Encadenamiento.PrimerRegistro:=PrimerRegistroCadenaType(0) // S
    else
    begin
           Factura.RegistroAnulacion.Encadenamiento.RegistroAnterior:=EncadenamientoFacturaAnteriorType.Create;

           Factura.RegistroAnulacion.Encadenamiento.RegistroAnterior.IDEmisorFactura         :=cabecera.emisor.nifEmisor;
           Factura.RegistroAnulacion.Encadenamiento.RegistroAnterior.NumSerieFactura         :=sesiones[sesion].facturas[indice-1].numSerieFactura;
           Factura.RegistroAnulacion.Encadenamiento.RegistroAnterior.FechaExpedicionFactura  :=sesiones[sesion].facturas[indice-1].fechaFactura;
           Factura.RegistroAnulacion.Encadenamiento.RegistroAnterior.Huella                  :=sesiones[sesion].facturas[indice-1].huella;
    end;

    // Sin registro previo: (anulacion de facturas fuera de verifactu)
    if sesiones[sesion].facturas[indice].sinregistroPrevio then
          Factura.RegistroAnulacion.SinRegistroPrevio:=SinRegistroPrevioType.S;

    // sistemaInformatico
    sistemaInformatico( cabecera, Factura );

    //XSDatetime
    XSDatetime := TXSDatetime.Create;
    XSDatetime.UseZeroMilliseconds := False;
    XSDatetime.AsDateTime := Now;
    XSDatetime.Millisecond := 0;
    XSDatetime.UseZeroMilliseconds := False;
    XSDatetime.FractionalSeconds := 0;
    Factura.RegistroAnulacion.FechaHoraHusoGenRegistro := XSDatetime; // Formato: YYYY-MM-DDThh:mm:ssTZD (ej: 2024-01-01T19:20:30+01:00) (ISO 8601)

    // Huella
    facturaRegistro.Huella  := GenerarHuella_anulacion_RegistroVerifactu( Factura.RegistroAnulacion );
    sesiones[sesion].facturas[indice].huella:=facturaRegistro.Huella;

    Factura.RegistroAnulacion.TipoHuella := TipoHuellaType._01;
    Factura.RegistroAnulacion.Huella     := facturaRegistro.Huella;

    // fin, devolver el objeto  RegistroFacturacionAnulacionType  creado desde la informacion contenida en el record TRegistroFactura (ver utiles.pas)
    result:=factura;
end;
En la anulación me devuelve esto

Código:
<Encadenamiento>
<RegistroAnterior>
<IDEmisorFactura>25000000Z</IDEmisorFactura>
<NumSerieFactura>37734AAA13D8E2D74A4FBDDAD7B34C4EA026C3112A80334FFEDC500ADFDE0128</NumSerieFactura>
<FechaExpedicionFactura>04/04/2025</FechaExpedicionFactura>
<Huella>37734AAA13D8E2D74A4FBDDAD7B34C4EA026C3112A80334FFEDC500ADFDE0128</Huella>
</RegistroAnterior>
</Encadenamiento>
he comprobado y en VerifactuD7.addRegistroInicial(factura,fecha,huella)
Le estoy pasando los parametros correctos, pero la simulación me graba esos datos en el registro de anulación. Estoy dando de baja una factura enviada ayer.

En las altas funciona bien.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos.

Última edición por ramherfer fecha: 05-04-2025 a las 18:01:16.