![]() |
![]() |
| 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
|
||||
|
||||
|
Por favor, didou, pon la oferta en la sección de trabajo, así la verán más interesados.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
|||
|
|||
|
Cita:
|
|
#3
|
||||
|
||||
|
Hola a todos. Las haciendas forales en el SII estan validando que no pongas a Reino Unido como pais intracomunitario, hay que identificarlo como un tercer pais desde el 1 de enero.
Por si a alguno os dice un cliente que le da un error al enviar una factura al sii. En la AEAT el mismo registro pasa, de momento. https://www.agenciatributaria.es/AEA...e_bienes.shtml Un Saludo. |
|
#4
|
||||
|
||||
|
Cita:
Gracias por la info compañero. ![]()
__________________
Be water my friend. |
|
#5
|
|||
|
|||
|
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'; |
|
#6
|
||||
|
||||
|
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. |
|
#7
|
|||
|
|||
|
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! |
|
#8
|
|||
|
|||
|
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:
|
|
#9
|
||||
|
||||
|
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. |
![]() |
| 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 |
|