![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
a esta hora y reimportando los wdsl y tal... ya puedo enviar facturas emitidas, recibidas, y consultar.
sigue dando el error: Se requiere un certificado para completar la autenticación de cliente - URL:https://www7.aeat.es/wlpl/SSII-FACT/...iiFactFEV1SOAP - SOAPAction:"" si pasas un monton. No pasa ni una del paquete. (confirmado porque luego consulto). una pregunta tonta... en el numero de factura pone "numeroserie" si tienes serie en tus facturas entiendo que debería ser 9999999X ¿no? |
|
#2
|
||||
|
||||
|
Cita:
Cita:
Saludos
__________________
Be water my friend. |
|
#3
|
||||
|
||||
|
Cita:
Una Pregunta. A la hora de añadir los wsdl al proyecto los habeis añadido todos desde la misma carpeta? o habéis añadido cada uno desde una carpeta distinta? es decir las de emitidas por un lado, las recibidas por otro, etc... A mi tambien me da error si envío muchas facturas. Un Saludo. |
|
#4
|
|||
|
|||
|
He reimportado los wsdl y ahora me dice:
ex.Message = "Debe establecer la propiedad Path para llamar al método Send." He importado los servicios web de los 7 suministros que hay (SuministroBienesInversion, SuministroCobrosEmitidas, SuministroCobrosMetalico, SuministroFactEmitidas, SuministroFactRecibidas, SuministroOpIntracomunitarias, SuministroPagosRecibidas). Pero esta propiedad Path es la primera vez que la veo, a alguno le ha salido este mensaje de error al intentar enviar? Un saludo. Me autorespondo, me faltaba reeditar las referencias de los SiiService de cada suministro. |
|
#5
|
|||
|
|||
|
Facturas emitidas consigo enviarlas correctamente, para el resto me devuelve SIEMPRE este error:
Error en comunicación: Codigo[4124].Error La direccion no se corresponde con el fichero de entrada. Antes de la versión 0.5 conseguía enviar todos los tipos salvo Facturas Recibidas, pero ahora sólo puedo enviar facturas emitidas. Ese error se lo da a alguien más? No he encontrado mucha información sobre ese error en la red, por lo que no puedo deciros muchos más. |
|
#6
|
|||
|
|||
|
Cita:
|
|
#7
|
||||
|
||||
|
Este es mi código para consultar facturas emitidas, colocando sus resultados en una base de datos.
Código:
// memoErrores.lines.Clear;
if dbRespuesta.active then dbRespuesta.Active:=false;
dbRespuesta.FieldDefs.Clear;
dbRespuesta.FieldDefs.Add('numero',ftstring,30,false);
dbRespuesta.FieldDefs.Add('fecha',ftDate,0,false);
dbRespuesta.FieldDefs.Add('cliente',ftstring,100,false);
dbRespuesta.FieldDefs.Add('nif',ftstring,50,false);
dbRespuesta.FieldDefs.Add('tipo',ftstring,5,false);
dbRespuesta.FieldDefs.Add('exenta',ftstring,5,false);
dbRespuesta.FieldDefs.Add('tipostr',ftstring,50,false);
dbRespuesta.FieldDefs.Add('regimen',ftstring,5,false);
dbRespuesta.FieldDefs.Add('operacion',ftstring,200,false);
dbRespuesta.FieldDefs.Add('terceros',ftstring,5,false);
dbRespuesta.FieldDefs.Add('total',ftfloat,0,false);
dbRespuesta.FieldDefs.Add('cobros',ftstring,5,false);
dbRespuesta.FieldDefs.Add('noexenta',ftstring,5,false);
dbRespuesta.FieldDefs.Add('estado',ftstring,100,false);
dbRespuesta.FieldDefs.Add('descripcio',ftstring,300,false);
for h := 0 to 6 do
begin
dbRespuesta.FieldDefs.Add('iva'+inttostr(h),ftFloat,0,false);
dbRespuesta.FieldDefs.Add('impiva'+inttostr(h),ftFloat,0,false);
dbRespuesta.FieldDefs.Add('baseimp'+inttostr(h),ftFloat,0,false);
end;
dbRespuesta.CreateTable;
dbRespuesta.Active:=true;
//***CSY
CERTIFICADO := BUSCAR_CERTIFICADO(comboBox1.text); //<----- SELECCIONAR CERTIFICADO
if(CERTIFICADO = nil) then begin
ShowMessage('No encuento el certificado');
Exit();
end;
emitidas.HTTPWebNode.ClientCertificate.SerialNum := Buscar_Certificado_SERIAL(comboBox1.text);
//****
try
/////////////////////////////////////////////////////////////////////////////
//// PRESENTADOR OSEA -> NOSOTROS //////////////////////////////////////
// se crea el objeto que se va a enviar:
/////////////////////////////////////////////////////////////////////////////
aConsultaLRFacturasEmitidas := ConsultaLRFacturasEmitidas.Create;
aConsultaLRFacturasEmitidas.Cabecera:=CabeceraConsultaSii.Create;
// DATOS:
aConsultaLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0); // 0.1
aConsultaLRFacturasEmitidas.Cabecera.titular := PersonaFisicaJuridicaUnicaESType.Create;
aConsultaLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=_PRESENTADOR; // NOMBRE DEL PRESENTADOR (CUALQUIERA VALE)
aConsultaLRFacturasEmitidas.Cabecera.Titular.NIF:=_NIF_EMISOR; // CIF del PRESENTADOR (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO)
aConsultaLRFacturasEmitidas.FiltroConsulta:=LRFiltroEmitidasType.Create;
aConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo:=PeriodoImpositivo.Create;
aConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo.Ejercicio:=edit2.text;
aConsultaLRFacturasEmitidas.FiltroConsulta.PeriodoImpositivo.Periodo:=TipoPeriodoType( comboBox2.itemIndex );
try
// se hace la llamada a la funcion suministrada por el WS
result := GetsiiSOAP(true,'',emitidas).ConsultaLRFacturasEmitidas(aConsultaLRFacturasEmitidas);
memoComs.Lines.Add( getEnumName(typeInfo(ResultadoConsultaType), ord(result.resultadoConsulta) ) );
//mostrar los resultados devueltos por la llamada
for i := low(result.RegistroRespuestaConsultaLRFacturasEmitidas) to High(result.RegistroRespuestaConsultaLRFacturasEmitidas) do
begin
_noexenta:='';
_numero:='';
_fechaStr:='';
_tipo:='';
_tipoStr:='';
_regimen:='';
_operacion:='';
_exenta:='';
_terceros:='';
_cliente:='';
_nif:='';
_tipodesglose:='';
_cobros:='';
_estado:='';
_estadoFactura:='';
_ImporteTotal:=0;
_descripcion:='';
with result.RegistroRespuestaConsultaLRFacturasEmitidas[i] do
begin
try
if result.RegistroRespuestaConsultaLRFacturasEmitidas[i].datosfacturaemitida.tipodesglose.desglosetipooperacion<>nil then
_exenta:=GetEnumName( TypeInfo(CausaExencionType),ord(DatosFacturaEmitida.TipoDesglose.DesgloseTipoOperacion.Entrega.Sujeta.exenta.CausaExencion));
except
end;
_tipo:=GetEnumName(TypeInfo(clavetipoFacturaType), Ord(DatosFacturaEmitida.TipoFactura));
_tipoSTR:=tipoSTR( DatosFacturaEmitida.TipoFactura );
_regimen:=GetEnumName( TypeInfo(IdOperacionesTrascendenciaTributariaType), Ord(DatosFacturaEmitida.ClaveRegimenEspecialOTrascendencia) );
_ImporteTotal:=strToFloat( SII_Numero( DatosFacturaEmitida.ImporteTotal ) );
_operacion:=DatosFacturaEmitida.DescripcionOperacion;
_terceros:=GetEnumName(typeInfo( EmitidaPorTercerosType ), ord( DatosFacturaEmitida.EmitidaPorTerceros ) );
_numero:=IDFactura.NumSerieFacturaEmisor;
try
if DatosFacturaEmitida.contraparte<>nil then // POR SI NO LLEVA CONTRAPARTE:
begin
_cliente:=DatosFacturaEmitida.contraparte.NombreRazon;
_NIF:=DatosFacturaEmitida.contraparte.NIF;
if DatosFacturaEmitida.TipoDesglose.DesgloseFactura<>nil then
begin
_tipodesglose:=GetEnumName( typeInfo(TipoOperacionSujetaNoExentaType), ord(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.TipoNoExenta) );
_noexenta:=getEnumName(typeInfo( TipoOperacionSujetaNoExentaType ) , ord(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.TipoNoExenta ) );
end;
if DatosFacturaEmitida.contraparte.IDOtro<>nil then
begin
if _NIF='' then
_NIF:=DatosFacturaEmitida.contraparte.IDOtro.ID;
end;
end
else // POSIBLE ERROR:
BEGIN
_cliente:='SIN CLIENTE';
MemoComs.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' SIN CLIENTE');
end;
if DatosFacturaEmitida.TipoDesglose.DesgloseFactura<>NIL then
begin
for h := low(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) to high( DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) do
begin
with DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA[h] do
begin
base[h]:= strTofloat( SII_numero( baseImponible ) );
tipo[h]:=strTofloat(SII_numero( tipoImpositivo ) );
cuota[h]:=strTofloat(SII_numero( cuotarepercutida ) );
end;
end;
end;
_cobros:=getEnumName( typeInfo(FacturaARType), ord(DatosFacturaEmitida.Cobros) );
_fechaStr:=copy(IDFactura.FechaExpedicionFacturaEmisor,1,10);
_fechaStr:=stringReplace(_fechaStr,'-','/',[rfReplaceAll]);
_fecha:=strTodate( _fechaStr );
_estado:=estadoFactura.EstadoRegistro;
_descripcion:=DatosFacturaEmitida.DescripcionOperacion;
MemoComs.lines.add('factura: ' + IDFactura.NumSerieFacturaEmisor + ' ' + IDFactura.NumSerieFacturaEmisorResumenFin + ' ' + IDFactura.FechaExpedicionFacturaEmisor);
// guardar en la base de datos:
dbRespuesta.Insert;
dbRespuesta.fieldbyName('numero').Text:=_numero;
dbRespuesta.fieldbyName('fecha').asdatetime:=_fecha;
dbRespuesta.fieldbyName('cliente').Text:=_cliente;
dbRespuesta.fieldbyName('nif').Text:=_nif;
dbRespuesta.fieldbyName('tipo').Text:=_tipo;
dbRespuesta.fieldbyName('tipostr').Text:=_tipostr;
dbRespuesta.fieldbyName('exenta').Text:=_exenta;
dbRespuesta.fieldbyName('regimen').Text:=_regimen;
dbRespuesta.fieldbyName('operacion').Text:=_operacion;
dbRespuesta.fieldbyName('terceros').Text:=_terceros;
dbRespuesta.fieldbyName('total').asfloat:=_ImporteTotal;
dbRespuesta.fieldbyName('cobros').text:=_cobros;
dbRespuesta.fieldbyName('fecha').asdatetime:=_fecha;
dbRespuesta.fieldbyName('estado').text:=_estado;
dbRespuesta.fieldbyName('descripcio').text:=_descripcion;
dbRespuesta.fieldbyName('Noexenta').text:=_noexenta;
if DatosFacturaEmitida.TipoDesglose.DesgloseFactura<>NIL then
begin
for h := low(DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) to high( DatosFacturaEmitida.TipoDesglose.DesgloseFactura.Sujeta.NoExenta.DesgloseIVA) do
begin
dbRespuesta.fieldbyName('iva'+inttostr(h)).asfloat:=tipo[h];
dbRespuesta.fieldbyName('impiva'+inttostr(h)).asfloat:=cuota[h];
dbRespuesta.fieldbyName('baseimp'+inttostr(h)).asfloat:=base[h];
end;
end;
dbRespuesta.Post;
except
On E:Exception do
begin
MemoErrores.lines.Add(_numero);
MemoErrores.lines.Add(E.Message);
MemoErrores.lines.Add('--------------------');
end;
end;
end;
end;
except
On E:Exception do
//El proceso de envio dio error
MemoErrores.lines.Add(E.Message);
end;
finally
// se eliminan los objetos creados
aConsultaLRFacturasEmitidas.Free;
result.Free;
dbRespuesta.Active:=true;
end;
end;
* Facturas recibidas intracomunitarias y autofactura.... * Factura a Canarias? Aunque lo estoy mirando ahora, ¿Por favor, podeis postear algún ejemplo? ... Saludos ! |
|
#8
|
||||
|
||||
|
Esta claro que hay facturas rectificativas por diferencias. Aunque no lo veo muy claro.
Pero ... ¿y los abonos? ¿Cómo se gestionan? Saludos ! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4524 | Hace 3 Días 16:17:40 |
| AEAT envio de datos vía Webservice problemas con WSDL | CelsoO | Internet | 11 | 09-10-2019 20:03:41 |
| webService Soap de la Administración Digital Española notific@ | apicito | Internet | 3 | 31-01-2017 11:25:28 |
| Error en Webservice funcion envio de sms | webmasterplc | Delphi para la web | 5 | 25-07-2013 20:10:29 |
| Problemas con envío de XML a un WebService | davidvamo | Internet | 1 | 13-02-2007 15:49:20 |
|