FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
Cita:
|
#3
|
|||
|
|||
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 ! |
#4
|
|||
|
|||
Esta claro que hay facturas rectificativas por diferencias. Aunque no lo veo muy claro.
Pero ... ¿y los abonos? ¿Cómo se gestionan? Saludos ! |
#5
|
||||
|
||||
Cita:
Saludos
__________________
Be water my friend. |
#6
|
|||
|
|||
si nos fijamos en el ejemplo suministrador por la AEAT:
Código:
<sii:Exenta> <sii:CausaExencion>E4</sii:CausaExencion> <sii:BaseImponible>-50</sii:BaseImponible> </sii:Exenta> <sii:NoExenta> <sii:TipoNoExenta>S2</sii:TipoNoExenta> <sii:DesgloseIVA> <sii:DetalleIVA> <sii:TipoImpositivo>10</sii:TipoImpositivo> <sii:BaseImponible>-45</sii:BaseImponible> <sii:CuotaRepercutida>-5</sii:CuotaRepercutida> si miramos, la línea señalada en negrita, eso NO es la base imponible. (o es la base Imponible de la factura rectificada?) (pero entonces que hace en negativo?) ¿alguna opinión? |
#7
|
||||
|
||||
Cita:
__________________
Be water my friend. |
#8
|
||||
|
||||
Hola de nuevo.
Hasta ahora solo había probado con facturas emitidas sin grandes problemas. Estoy intentando implementar en la misma unidad facturas recibidas y estoy teniendo problemas. ¿Hay que importar todos los ficheros wsdl de los distintos tipos de facturas? porque a mi se me hace un lío al hacer la llamada de factura emitida o recibida si los tengo en la misma unidad. Saludos
__________________
Be water my friend. |
#9
|
||||
|
||||
Cita:
|
#10
|
|||
|
|||
Buenas. Alguien sabe cómo convertir el tipo FacturaRespuestaExpedidaType en FacturaExpedidaType? Estoy comprobando la existencia de una factura y, aunque la llamada al método ConsultaLRFacturasEmitidas me devuelve ResultadoConsultaType.ConDatos, me gustaría poder hacer un Equals entre la factura nueva que intento introducir y la existente, para saber si son completamente iguales o hay algún campo que varía y, si varía algún campo de ella, subirla como A1.
|
#11
|
|||
|
|||
vamos a empezar con el desarrollo. ¿Alguien me puede decir si ya lo acabado y cuanto tiempo le ha llevado por ejemplo el codigo para solo enviar las facturas emitidas y recoger la respuesta en una tabla?.
|
#12
|
|||
|
|||
Entorno De Pruebas Sii
Buenos días, esta muy bien el foro la verdad y gracias a todos los que habéis aportado vuestro granito de arena para que esto avance y sea menos travesia del desierto, yo ya lo voy consiguiendo gracias a vuestra ayuda, estoy en el punto de comenzar a probar el envio y mi duda es de como hay que llamar a la función GetSiiSOAP y con que parámetros para enviar al entorno de pruebas de la Agencia Tributaria, trabajo con DelphiXe y si me podeis ayudar con un ejemplo de fuente se agradeceria mucho, después para volver a enviar al entorno real de producción, que hay que hacer?
Gracias. |
#13
|
||||
|
||||
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4170 | Hace 1 Semana 17:29:05 |
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 |
|