FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola. Ya he llegado al punto de poder enviar el fichero, he seguido el ejemplo que han subido pero a la hora de hacer llamar a la función de envío me sale este error.
'Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml" Me pasa tanto en mi proyecto como en el de ejemplo. No se por que puede ser, alguien me puede ayudar. He probado con los datos que vienen en el ejemplo y con estos, pero en los dos casos me devuelve el mismo error. defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInmediatoInfo.wsdl'; defURL = 'https://www1.agenciatributaria.gob.es/wlpl/SSII-FACT/ws/SiiFactV1PSOAP'; defSvc = 'siiService'; defPrt = 'SuministroFacturasPruebas'; Por otra parte el poder generar el xml directamente puede ser una buena opción ya que la AEAT sacará una opción de poder enviar el xml a través de la página web de ellos sin web services ni nada. Será para empresas que tienen poco volumen de facturas. |
#2
|
|||
|
|||
¿ seguro que sacara esa opción para enviar el XML (y cuando?) ?
Modificando el ejemplo anterior, estoy a punto de poder completar el envío de una factura.... pero cuando te falta algún campo los errores que saca son imprecisos. Ahora mismo me dice que me falta la "contraparte" pero la estoy enviando, ya creo tenerlo bastante completo.... en cuanto lo complete os lo posteare, a ver si lo consigo. En mi caso si voy bien haría las dos cosas... |
#3
|
|||
|
|||
Cita:
|
#4
|
|||
|
|||
Cita:
Received content of invalid Content-Type setting: text/html - SOAP expects "text/xml Aunque aun no he realizado la llamado con el certificado... Aun así gracias a todos por la informacion!! |
#5
|
||||
|
||||
Tienes razón. Es problema del certificado, estaba seleccionando uno que estaba caducado. Poniendo otro el error que me genera ya es otro. He detectado que si no se hace la parte del certificado, a la hora de hacer la llamada el mismo te muestra una ventana para seleccionar el certificado.
En la documentación de hacienda pone lo siguiente : Suministro Inmediato de Información: modos de envío 1. Envío inmediato, de forma continua mediante “web service”. Desde el propio sistema de facturación se envía la información (agrupada según sus ciclos de proceso), con un margen de pocos días desde la expedición de la factura. La comunicación es automática “máquina a máquina” 2. Cumplimentación de un “formulario web” para aquellos de un “formulario web” para aquellos sujetos pasivos que realizan muy pocas operaciones. Ya no se si lo cumpliran o no. En cuanto la forma de generar el fichero xml, no veo la forma de que el delphi te genere con Xml DataBinding una estructura a través de dos ficheros xsd que es como lo da hacienda. Última edición por keys fecha: 25-01-2017 a las 15:25:00. Razón: Añadir Cambios |
#6
|
|||
|
|||
Bueno, este es mi código que no funciona:
da error 4102: falta contraparte. Llevo repasándolo bastantes horas y nada. Luego llamo a la AEAT: Pero... ¿podeis x favor, decirme como haceis para enviar el XML? porque viendo el tiempo que estoy perdiendo con esto, puedo intentar componer el XML. hay unas pocas constantes que hay que añadir, e iria justo debajo de: setCERTIFICADO(CERTIFICADO); CONST _PRESENTADOR='xxxxx'; _NIF_EMISOR='xxxxxxx'; _NIF_CLI='xxxxxx'; _NOMBRE_CLI='xxxxxx'; Código:
try ///////////////////////////////////////////////////////////////////////////// //// PRESENTADOR OSEA -> NOSOTROS ////////////////////////////////////// // se crea el objeto que se va a enviar: ///////////////////////////////////////////////////////////////////////////// ASuministroLRFacturasEmitidas := SuministroLRFacturasEmitidas.Create; ASuministroLRFacturasEmitidas.Cabecera := CabeceraSii.Create; // DATOS: ASuministroLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(0); // 0.1 ASuministroLRFacturasEmitidas.Cabecera.titular := PersonaFisicaJuridicaESType.Create; ASuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=_PRESENTADOR; // NOMBRE DEL PRESENTADOR (CUALQUIERA VALE) ASuministroLRFacturasEmitidas.Cabecera.Titular.NIF:=_NIF_EMISOR; // CIF del PRESENTADOR (DEBE COINCIDIR CON EL CERTIFICADO SELECCIONADO) // (0) A0 - ALTA // (1) A1- MODIFICACION // (2) A4- MODIFICACION REGIMEN VIAJEROS ASuministroLRFacturasEmitidas.Cabecera.TipoComunicacion:=ClaveTipoComunicacionType(0); //se crea un array con el numero de facturas que se van a emitir //en este ejemplo solo 1, pero pueden ser mas SetLength(ARegistroLRFacturasEmitidas, 1); //se introducen los datos de cada una de las facturas // for i := Low(ARegistroLRFacturasEmitidas) to High(ARegistroLRFacturasEmitidas) do // begin //Se crean todas las estructuras de datos de la consulta ARegistroLRFacturasEmitidas[0]:=LRfacturasEmitidasType.Create; ARegistroLRFacturasEmitidas[0].IDFactura:=IDFacturaExpedidaType.create; ARegistroLRFacturasEmitidas[0].FacturaExpedida:=FacturaExpedidaType.create; // <- clase para tipo de factura ARegistroLRFacturasEmitidas[0].PeriodoImpositivo:=PeriodoImpositivo.Create; ARegistroLRFacturasEmitidas[0].PeriodoImpositivo.Ejercicio:='2016'; // AÑO ARegistroLRFacturasEmitidas[0].PeriodoImpositivo.periodo :=TipoPeriodoType(11); // PERIODO 01- ENERO ... 12-DICIEMBRE (0A - ANUAL ) With ARegistroLRFacturasEmitidas[0].IDFactura do begin IDEmisorFactura:= IDEmisorFactura3.Create; IDEmisorFactura.NIF :=_NIF_EMISOR; // NUESTRO NIF, COMO EMISOR = TITULAR LIBRO REGISTRO = CERTIFICADO DIGITAL NumSerieFacturaEmisor:='20169999F'; // NUMERO Y SERIE DE LA FACTURA entiendo: 9999999X FechaExpedicionFacturaEmisor:='15/12/2016'; // FECHA DE EXPEDICION FACTURA (dd-mm-yyyy) end; ARegistroLRFacturasEmitidas[0].FacturaExpedida.tipofactura:=ClaveTipoFacturaType(0); // F1- FACTURA / F2 TICKET / ... ARegistroLRFacturasEmitidas[0].FacturaExpedida.ClaveRegimenEspecialOTrascendencia:=IdOperacionesTrascendenciaTributariaType(0); // 01-REGIMEN COMUN / 02-BIENES USADOS... 15-EXPORTACION ARegistroLRFacturasEmitidas[0].FacturaExpedida.ImporteTotal:='121'; // TOTAL (opcional) ARegistroLRFacturasEmitidas[0].FacturaExpedida.descripcionOperacion:='Nuestra Factura'; // DESCRIPCION FACTURA (LIBRE) // CONTRAPARTE: ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte:=PersonaFisicaJuridicaType.Create; // CREAR CLIENTE: ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NombreRazon:=_NOMBRE_CLI; // NOMBRE DEL CLIENTE ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NIFRepresentante:=''; ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NIF:=_NIF_CLI; // NIF DEL CLIENTE ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro:=IDOtroType.Create; // identifiacion del nif. //ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro.CodigoPais:=countryType2(10); ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro.IDType:=PersonaFisicaJuridicaIDTypeType(0); // 2-NIF / 3-PASAPORTE / 4- DOCUMENTO OFICIAL IDENT. PAIS RESIDENCIA ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro.ID:=''; // documento pais residencia (extranjero) // EMPEZAMOS CON LOS DESGLOSES (IVAs) ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose:= TipoDesglose.create; // ATENCION: TipoDesglose2 (facturas) TipoDesglose (inmuebles) setLength(IVAS,1); // numeros de iVAs en factura IVAS[0]:=DetalleIVA2.create; // CREAR primer IVA IVAS[0].BaseImponible:='100'; // BASE IMPONIBLE IVAS[0].TipoImpositivo:='21'; // IVA % IVAS[0].CuotaRepercutida:='21'; // IMPORTE IVA IVAS[0].TipoRecargoEquivalencia:='0'; // REQ % IVAS[0].CuotaRecargoEquivalencia:='0'; // IMPORTE RECARGO // opcion 1 ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desgloseFactura:=TipoSinDesgloseType.create; ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desgloseFactura.sujeta:=SujetaType.create; ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desgloseFactura.sujeta.noexenta:=NoExenta.create; // ASIGNAR IVAS ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.desglosefactura.sujeta.noexenta.desgloseIVA:=IVAS; // opcion 2 : (nada) (* ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion:=TipoConDesgloseType.create; ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.entrega:=TipoSinDesgloseType.Create; ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.entrega.sujeta:=SujetaType.Create; ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.entrega.sujeta.noexenta:=NoExenta.Create; // ASIGNAR IVAS ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose.DesgloseTipoOperacion.entrega.sujeta.noexenta.desgloseIVA:=IVAS; *) //se añade el array de facturas creado anteriormente ASuministroLRFacturasEmitidas.RegistroLRFacturasEmitidas:=ARegistroLRFacturasEmitidas; try // se hace la llamada a la funcion suministrada por el WS result := GetsiiSOAP.SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas); //mostrar los resultados devueltos por la llamada 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); //si el estado no es correcto, se muestran los errores 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 //El proceso de envio dio error MessageDlg(E.Message, mtError, [mbOK], 0); end; finally // se eliminan los objetos creados ASuministroLRFacturasEmitidas.Free; result.Free; end; |
#7
|
|||
|
|||
Cita:
Saludos a todos. Soy un poco nuevo en este tema, pero estoy viendo que se trata de dos operaciones diferentes: 1. Crear el XML según normas de la AEAT en el documento SII_Descripcion_ServicioWeb.pdf 2. Enviarlo por Webservice El primer paso no tiene ningún problema. Hay varias maneras de hacerlo. Es muy entretenido pero no es difícil. Ahora bien, una vez tienes el XML, ¿cuáles son los pasos para enviarlo? El proceso de Delphi con el "WSDL Importer" funciona perfectamente, incluso en Delphi 7. Te crea el SuministroInmediatoInfo.pas con todas las funciones que puedes llamar. ¡Fantástico! Pero eso no lo soluciona todo. ¿Qué viene después? ¿Hay que usar un componente SOAP de Delphi para el envío o no es necesario? ¿Cómo hay que tratar lo del certificado digital? ¿Y el NIF que tiene que ser validado contra la Base de Datos Centralizada de la AEAT? ¿Habrá alguien por ahí tan generoso que pueda explicarlo paso a paso? Muchas gracias. Última edición por CMB fecha: 26-01-2017 a las 15:21:09. Razón: Error ortográfico |
#8
|
||||
|
||||
Hola de nuevo.
¿Al final has desistido de enviarlo por código? Cita:
Saludos
__________________
Be water my friend. |
#9
|
|||
|
|||
Cita:
Hola soykarloscc, Bueno, yo tambien ando en el tema, pero en VB.NET -muy similar a C# en estructura- por lo que me gustaria, si es posible intercambiar info contigo sobre el tema-. Mi mail es jslegido@gmail.com Un saludo |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4175 | Hace 12 Horas 16:17:35 |
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 |
|