FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#3081
|
|||
|
|||
Buenas a todos!!
Ya hace tiempo que andamos a vueltas con el S.I.I. en mi empresa porque han crecido demasiado y ahora deben enviar todo automáticamente. He implementado todo lo que he leído, (casi 80 páginas y madre mía...) gracias a todos por tanta y tan valiosa información, pero me da un error a la hora de mandar a PRUEBAS una factura emitida, en concreto "Interface not supported". Las direcciones son estas: Código:
//defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInmediatoInfo.wsdl'; defWSDL = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP'; defURL = 'http://schemas.xmlsoap.org/wsdl/'; defSvc = 'siiService'; //defPrt = 'SuministroFacturasPruebas'; defPrt = 'SuministroFactEmitidasPruebas'; |
#3082
|
||||
|
||||
Tal vez deberías mostrar qué código estás utilizamdo y dónde te está dando error.
Ese error es muy genérico como para darte una solución que sea algo más concreta que "utilizar correctamente los interfaces".
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3083
|
|||
|
|||
Cita:
Hola Germán! Pues estoy utilizando el código del proyecto que subió newtron. Código:
procedure TfrmAEATSII.sbInformarEmitidasClick(Sender: TObject); var i:LongInt; ASuministroLRFacturasEmitidas:SuministroLRFacturasEmitidas; ARegistroLRFacturasEmitidas:Array_Of_LRfacturasEmitidasType; result:RespuestaLRFacturasEmitidas; CERTIFICADO :Pointer; IVAS: DesgloseIva2; cTotal : Currency; j : integer; a,mes,d:word; begin if comboBox1.itemindex<0 then exit; //***CSY 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; // DATOS: ASuministroLRFacturasEmitidas.Cabecera.IDVersionSii:=VersionSiiType(1); // 0.1 ASuministroLRFacturasEmitidas.Cabecera.titular := PersonaFisicaJuridicaESType.Create; ASuministroLRFacturasEmitidas.Cabecera.Titular.NombreRazon:=edEmpresa.Text; // NOMBRE DEL PRESENTADOR (CUALQUIERA VALE) ASuministroLRFacturasEmitidas.Cabecera.Titular.NIF:=BBDD.zSacaNombre('EMPRESAS', 'IDEmpresa=' + Empresa.ToString, 'CIF'); // 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); ///wlpl/SSII-FACT/ws/fr/SiiFactFRV1SOAP //Se crean todas las estructuras de datos de la consulta SetLength(ARegistroLRFacturasEmitidas, 1); 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:=edEjercicio.text; // AÑO decodeDate(spEnlaceLoad.FieldByName('FechaDoc').AsDateTime,a,mes,d); ARegistroLRFacturasEmitidas[0].PeriodoImpositivo.periodo :=TipoPeriodoType(mes - 1); // PERIODO 01- ENERO ... 12-DICIEMBRE (0A - ANUAL ) With ARegistroLRFacturasEmitidas[0].IDFactura do begin IDEmisorFactura:= IDEmisorFactura3.Create; IDEmisorFactura.NIF :=BBDD.zSacaNombre('EMPRESAS', 'IDEmpresa=' + Empresa.ToString, 'CIF'); // NUESTRO NIF, COMO EMISOR = TITULAR LIBRO REGISTRO = CERTIFICADO DIGITAL NumSerieFacturaEmisor:=spEnlaceLoad.FieldByName('NUMDOC').AsString; // NUMERO Y SERIE DE LA FACTURA entiendo: 9999999X FechaExpedicionFacturaEmisor:=FormatDateTime('dd-mm-yyyy', spEnlaceLoad.FieldByName('FechaDoc').AsDateTime); // 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 cTotal := spEnlaceLoad.FieldByName('Base').Value + spEnlaceLoad.FieldByName('CuotaIVA').Value + spEnlaceLoad.FieldByName('CuotaReq').Value; ARegistroLRFacturasEmitidas[0].FacturaExpedida.ImporteTotal:=StringReplace(StringReplace(CurrToStr(cTotal), '.', '', []), ',', '.', []); // 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:=spEnlaceLoad.FieldByName('Nombre').Value; // NOMBRE DEL CLIENTE ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NIFRepresentante:=''; ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.NIF:=spEnlaceLoad.FieldByName('NIF').Value; // NIF DEL CLIENTE (* ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro:=IDOtroType.Create; // identifiacion del nif. //ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro.CodigoPais:=countryType2(10); // EN CASO DE ESPAÑA NO ES NECESARIO ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro.IDType:=PersonaFisicaJuridicaIDTypeType(0); // 2-NIF / 3-PASAPORTE / 4- DOCUMENTO OFICIAL IDENT. PAIS RESIDENCIA ARegistroLRFacturasEmitidas[0].FacturaExpedida.Contraparte.IDotro.ID:=''; // EN CASO DE 3 Ó 4 INDICAR EL ID. *) // EMPEZAMOS CON LOS DESGLOSES (IVAs) ARegistroLRFacturasEmitidas[0].FacturaExpedida.TipoDesglose:= TipoDesglose.create; // ATENCION: TipoDesglose2 (facturas) TipoDesglose (inmuebles) BBDD.zSetSQL( zDataSet2, 'SELECT * FROM T_FACTURASVENTA_IMP WHERE ID=' + spEnlaceLoad.FieldByName('IDDOC').AsString); BBDD.zExec( zDataSet2 ); setLength(IVAS, zDataSet2.RecordCount); // numeros de iVAs en factura j := 0; zDataSet2.First; while not zDataSet2.Eof do begin IVAS[j]:=DetalleIVA2.create; // CREAR primer IVA IVAS[j].BaseImponible:= StringReplace(StringReplace(zDataSet2.FieldByName('Base').AsString, '.', '', []), ',', '.', []); // BASE IMPONIBLE IVAS[j].TipoImpositivo:=StringReplace(StringReplace(zDataSet2.FieldByName('PORCIVA').AsString, '.', '', []), ',', '.', []); // IVA % IVAS[j].CuotaRepercutida:=StringReplace(StringReplace(zDataSet2.FieldByName('CUOTA').AsString, '.', '', []), ',', '.', []); // IMPORTE IVA IVAS[j].TipoRecargoEquivalencia:='0'; // REQ % IVAS[j].CuotaRecargoEquivalencia:='0'; // IMPORTE RECARGO zDataSet2.Next; Inc(j); end; // 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; // documento pais residencia (extranjero) //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(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASuministroLRFacturasEmitidas); //<-- Puñetero error Interface not supported //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; Memo1.Visible := True; 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; //https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInmediatoInfo.wsdl end; Código:
function GetsiiSOAP(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): siiSOAP; const //defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInmediatoInfo.wsdl'; defWSDL = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP'; defURL = 'http://schemas.xmlsoap.org/wsdl/'; defSvc = 'siiService'; //defPrt = 'SuministroFacturasPruebas'; defPrt = 'SuministroFactEmitidasPruebas'; var RIO: THTTPRIO; begin UseWSDL:=True; Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as siiSOAP); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result = nil) and (HTTPRIO = nil) then RIO.Free; end; end; Tengo un TADOStoredProcedure que me devuelve las facturas del Libro de IVA y es con lo que relleno los campos que se envían. Hay también funciones que devuelven datos de la BBDD que, depurando, devuelven los valores correctos. El error es en el envío. Gracias! |
#3084
|
||||
|
||||
Hola.
Desde que se puso ese código los wsdl han cambiado. Tendrás que importar los nuevos, los puedes sacar de la web de hacienda. Saludos
__________________
Be water my friend. |
#3085
|
|||
|
|||
Operación exenta de IVA de acuerdo con el artículo 8 del RD-ley 15/2020, de 21 de abr
¿Alguien ha enviado ya alguna factura "contamplando" esta novedad que se han sacado de la manga?
¿Podría alguien adjuntar un xml de ejemplo? Gracias. Cita:
|
#3086
|
||||
|
||||
Cita:
Yo me estoy enterando ahora de ese detalle pero según dice la factura hay que enviarla como cualquier otra exenta de IVA así que no deberías de tener problemas. Saludos
__________________
Be water my friend. |
#3087
|
|||
|
|||
Cita:
Cita:
|
#3088
|
||||
|
||||
Efectivamente yo podría otros.
__________________
Be water my friend. |
#3089
|
|||
|
|||
¿Tu sabes si en la misma factura se pueden enviar cosas exentas y no exentas?. En caso afirmativo, ¿podrías pegarme un trozo de XML explicando como va la separación entre lo exento y lo no exento?. Gracias.
|
#3090
|
||||
|
||||
Cita:
Pues la verdad es que no se me ha planteado esa circunstancia. No sé si algún colega lo habrá previsto.
__________________
Be water my friend. |
#3091
|
||||
|
||||
Un saludo.
Os pongo un ejemplo de emitidas con iva 21 y exento |
#3092
|
|||
|
|||
Las intracomunitarias también las mandas con este "formato" a nivel de <DesgloseFactura>?. Es que yo hasta ahora las estaba mandando con este formato:
Código:
<sii:TipoDesglose> <sii:DesgloseTipoOperacion> <sii:Entrega> <sii:Sujeta> <sii:Exenta> <sii:DetalleExenta> <sii:CausaExencion>E5</sii:CausaExencion> <sii:BaseImponible>241.38</sii:BaseImponible> </sii:DetalleExenta> </sii:Exenta> </sii:Sujeta> </sii:Entrega> </sii:DesgloseTipoOperacion> </sii:TipoDesglose> |
#3093
|
||||
|
||||
Claro las intracomunitarias van con desglose de operación. El ejemplo que he puesto era interior. Pongo un ejemplo de intracomunitaria.
Un Saludo |
#3094
|
|||
|
|||
Muchas gracias, me está sirviendo de mucho tu ayuda.
|
#3095
|
||||
|
||||
Hola el ejemplo anterior es de una factura intererior para un cliente extranjero. Una factura intracomunitaria de venta, lógicamente es exenta con causa de exencion E5.
Por si acaso. |
#3096
|
|||
|
|||
Cita:
Me ha surgido una duda. ¿Para un cliente cif español que se le vende mercancía con transporte marítimo internacional. El detalle de la exención tiene que ir en DesgloseFactura o en DesgloseTipoOperación?. Yo hasta ahora lo estaba mandando en DesgloseTipoOperación y con E2 como causa exención. Pero con los cambios que estaba empezando a hacer cara a contemplar las exenciones de los guantes y demás por el estado de alarma, todas las exenciones que fueran de un cif español las iba a meter en DesgloseFactura. Gracias por tu paciencia. |
#3097
|
||||
|
||||
Cita:
Segun la AEAT. "El desglose se hará obligatoriamente a nivel de operación cuando el cliente sea extranjero (tipo "ID Otro", salvo la clave 07, o NIF que empiece por N) y no sea una factura simplificada o un asiento resumen." Un saludo. |
#3098
|
|||
|
|||
Cita:
Hablando de Nif que empiece por N. ¿Tienes un ejemplo de XML de ese tipo?, porque me suena que algún cliente tienen de ese tipo. Muchas gracias. |
#3099
|
||||
|
||||
No tengo ningun cliente de ese tipo. Pero tiene que desglosar por tipo de operacion igual que las intracomunitarias.
|
#3100
|
|||
|
|||
En el 29 de este documento tratan preciosamente de lo que estamos hablando:
https://www.agenciatributaria.es/sta...tos_Censos.pdf |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
TICKET BAI (TicketBAI); Nuevo sistema de la Agencia Tributaria del Pais Vasco | keys | Internet | 4246 | Hace 23 Horas 11:17:09 |
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 |
|