LLevo unos dias peleandome con lo del SII, mirando unidades de aqui, de allí, del FTP, he conseguido compilar sin errores usando las unidades que están en este hilo, solo de SuministroFactEmitidas, es lo unico que necesito. y ahora me pregunto lo siguiente, utilizo como la gran mayoria el componente HTTPRIO1, cuando se llama la funcion GetSiiSoap de la unidad de SuministroFactEmitidas, que tengo con las siguientes constantes:
Código Delphi
[-]
const
defWSDL = 'http://www.agenciatributaria.es/static_files/AEAT/Contenidos_Comunes/La_Agencia_Tributaria/Modelos_y_formularios/Suministro_inmediato_informacion/FicherosSuministros/V_1_1/SuministroFactEmitidas.wsdl';
defURL = 'https://prewww1.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';
defSvc = 'siiService';
defPrt = 'SuministroFactEmitidas';
Me arroja el siguiente error:
Entiendo que las direcciones indicadas no son correctas, donde puedo encontrar las correctas?, ya no entro si estoy en periodo de pruebas o no, me da igual, lo que quiero es enviar una factura emitida con el certificado seleccionado (eso creo que lo hago bien). Gracias por todo, agradecería algún ejemplo completo de un envio de una factura emitida y puestos a pedir tambien de la consulta de emitidas.
También secundo la proposición que hizo un miembro del foro, de unir todo lo realmente útil en un solo post, yo por mi parte, una vez que tenga hecho lo de las facturas emitidas, colgaré todo el proyecto en el FTP, aunque mio no tiene mucho, es una modificación de lo que había. Ahh, por cierto me olvidaba, como puedo guardar para ver a posteriori el XML generado antes del envio, pongo todo el código por si alguien me puede ayudar, como dije es código descargado del foro del club.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
i:LongInt;
ASuministroLRFacturasEmitidas: SuministroLRFacturasEmitidas;
ARegistroLRFacturasEmitidas:Array_Of_LRfacturasEmitidasType;
result:RespuestaLRFacturasEmitidas;
CERTIFICADO :Pointer;
IVAS: DesgloseIva3;
a,mes,d:word;
begin
if comboBox1.itemindex<0 then exit;
CERTIFICADO := BUSCAR_CERTIFICADO(comboBox1.text);
if(CERTIFICADO = nil) then begin
ShowMessage('No encuento el certificado');
Exit();
end;
setCERTIFICADO(CERTIFICADO);
try
ASuministroLRFacturasEmitidas := SuministroLRFacturasEmitidas.Create;
ASuministroLRFacturasEmitidas.Cabecera := CabeceraSii.Create;
ASuministroLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0); ASuministroLRFacturasEmitidas.Cabecera.titular := PersonaFisicaJuridicaESType.Create;
ASuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=Edit1.Text;
ASuministroLRFacturasEmitidas.Cabecera.Titular.NIF:=Edit2.Text;
ASuministroLRFacturasEmitidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(0);
SetLength(ARegistroLRFacturasEmitidas, 1);
ARegistroLRFacturasEmitidas[0]:=LRfacturasEmitidasType.Create;
ARegistroLRFacturasEmitidas[0].IDFactura:=IDFacturaExpedidaType.create;
ARegistroLRFacturasEmitidas[0].FacturaExpedida:=FacturaExpedidaType.create; ARegistroLRFacturasEmitidas[0].PeriodoLiquidacion:=PeriodoLiquidacion11.Create;
ARegistroLRFacturasEmitidas[0].PeriodoLiquidacion.Ejercicio:=Edit8.text; decodeDate(strtodate(edit7.Text),a,mes,d);
ARegistroLRFacturasEmitidas[0].PeriodoLiquidacion.periodo :=TipoPeriodoType(mes - 1);
With ARegistroLRFacturasEmitidas[0].IDFactura do
begin
IDEmisorFactura:= IDEmisorFactura3.Create;
IDEmisorFactura.NIF :=Edit2.text;
NumSerieFacturaEmisor:=Edit6.text;
FechaExpedicionFacturaEmisor:=Edit7.Text;
end;
ARegistroLRFacturasEmitidas[0].FacturaExpedida.tipofactura:=ClaveTipoFacturaType(0); ARegistroLRFacturasEmitidas[0].FacturaExpedida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(0); ARegistroLRFacturasEmitidas[0].FacturaExpedida.ImporteTotal:=Edit12.Text; ARegistroLRFacturasEmitidas[0].FacturaExpedida.descripcionOperacion:='Nuestra Factura';
ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte:=PersonaFisicaJuridicaType.Create; ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NombreRazon:=Edit4.Text; ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NIFRepresentante:='';
ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NIF:=Edit5.Text;
ARegistroLRFacturasEmitidas[0].FacturaExpedidA.TipoDesglose:= TipoDesglose3.create;
setLength(IVAS,1);
IVAS[0]:=DetalleIvaEmitidaType.Create;
IVAS[0].BaseImponible:=Edit9.Text; IVAS[0].TipoImpositivo:=Edit10.Text; IVAS[0].CuotaRepercutida:=Edit11.Text; IVAS[0].TipoRecargoEquivalencia:='0'; IVAS[0].CuotaRecargoEquivalencia:='0'; ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desgloseFactura:=TipoSinDesgloseType.create;
ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desgloseFactura.sujeta:=SujetaType.create;
ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desgloseFactura.sujeta.noexenta:=NoExenta2.create;
ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desglosefactura.sujeta.noexenta.desgloseIVA:=IVAS;
ASuministroLRFacturasEmitidas.RegistroLRFacturasEmitidas:=ARegistroLRFacturasEmitidas;
try
result := GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas);
for i := low(result.RespuestaLinea) to High(result.RespuestaLinea) do begin
with result.RespuestaLinea[i] do begin
Memo1.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor);
if EstadoRegistro <> EstadoRegistroType(0) then begin
Memo1.lines.add('Error no.: ' + InttoStr(CodigoErrorRegistro));
Memo1.lines.add(DescripcionErrorRegistro);
end;
end;
end;
except
On E:Exception do
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
finally
ASuministroLRFacturasEmitidas.Free;
result.Free;
end;
end;
Gracias. Y saludos a todos.