Buenos dias Neftali
he visto tu codigo y no se como has guardado el XML.
Yo lo hacia con el evento beforeExecute del HTTPRIO pero en este ejemplo no se llega a ejecutar nunca.
Mi idea es crear un codigo con lo publicado aqui, que tome un excel o un archivo de texto y genere al menos un alta simple de factura, ¿si alguien quiere ayudarme? y publicarlo aqui en el foto.
Neftali Me gustaria saber, como guardar el XML antes de tener la url de envio.
Gracias
Saludos a todos.
Cita:
Empezado por Neftali [Germán.Estévez]
A mi los tres ficheros generados con esas opciones me resultan similares.
Completando el código que has puesto, la llamada podría ser similar a esta:
Código Delphi [-]procedure TForm3.Button1Click(Sender: TObject);
var
arrayDetalles : array of DetalleType;
RegistroAltaFacturas: Array_Of_FacturasEmitidasType;
begin
var alta:AltaFactuSistemaFacturacion := AltaFactuSistemaFacturacion.Create;
var cab := Cabecera.Create;
cab.IDVersion := VersionType._1_0;
cab.ObligadoEmision := PersonaFisicaJuridicaESType.Create;
cab.ObligadoEmision.NombreRazon := 'Empresa pruebas';
cab.ObligadoEmision.NIF := '11111111H';
cab.TipoRegistroAEAT := TipoRegistroAEATType.T0;
cab.FechaFinVeriFactu := '01/01/2026';
alta.Cabecera := cab;
var fact:FacturasEmitidasType;
fact := FacturasEmitidasType.Create;
fact.RegistroFacturacion := RegistroFacturacionType.Create;
fact.RegistroFacturacion.IDFactura := IDFacturaExpedidaType.Create;
fact.RegistroFacturacion.IDFactura.NumSerieFacturaEmisor := '23/123456';
fact.RegistroFacturacion.IDFactura.FechaExpedicionFacturaEmisor := '31/12/23';
fact.RegistroFacturacion.IDFactura.IDEmisorFactura := IDEmisorFactura.Create;
fact.RegistroFacturacion.IDFactura.IDEmisorFactura.NIF := '3333333';
fact.RegistroFacturacion.DescripcionOperacion := 'venta de mercaderías';
var detalle := DetalleType.Create;
detalle.CuotaRepercutida := '100';
detalle.TipoImpositivo := '21';
SetLength(arrayDetalles, 1);
arrayDetalles[0] := detalle;
var desglose: DesgloseType := DesgloseType.Create();
SetLength(Desglose, 1);
Desglose[0] := detalle;
fact.RegistroFacturacion.Desglose := Desglose;
SetLength(RegistroAltaFacturas, 1);
RegistroAltaFacturas[0] := fact;
alta.RegistroAltaFacturas := RegistroAltaFacturas;
try
var res:RespuestaAltaFactuSistemaFacturacion := RespuestaAltaFactuSistemaFacturacion.Create;
res := GetsfSOAP(False, '', HTTPRIO1).AltaFactuSistemaFacturacion(alta);
ShowMessage('Se ha realizado el envío; ' + sLineBreak +
' CSV: ' + res.CSV + sLineBreak +
' TimeStamp: ' + res.DatosPresentacion.TimestampPresentacion
);
except
on E:Exception do begin
ShowMessage(Format('Error al realizar el envío; (%s)-%s',[E.ClassName, E.Message]));
end;
end;
end;
En este caso genera un fichero como este:
Código:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding">
<SOAP-ENV:Body xmlns:NS1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SistemaFacturacion.wsdl" xmlns:NS2="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:NS3="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
<NS1:AltaFactuSistemaFacturacion SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<AltaFactuSistemaFacturacion SOAP-ENC:id="1" xsi:type="NS2:AltaFactuSistemaFacturacion">
<Cabecera SOAP-ENC:id="2" xsi:type="NS3:Cabecera">
<IDVersion xsi:type="NS3:VersionType">1.0</IDVersion>
<ObligadoEmision SOAP-ENC:id="3" xsi:type="NS3:PersonaFisicaJuridicaESType">
<NombreRazon xsi:type="xsd:string">Empresa pruebas</NombreRazon>
<NIF xsi:type="xsd:string">11111111H</NIF>
</ObligadoEmision>
<TipoRegistroAEAT xsi:type="NS3:TipoRegistroAEATType">T0</TipoRegistroAEAT>
<FechaFinVeriFactu xsi:type="xsd:string">01/01/2026</FechaFinVeriFactu>
</Cabecera>
<item SOAP-ENC:id="4" xsi:type="NS2:FacturasEmitidasType">
<RegistroFacturacion SOAP-ENC:id="5" xsi:type="NS3:RegistroFacturacionType">
<IDFactura SOAP-ENC:id="6" xsi:type="NS3:IDFacturaExpedidaType">
<IDEmisorFactura SOAP-ENC:id="7" xsi:type="NS3:IDEmisorFactura">
<NIF xsi:type="xsd:string">3333333</NIF>
</IDEmisorFactura>
<NumSerieFacturaEmisor xsi:type="xsd:string">23/123456</NumSerieFacturaEmisor>
<FechaExpedicionFacturaEmisor xsi:type="xsd:string">31/12/23</FechaExpedicionFacturaEmisor>
</IDFactura>
<NombreRazonEmisor xsi:type="xsd:string"/>
<TipoRegistroSIF xsi:type="NS3:TipoRegistroSIFType">S0</TipoRegistroSIF>
<TipoFactura xsi:type="NS3:ClaveTipoFacturaType">F1</TipoFactura>
<DescripcionOperacion xsi:type="xsd:string">venta de mercaderías</DescripcionOperacion>
<Desglose xsi:type="SOAP-ENC:Array" SOAP-ENC:itemType="NS3:DetalleType" SOAP-ENC:arraySize="1">
<item SOAP-ENC:id="8" xsi:type="NS3:DetalleType">
<ClaveRegimen xsi:type="NS3:IdOperacionesTrascendenciaTributariaType">01</ClaveRegimen>
<TipoImpositivo xsi:type="xsd:string">21</TipoImpositivo>
<BaseImponibleOimporteNoSujeto xsi:type="xsd:string"/>
<CuotaRepercutida xsi:type="xsd:string">100</CuotaRepercutida>
</item>
</Desglose>
<ImporteTotal xsi:type="xsd:string"/>
<EncadenamientoRegistroAnterior xsi:nil="true"/>
<SistemaInformatico xsi:nil="true"/>
<FechaGenRegistro xsi:type="xsd:string"/>
<HoraGenRegistro xsi:type="xsd:string"/>
<HusoHorarioGenRegistro xsi:type="NS3:HusoHorarioGenRegistroType">01</HusoHorarioGenRegistro>
</RegistroFacturacion>
<DatosControl xsi:nil="true"/>
</item>
</AltaFactuSistemaFacturacion>
</NS1:AltaFactuSistemaFacturacion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Adjunto los 3 ficheros generados al importar el WSDL y el propio fichero WSDL.
|