Ver Mensaje Individual
  #23  
Antiguo 03-01-2025
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.214
Reputación: 24
newtron Va camino a la fama
Ok.


Por si a alguien le viene bien creo que he conseguido enviar registros en modo NO Verifactu a partir de los ficheros XML de las facturas firmados en disco con una pequeña "ñapa".


Lo que he hecho ha sido crear un fichero .xml con la cabecera "a pelo" hasta el nodo "RegistroFactura"

A esto le añado los ficheros xml firmados leyendo cada uno de ellos y al final cierro los nodos.

Una vez creado este fichero hago una llamada SOAP e intercepto el evento "beforeexecute" del objeto HTTPRIO y sustituyo el stream por el del fichero que he generado con el siguiente código:

Código Delphi [-]
  // Cargar el archivo XML desde disco
  XMLFactura := TStringList.Create;
  XMLFactura.LoadFromFile('C:\TEMP\prueba.xml'); // Fichero creado "a pelo"
  // Leer el contenido del flujo SOAPRequest
  RequestStream := TStringStream.Create;
  SOAPRequest.Position := 0;
  RequestStream.CopyFrom(SOAPRequest, SOAPRequest.Size);
  // Convertir el flujo a una cadena para su manipulación
  ModifiedRequest := RequestStream.DataString;
  ModifiedRequest:=XMLFactura.Text;
  // Sobrescribir el contenido del flujo con la solicitud modificada
  RequestStream.Size := 0; // Limpiar el flujo
  RequestStream.WriteString(ModifiedRequest);
  RequestStream.Position := 0;
  // Reemplazar el flujo original con el modificado
  SOAPRequest.Size := 0;
  SOAPRequest.CopyFrom(RequestStream, RequestStream.Size);
  SOAPRequest.Position := 0;
  RequestStream.Free;
  XMLFactura.Free;


Esto hace la llamada SOAP con el fichero que hemos creado y debe de funcionar. Todo esto lo he hecho en pruebas sueltas y me falta implementarlo en mi programa pero creo que funciona, lo digo por si alguien quiere ir trabajando en ello.


Saludos.
__________________
Be water my friend.
Responder Con Cita