![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
lo esta haciendo bien por lógica ya que de un mismo emisor, la serie FA250092 (que es la anterior que debía seleccionar) está antes que la RF250003 que es la última y la que seleciona como factura anterior. Pero erróneo en la práctica ya que la anterior debiera ser la FA250092.
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#2
|
||||
|
||||
|
Cita:
En la version 3, esa linea ya no estara. Saludos ! entiendo que sin esa linea el encadenamiento esta correcto, huella y demas? |
|
#3
|
||||
|
||||
|
Cita:
__________________
Se humilde para admitir tus errores, inteligente para aprender de ellos y maduro para corregirlos. |
|
#4
|
||||
|
||||
|
La demo no se cómo se comporta con facturas no aceptadas y huellas. En su envío, luego lo miro
Elimina facturas.xml y comienza otras pruebas Saludos |
|
#5
|
||||
|
||||
|
La demo solo coloca y añade la huella en las facturas enviadas OK. El resto lo ignorara en su BD xml.
He tenido que modificar un poco el programa demo para que lo ordene cronologicamente bien. y envie como huella anterior la ultima aceptada. (que en una aplicacion real, seria la ultima generada). Como digo es una demo. Estas modificaciones iran en la version 3.0 |
|
#6
|
||||
|
||||
|
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;
|
|
#7
|
||||
|
||||
|
Cita:
Código:
<Encadenamiento> <RegistroAnterior> <IDEmisorFactura>25000000Z</IDEmisorFactura> <NumSerieFactura>37734AAA13D8E2D74A4FBDDAD7B34C4EA026C3112A80334FFEDC500ADFDE0128</NumSerieFactura> <FechaExpedicionFactura>04/04/2025</FechaExpedicionFactura> <Huella>37734AAA13D8E2D74A4FBDDAD7B34C4EA026C3112A80334FFEDC500ADFDE0128</Huella> </RegistroAnterior> </Encadenamiento> 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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Verifactu o por requerimiento (no-verifactu) ¿decisión del usuario? | Maska10 | Temas legales | 2 | 07-12-2024 12:34:47 |
| Demo de una applicación para una estación de enfermera con RAD Studio | AgustinOrtu | La Taberna | 1 | 21-07-2015 17:41:35 |
| Demo Delphi, EMail | Caral | Internet | 1 | 19-12-2006 00:37:56 |
| Demo de delphi 2005 | mazinger | Varios | 2 | 18-12-2004 09:23:09 |
| El Rave que viene con Delphi es una Demo? | apicito | Impresión | 0 | 04-06-2003 11:33:36 |
|