Hola a tod@s, estoy intentando hacer la parte referente a la consulta de fras. expedidas y este es mi código:
Código Delphi
[-]
function suministra_informacion: string;
var
v_register: integer;
certificado:String;
AConsultaLRFacturasEmitidas:ConsultaLRFacturasEmitidas;
ARespuestaConsultaLRFacturasEmitidas:RespuestaConsultaLRFacturasEmitidas;
AResultadoConsulta:ResultadoConsultaType;
a :string;
i:LongInt;
begin
if main.lista_certificados.itemindex<0 then
begin
exit;
end;
certificado := numero_certificado(main.lista_certificados.text);
if(certificado = '') then
begin
ShowMessage('No encuento el certificado');
Exit;
end;
datos.Data.LibrosRegistros.First;
v_register := 1;
while v_register <= datos.Data.LibrosRegistros.RecordCount do
begin
Data.HTTPRIO1.HTTPWebNode.ClientCertificate.SerialNum := certificado;
try
AConsultaLRFacturasEmitidas := ConsultaLRFacturasEmitidas.Create;
AConsultaLRFacturasEmitidas.Cabecera := CabeceraConsultaSii.Create;
AConsultaLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0);
AConsultaLRFacturasEmitidas.Cabecera.titular := PersonaFisicaJuridicaUnicaESType.Create;
AConsultaLRFacturasEmitidas.Cabecera.Titular.NombreRazon:= main.g_name; AConsultaLRFacturasEmitidas.Cabecera.Titular.NIF:= main.g_nif;
AConsultaLRFacturasEmitidas.FiltroConsulta := LRFiltroEmitidasType.Create;
AConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo := PeriodoImpositivo.Create;
AConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo.Ejercicio := formatdatetime('yyyy',data.LibrosRegistros.FieldByName('FechaExpedicionFacturaEmisor').AsDateTime);
AConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo.Periodo := TipoPeriodoType(1);
AConsultaLRFacturasEmitidas.FiltroConsulta.ClavePaginacion := IDFacturaExpedidaBCType.Create;
AConsultaLRFacturasEmitidas.FiltroConsulta.ClavePaginacion.IDEmisorFactura := IDEmisorFactura3.Create;
AConsultaLRFacturasEmitidas.FiltroConsulta.ClavePaginacion.IDEmisorFactura.NIF := main.g_nif;
AConsultaLRFacturasEmitidas.FiltroConsulta.ClavePaginacion.NumSerieFacturaEmisor := data.LibrosRegistros.FieldByName('NumeroFacturaEmisor').AsString;
AConsultaLRFacturasEmitidas.FiltroConsulta.ClavePaginacion.FechaExpedicionFacturaEmisor := data.LibrosRegistros.FieldByName('FechaExpedicionFacturaEmisor').asstring;
try
ARespuestaConsultaLRFacturasEmitidas := GetsiiSOAP(true,'',data.HTTPRIO1).ConsultaLRFacturasEmitidas(AConsultaLRFacturasEmitidas);
for i := low(ARespuestaConsultaLRFacturasEmitidas.RegistroRespuestaConsultaLRFacturasEmitidas) to High(ARespuestaConsultaLRFacturasEmitidas.RegistroRespuestaConsultaLRFacturasEmitidas) do
begin
with ARespuestaConsultaLRFacturasEmitidas.RegistroRespuestaConsultaLRFacturasEmitidas[i] do
begin
AResultadoConsulta := ARespuestaConsultaLRFacturasEmitidas.ResultadoConsulta;
if aresultadoconsulta = ResultadoConsultaType(1) then
showmessage('hola')
else
showmessage('adios')
end;
end;
except
On E:Exception do
MessageDlg(E.Message, mtError, [mbOK], 0);
end;
finally
AConsultaLRFacturasEmitidas.Free;
ARespuestaConsultaLRFacturasEmitidas.Free;
end;
datos.Data.LibrosRegistros.Next;
v_register := v_register + 1;
end;
end;
El xml se envia correctamente y devuelve respuesta correctamente (SINDATOS), pero a la hora de gestionarlo a través de la variable AResultadoConsulta, no se gestionarlo.
Quiero decir como controlo con AresultadoConsulta si devuelve CONDATOS o SINDATOS. No logro hacerlo.
Gracias.