Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Registros de Facturacion y Eventos (XML) (https://www.clubdelphi.com/foros/forumdisplay.php?f=67)
-   -   Ayuda con nodos padres e hijos en XML (https://www.clubdelphi.com/foros/showthread.php?t=97481)

rafa1963 27-05-2025 12:35:11

Ayuda con nodos padres e hijos en XML
 
Buenas tardes, estoy montando los XML para en envío de facturas pero me encuentro con el detalle de que no se me organizan bien los elementos.

Esto es parte del código que tengo

Cita:

XML := NewXMLDocument;
XML.Encoding := 'UTF-8';
XML.Options := [doNodeAutoIndent];
Registro := XML.AddChild ('FacturasXML');
Registro.Attributes['xsi:noNamespaceSchemaLocation']:= 'FacturaXML.xsd';
//Registro.Attributes['xsi:noNamespaceSchemaLocation']:= 'Facturas.XML';
Registro.Attributes['xmlns:xsi']:= 'w1.com/2019/XMLSchema-instance';
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::


Datos := Registro.AddChild('RegistroAlta');
Datos := Registro.AddChild('RegistroFacturacionType');
Datos.AddChild('IDVersion').Text := '1.0'; //TablaEmpresaNombreTaller.Value;

Datos := Registro.AddChild('IDFactura');
Datos.AddChild('IDEmisorFactura').Text := TablaEmpresaCIF.Value;
Datos.AddChild('NumSerieFactura').Text := 'A' + TablaFacturacionNumero.Value;
Datos.AddChild('FechaExpedicionFactura').Text := (FechaFactura);

// Datos := Registro.AddChild('</IDFactura>');

Datos.AddChild('NombreRazonEmisor').Text := TablaEmpresaNombreTaller.Value;
Datos.AddChild('TipoFactura').Text := 'F1';
{ Subsanacion y rechazoPrevio }
Datos.AddChild('Subsanacion').Text := 'N';
Datos.AddChild('RechazoPrevio').Text := 'X';
Datos.AddChild('DescripcionOperacion').Text := 'SERVICIOS';

Datos := Registro.AddChild('Destinatarios');

Datos := Registro.AddChild('Item');
Datos.AddChild('NombreRazon').Text := TablaFacturacionCliente.Value;
Datos.AddChild('NIF').Text := TablaFacturacionCIF.Value;


Datos := Registro.AddChild('Desgloce');
Datos := Registro.AddChild('Item');

Datos.AddChild('ClaveRegimen').Text := '01'; //TablaFacturacionCliente.Value;
Datos.AddChild('CalificacionOperacion').Text := 'S1';
Datos.AddChild('BaseImponibleOimporteNoSujeto').Text := FloatToStr(DBase1); //TablafacturacionBase1.Value;
Datos.AddChild('CuotaRepercutida').Text := FloatToStr(dVacioNumero2);


Datos := Registro.AddChild('Item');
Datos.AddChild('ClaveRegimen').Text := '01';
Datos.AddChild('CalificacionOperacion').Text := 'S1';
Datos.AddChild('TipoImpositivo').Text := '0.00';
Datos.AddChild('BaseImponibleOimporteNoSujeto').Text := '0.00';
Datos.AddChild('CuotaRepercutida').Text := '0.00';

Pero al crear el XML no me aparecen en su lugar los cierre de nodo
ejemplo

</IDFactura>
</RegistroFactura>
Etc...

Me podeis echar una mano a montar correctamente el archivo ????

Gracias.

duilioisola 28-05-2025 11:15:35

Por lo que veo no estás siguiento la estructura del xml

Código Delphi [-]
[...]
Datos := Registro.AddChild('IDFactura');
Datos.AddChild('IDEmisorFactura').Text := TablaEmpresaCIF.Value;
Datos.AddChild('NumSerieFactura').Text := 'A' + TablaFacturacionNumero.Value;
Datos.AddChild('FechaExpedicionFactura').Text := (FechaFactura);
// Aqui terminan los datos del nodo IDFactura

// Esta linea depende otra vez de Registro
// Datos.AddChild('NombreRazonEmisor').Text := TablaEmpresaNombreTaller.Value;
// Deberia ser así
Registro.AddChild('NombreRazonEmisor').Text := TablaEmpresaNombreTaller.Value;

Registro.AddChild('TipoFactura').Text := 'F1';
[...]

Código:

?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Body>
    <RegFactuSistemaFacturacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
      <Cabecera>
        <ObligadoEmision xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
          <NombreRazon>Nombre</NombreRazon>
          <NIF>B12345678</NIF>
        </ObligadoEmision>
      </Cabecera>
      <RegistroFactura>
 /----> <RegistroAlta xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
|
^-------- <IDVersion>1.0</IDVersion>
|
^-------- <IDFactura>
|          <IDEmisorFactura>B45678901</IDEmisorFactura>
|          <NumSerieFactura>A/25001</NumSerieFactura>
|          <FechaExpedicionFactura>28-05-2025</FechaExpedicionFactura>
|        </IDFactura>
|
^-------- <RefExterna>7172</RefExterna>
|
^-------- <NombreRazonEmisor>Emisor</NombreRazonEmisor>
|
^-------- <TipoFactura>F1</TipoFactura>


rafa1963 28-05-2025 13:50:17

Respuesta
 
Un millón de gracias amigo duilioisola. Los xml es algo que me supera, y ya con la edad tan avanzada el coco no rinde como antes. Intentaré solucionar el problema para poder servir las pocas aplicaciones que tengo servidas y pronto me intentaré jubilar.

Gracias compañero


La franja horaria es GMT +2. Ahora son las 20:43:14.

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