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; // Cabecera 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; // Factura 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'; // Detalle var detalle := DetalleType.Create; detalle.CuotaRepercutida := '100'; detalle.TipoImpositivo := '21'; SetLength(arrayDetalles, 1); arrayDetalles[0] := detalle; // desglose var desglose: DesgloseType := DesgloseType.Create(); SetLength(Desglose, 1); Desglose[0] := detalle; fact.RegistroFacturacion.Desglose := Desglose; // Lista de facturas del envío SetLength(RegistroAltaFacturas, 1); RegistroAltaFacturas[0] := fact; // Factura 1 alta.RegistroAltaFacturas := RegistroAltaFacturas; // envío 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.
|
Gracias Germán por el ejemplo. El problema es que ese código a mi no me compila en mi Delphi Berlín, se ve que este tipo de instrucciones no le gustan:
Código Delphi
[-]
var alta:AltaFactuSistemaFacturacion := AltaFactuSistemaFacturacion.Create;
¿Hay alguna forma de modificar eso para que compile en Delphi Berlín?
Gracias de nuevo y un saludo.