Ver Mensaje Individual
  #2735  
Antiguo 09-10-2024
Delphier Delphier is offline
Miembro
 
Registrado: feb 2024
Posts: 42
Reputación: 0
Delphier Va por buen camino
Smile Generar y Recuperar posteriormente IXML RegistroAlta

Por si alguien sabe la solución , si la tiene... mientras seguiremos investigando...


Generar el XML RegistroAlta con IXML.

Código:
var FacturaIXML : SuministroInformacion.IXMLRegistroFacturacionAltaType;


  FacturaIXML := NewXMLDocument.GetDocBinding('sum:RegistroAlta', SuministroInformacion.TXMLRegistroFacturacionAltaType, '') as SuministroInformacion.IXMLRegistroFacturacionAltaType;

  FacturaIXML.DeclareNamespace('sum','https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd');
  FacturaIXML.DeclareNamespace('sum1','https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd');


  // Si lo defino así , se le queda el Prefijo sum: de RegistroAlta en lugar de sum1: que es lo que interesa para Verifactu
  FacturaIXML.IDVersion := '1.0';


  // Para que el Prefijo sea sum1: se puede hacer así 
  FacturaIXML.AddChild('sum1:IDVersion').NodeValue := '1.0';


  FacturaExpedida := NewXMLDocument.GetDocBinding('sum1:IDFactura', SuministroInformacion.TXMLIDFacturaExpedidaType, '') as SuministroInformacion.IXMLIDFacturaExpedidaType;

  FacturaExpedida.IDEmisorFactura        := DTFactura.FieldByName('EmisorNIF').AsString;
  FacturaExpedida.NumSerieFactura        := ReferenciaDocumento;
  FacturaExpedida.FechaExpedicionFactura := StringReplace(DTFactura.FieldByName('FECH').AsString,FormatSettings.DateSeparator,'-',[rfReplaceAll, rfIgnoreCase]); // (dd-mm-yyyy)
  FacturaIXML.ChildNodes.Add(FacturaExpedida);


  Resto del fichero....

El problema que me he encontrado es que como el XML Tiene dos Prefijos , sum: en RegistroAlta y Sum1: En IDVersion y el resto , luego no puedo Recuperar el Objeto SuministroInformacion.IXMLRegistroFacturacionAltaType Correctamente.


Código:
var FacturaCargadaIXML : SuministroInformacion.IXMLRegistroFacturacionAltaType;
var XMLVerifactu : String;


       XMLVerifactu := 'El XML creado con anterioridad...'   

       FacturaCargadaIXML :=
       LoadXMLData(XMLVerifactu).GetDocBinding('sum:RegistroAlta', TXMLRegistroFacturacionAltaType, '') as SuministroInformacion.IXMLRegistroFacturacionAltaType;
FacturaCargadaIXML.XML es correcto, varga el XML , la carga , pero el FacturaCargadaIXML.IDVersion , etc... esta vacío , parece que no coloca los nodos en su sitio.


Antes de no poder usar LoadXMLData igual alguien tiene una solución.

Gracias y Saludos