Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   SII -Nuevo sistema de la Agencia Tributaria española de envío de datos vía Webservice (https://www.clubdelphi.com/foros/showthread.php?t=91252)

Galahad 29-05-2017 16:28:56

Cita:

Empezado por CMB (Mensaje 517309)
No tiene por qué dar error. En la gran mayoría de los casos, la cuota deducible es igual que la base imponible. Pero puede haber casos en que no. Si en una gran superficie te hacen una factura que incluye un pen drive y 1 kg de manzanas, por ejemplo, te podrás deducir el pen drive pero no la fruta.

Esta innovación supongo que será para el contraste, pues el total factura tiene que coincidir con lo que declare tu proveedor, independientemente de que te lo puedas deducir todo o sólo una parte.

Entiendo entonces que el concepto de 'cuota deducible' esta asociado entonces a la base imponible, no a las cuotas de iva. La confusión ha venido por esta 'excepción' para el tema de las facturas de 'Régimen Agrícola':

Cita:

.8. ¿Cómo se registran los recibos de las compensaciones agrícolas, forestales o pesqueras a que se refiere el art 16.1 del Reglamento de facturación?
El expedidor del recibo lo registrará en el Libro registro de Facturas Recibidas con tipo de factura "F6" y la clave de régimen especial o trascendencia “02”. Consignará como base imponible la base sobre la que se calcula la compensación y como Importe total de la factura el total de la contraprestación. Los campos “tipo impositivo” y “cuota soportada” se dejarán en blanco y se completarán los campos “porcentaje de compensación” e “importe compensación”; como cuota deducible se consignará el importe de la compensación.
Como podeis ver, aqui como cuota deduble se indica el importe de la compensación (que es el importe de iva que se autocalcula)

seccion_31 29-05-2017 16:32:44

cuotadeducible es opcional, ¿no?

newtron 29-05-2017 16:45:41

Cita:

Empezado por Galahad (Mensaje 517311)
Entiendo entonces que el concepto de 'cuota deducible' esta asociado entonces a la base imponible, no a las cuotas de iva. La confusión ha venido por esta 'excepción' para el tema de las facturas de 'Régimen Agrícola':



Como podeis ver, aqui como cuota deduble se indica el importe de la compensación (que es el importe de iva que se autocalcula)

A raiz de esta aclaración yo había entendido que la cuota deducible es el importe del iva, ahora ya no sé qué pensar. ¿Alguien lo tiene claro?

seccion_31 29-05-2017 16:55:14

Facturas Recibidas:
Se cambia a obligatoria la etiqueta de cuotaDeducible

Y es la suma de los importes de cada IVA que te puedes deducir.

newtron 29-05-2017 17:01:35

Cita:

Empezado por seccion_31 (Mensaje 517315)
Facturas Recibidas:
Se cambia a obligatoria la etiqueta de cuotaDeducible

Y es la suma de los importes de cada IVA que te puedes deducir.

Estupendo, gracias.

CMB 29-05-2017 17:29:15

Cita:

Empezado por seccion_31 (Mensaje 517315)
Facturas Recibidas:
Se cambia a obligatoria la etiqueta de cuotaDeducible
Y es la suma de los importes de cada IVA que te puedes deducir.

Concuerda con los ejemplos incluidos en la documentación. Pero parece muy extraño.

Según entiendo, es posible que una parte del IVA no se pueda deducir. Sin embargo, ¿la base imponible se puede deducir entera? Tanto para el modelo 130 de los autónomos como para el impuesto de sociedades. ¿En qué casos es eso aplicable?

Parece una incongruencia.

CMB 29-05-2017 17:41:37

Definición de cuota deducible
 
Habrá que buscar una descripción oficial fiable de lo que es la Cuota deducible.

He enviado cientos de facturas donde esa cuota deducible es igual a la base imponible, es decir, muy superior al importe del IVA, y en ningún caso han sido rechazadas. Si se refiriese a la parte de IVA que la empresa no se puede deducir, no deberían haberlas admitido.

¿Dispone alguien de más información sobre ese asunto?

Saludos,

Galahad 29-05-2017 19:01:42

Cuota deducible
 
Cita:

Empezado por CMB (Mensaje 517318)
Habrá que buscar una descripción oficial fiable de lo que es la Cuota deducible.

He enviado cientos de facturas donde esa cuota deducible es igual a la base imponible, es decir, muy superior al importe del IVA, y en ningún caso han sido rechazadas. Si se refiriese a la parte de IVA que la empresa no se puede deducir, no deberían haberlas admitido.

¿Dispone alguien de más información sobre ese asunto?

Saludos,

Un cliente nuestro que tiene una asesoria me comenta que es la suma de las cuotas de ivas, que le extraña que la aeat se 'trague' la base imponible en dicho campo, pero que normalmente, eso es un 'error grave' a la hora de preparar los modelos oficiales.

CMB 29-05-2017 20:40:30

Cita:

Empezado por Galahad (Mensaje 517320)
Un cliente nuestro que tiene una asesoria me comenta que es la suma de las cuotas de ivas, que le extraña que la aeat se 'trague' la base imponible en dicho campo, pero que normalmente, eso es un 'error grave' a la hora de preparar los modelos oficiales.

Nos conviene saberlo con total seguridad. Podría ser una metedura de pata fenomenal.

¿Alguien sabe de algún documento donde haya una descripción detallada del tag CuotaDeducible?

Saludos,

mike_GK 30-05-2017 08:10:04

Cita:

Empezado por Galahad (Mensaje 517320)
Un cliente nuestro que tiene una asesoria me comenta que es la suma de las cuotas de ivas, que le extraña que la aeat se 'trague' la base imponible en dicho campo, pero que normalmente, eso es un 'error grave' a la hora de preparar los modelos oficiales.


Es como dices, la cuota deducible es la suma de las cuotas de IVA

Se supone que por un lado tenemos la Base imponible que es el total de la factura sin Iva, a esto le sumas la cuota y deberia salir el total de importe o factura


Por lo que tengo entendido al presentarla al AEAT la cuota deducible debe de coincidir con la suma de cuota de Iva, o daria error grave tambien

keys 30-05-2017 08:29:22

Cita:

Empezado por CMB (Mensaje 517309)
No tiene por qué dar error. En la gran mayoría de los casos, la cuota deducible es igual que la base imponible. Pero puede haber casos en que no. Si en una gran superficie te hacen una factura que incluye un pen drive y 1 kg de manzanas, por ejemplo, te podrás deducir el pen drive pero no la fruta.

Esta innovación supongo que será para el contraste, pues el total factura tiene que coincidir con lo que declare tu proveedor, independientemente de que te lo puedas deducir todo o sólo una parte.

Hola a todos, en mi modesta opinión creo que estáis equivocados, la cuota deducible NO ES LA BASE IMPONIBLE. Sino la cuota de IVA de la factura en caso de que sea deducible. Por ejemplo en una factura de 121 euros con un 21% de IVA será

Base := 100;
Cuota := 25;
Total Factura := 125.

El importe de la cuota deducible dependerá de muchas cosas, como la naturaleza de la operación o el tipo de empresa. Por ejemplo hay tipos de empresas que están exentas de IVA y la cuota deducible es siempre 0. Las bases imponibles ya están en el detalle de las facturas y las cuotas también pero no la parte deducible o no de la factura.

La cuota deducible es la cantidad que luego te vas a dedudicir en hacienda en el 303 y es creo el dato que más le puede importar a hacienda, ya que es función de ella y de la soportada te van a calcular el dinero que tienes que pagar o te tienen que devolver.

Un Saludo.

Galahad 30-05-2017 08:47:52

Cita:

Empezado por keys (Mensaje 517336)
Hola a todos, en mi modesta opinión creo que estáis equivocados, la cuota deducible NO ES LA BASE IMPONIBLE. Sino la cuota de IVA de la factura en caso de que sea deducible. Por ejemplo en una factura de 121 euros con un 21% de IVA será

Base := 100;
Cuota := 25;
Total Factura := 125.

El importe de la cuota deducible dependerá de muchas cosas, como la naturaleza de la operación o el tipo de empresa. Por ejemplo hay tipos de empresas que están exentas de IVA y la cuota deducible es siempre 0. Las bases imponibles ya están en el detalle de las facturas y las cuotas también pero no la parte deducible o no de la factura.

La cuota deducible es la cantidad que luego te vas a dedudicir en hacienda en el 303 y es creo el dato que más le puede importar a hacienda, ya que es función de ella y de la soportada te van a calcular el dinero que tienes que pagar o te tienen que devolver.

Un Saludo.

Estoy totalmente de acuerdo, lo que no entiendo es como dice un compañero en un post un poc más arriba , es como la aeat no devuelve esas facturas como erróneas, en el registro enviamos la base imponible y el total factura, se supone que podría comprobar que la cuota deducible no es correcta,¿ no ?

keys 30-05-2017 08:50:46

Cita:

Empezado por Galahad (Mensaje 517337)
Estoy totalmente de acuerdo, lo que no entiendo es como dice un compañero en un post un poc más arriba , es como la aeat no devuelve esas facturas como erróneas, en el registro enviamos la base imponible y el total factura, se supone que podría comprobar que la cuota deducible no es correcta,¿ no ?

Por lo menos deberían comprobar que la cuota deducible no sea mayor que la suma de las cuotas. Pero hay una serie de campos que no se validan y me imagino que en un futuro lo irán haciendo, como puede ser el total de la factura.

CMB 30-05-2017 09:28:25

Sobre la "Cuota deducible"
 
Cita:

Empezado por keys (Mensaje 517336)
El importe de la cuota deducible dependerá de muchas cosas, como la naturaleza de la operación o el tipo de empresa. Por ejemplo hay tipos de empresas que están exentas de IVA y la cuota deducible es siempre 0. Las bases imponibles ya están en el detalle de las facturas y las cuotas también pero no la parte deducible o no de la factura.

La cuota deducible es la cantidad que luego te vas a dedudicir en hacienda en el 303 y es creo el dato que más le puede importar a hacienda, ya que es función de ella y de la soportada te van a calcular el dinero que tienes que pagar o te tienen que devolver.

Hola keys

De acuerdo, estaba equivocado y lo interpreté mal. Y pido disculpas a todos por el lío. De todos modos hay algo ahí que no me cuadra.

El SII (de momento) se aplicará a grandes empresas. En el futuro a todas. Existen varios millones de autónomos que presentan el modelo 130 (IRPF), que tiene que ser conforme con sus Libros de Registro de Facturas emitidas y recibidas. Esos autónomos, que al final en número van a ser la gran mayoría de los usuarios del SII, se van a encontrar con una discordancia.

Habrá casos en que, cuando no se puedan deducir todo el IVA por el tipo de bienes o servicios incluidos en la factura, tampoco se podrán deducir la parte correspondiente de la base imponible. Entonces se encontrarán que en su particular libro de facturas, para el cálculo del IRPF en el modelo 130, deberá haber algunas bases imponibles distintas de las declaradas en el SII. ¿Y cómo resolvemos eso? Programáticamente, quiero decir.

En el SII, al objeto de que funcione correctamente el contraste con la factura de la contraparte, habrá que poner la base imponible íntegra, aunque no toda ella sea deducible. Pero el autónomo, en su libro de facturas, deberá poner solamente la base imponible (y el IVA) que se pueda deducir.

(Es muy simple aunque un poco complicado de explicar.)

¿Se le ocurre a alguien cómo se deberá programar en esos casos?

keys 30-05-2017 09:36:01

Creo que eso lo deberán resolver ellos y decirnos como hacerlo. Ahora el sii es para iva y no tiene nada que ver con el IRPF.

CMB 30-05-2017 09:54:01

Cita:

Empezado por keys (Mensaje 517341)
Creo que eso lo deberán resolver ellos y decirnos como hacerlo. Ahora el sii es para iva y no tiene nada que ver con el IRPF.

De acuerdo, pero insisto que el IRPF de los autónomos se calcula directamente a partir de los libros de registro. Y eso implica IRPF mal calculado. Lo que conlleva sanciones. Y aunque en la primera fase no van a estar en el SII, en la segunda sí lo estarán. Y son millones.

kaly999 30-05-2017 09:59:55

XML Baja Factura
 
1 Archivos Adjunto(s)
Buenos días, Me presento Soy Luis Miguel y soy nuevo en este foro.
Gracias a vosotros he conseguido generar y enviar correctamente el XML de Alta de Factura Emitida. Ahora estoy intentando generar el XML de Baja de factura, pero me da el siguiente error: No se esperaba <BajaLRFacturasEmitidas xmlns='https://www2.agenciatribu.....
Adjunto los XML de alta(que funciona) y modificación para ver si me podéis decir que estoy haciendo mal.

Gracias.

vboloradito 30-05-2017 10:21:20

Cita:

Empezado por kaly999 (Mensaje 517344)
Buenos días, Me presento Soy Luis Miguel y soy nuevo en este foro.
Gracias a vosotros he conseguido generar y enviar correctamente el XML de Alta de Factura Emitida. Ahora estoy intentando generar el XML de Baja de factura, pero me da el siguiente error: No se esperaba <BajaLRFacturasEmitidas xmlns='https://www2.agenciatribu.....
Adjunto los XML de alta(que funciona) y modificación para ver si me podéis decir que estoy haciendo mal.

Gracias.

has probado a lanzarlo contra la web de la AEAT a mano. Porque parece que estan bien .
Si les añade la parte de SOAP al xml que has adjutnado no da problemas contra la web

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
<soapenv:Header />
<soapenv:Body>

...

</soapenv:Body>
</soapenv:Envelope>

kaly999 30-05-2017 11:13:59

Cita:

Empezado por vboloradito (Mensaje 517346)
has probado a lanzarlo contra la web de la AEAT a mano. Porque parece que estan bien .
Si les añade la parte de SOAP al xml que has adjutnado no da problemas contra la web

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="*://schemas.xmlsoap.org/soap/envelope/" xmlns:siiLR="*://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroLR.xsd" xmlns:sii="*://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroInformacion.xsd">
<soapenv:Header />
<soapenv:Body>

...

</soapenv:Body>
</soapenv:Envelope>

Gracias por la rápida respuesta. Resulta que el xml estaba bien y lo que estaba mal era la función que utilizaba para enviarlo. Tenia que usar Ws.AnulacionLRFacturasEmitidas() en vez de Ws.SuministroLRFacturasEmitidas().
Ahora voy a ver si consigo la consulta de facturas emitidas.

Muchas gracias :)

shiximaru 30-05-2017 11:18:41

Hola Soy nuevo por aqui aunque os leo desde hace tiempo. No trabajo en delphi pero si me interesa las experiencias que por aqui se comparten.

Alguien ha intentado enviar facturas de prueba como emisor y como receptor para ver que hace la AEAT con los contrastes?
Estoy intentandolo yo y obtengo alguna cosa extraña, hay facturas que directamente me las tira como no contrastadas una hora despues de haberlas enviado como emisor. No se cuanto tienen puesto para que este temporalmente en proceso de contraste... pero una hora se me antoja plazo muy corto...

vboloradito 30-05-2017 11:59:46

Cita:

Empezado por keys (Mensaje 517338)
Por lo menos deberían comprobar que la cuota deducible no sea mayor que la suma de las cuotas. Pero hay una serie de campos que no se validan y me imagino que en un futuro lo irán haciendo, como puede ser el total de la factura.


4.7. ¿Es obligatorio suministrar la información de la cuota deducible?
Sí. En el caso de que aplique prorrata deberá consignar la cuota deducible en función del porcentaje de deducción provisional.

¿esto no aplica solo a las empresas acogidas a prorrata?

keys 30-05-2017 12:02:22

Cita:

Empezado por vboloradito (Mensaje 517351)
4.7. ¿Es obligatorio suministrar la información de la cuota deducible?
Sí. En el caso de que aplique prorrata deberá consignar la cuota deducible en función del porcentaje de deducción provisional.

¿esto no aplica solo a las empresas acogidas a prorrata?

Segun como lo interpretes. Detras del Si hay un punto. Es decir yo entiendo que hay que ponerla siempre, y en el caso de las empresas con prorrata hay que poner la cuota deducible en funcion del porcentaje provisional.

CMB 30-05-2017 12:24:49

Cita:

Empezado por keys (Mensaje 517352)
Segun como lo interpretes. Detras del Si hay un punto. Es decir yo entiendo que hay que ponerla siempre, y en el caso de las empresas con prorrata hay que poner la cuota deducible en funcion del porcentaje provisional.

Ahora mismo he enviado una factura recibida normal y corriente, pero SIN incluir la cuota deducible, y me contestan

Codigo[4102].El XML no cumple el esquema. Falta informar campo obligatorio.: CuotaDeducible

joefrommalaka 30-05-2017 17:45:07

Problema al enviar más de 20 facturas a la vez
 
Buenas tardes,

Estoy con un problema que no consigo encontrar la solución, a ver si alguien pudiese echarme una mano.
Cuando envío más de 20 facturas emitidas (me pasa lo mismo con las recibidas) recibo el siguiente error:

Se requiere un certificado para completar la autenticación de cliente - URL:https://www7.aeat.es/wlpl/SSII-FACT/...iiFactFEV1SOAP - SOAPAction:""

Si esas mismas facturas las envío en dos veces, me las envía sin problema.


Para realizar el envío, genero el xml con delphi 7 y realizo el envío mediante una dll que he creado con Delphi XE7.


El código mediante el cual hago el envío es el siguiente:


Código:

type
  TComunicacionSW = class(TObject)
    private
      FArchivoEnvio: String;
      FArchivoRespuesta: String;
      FHTTPRIO: THTTPRIO;
      procedure HTTPRIOBeforeExecute(const MethodName: string; SOAPRequest: TStream);
      procedure HTTPRIOAfterExecute(const MethodName: string; SOAPResponse: TStream);
    public
      Constructor Create;
      Destructor Destroy;
  end;


procedure TComunicacionSW.HTTPRIOBeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
  v_fileStream: TFileStream;
begin
  SOAPRequest.Size := 0;
  v_fileStream := TFileStream.Create(FArchivoEnvio, fmOpenRead);
  SOAPRequest.Position := 0;
  SOAPRequest.CopyFrom(v_fileStream, v_fileStream.Size);
  v_fileStream.Free;
  SOAPRequest.Position := 0;
end;

procedure TComunicacionSW.HTTPRIOAfterExecute(const MethodName: string; SOAPResponse: TStream);
var
  v_fileStream: TFileStream;
begin
  if FileExists(FArchivoRespuesta) then
    DeleteFile(FArchivoRespuesta);
  v_fileStream := TFileStream.Create(FArchivoRespuesta, fmCreate);
  SOAPResponse.Position := 0;
  v_fileStream.CopyFrom(SOAPResponse, SOAPResponse.size);
  v_fileStream.Free;
  SOAPResponse.Position := 0;
end;

function ObtenerNumeroSerieCertificado(p_nombreCertificado: String): string;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  v_nombre: String;
begin
  Result := '';
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then
  begin
    PrevContext := nil;
    CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
    while CurContext <> nil do begin
      v_nombre := '';
      cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
      if cbSize > 0 then
      begin
        SetLength(v_nombre, cbSize-1);
        CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(v_nombre), cbSize);
        if SameText(p_nombreCertificado, v_nombre) then
        begin
          result := GetCertSerialNumber(@CurContext^.pCertInfo^.SerialNumber);
          break;
        end;
      end;
      PrevContext := CurContext;
      CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
    end;
  end;
end;

function EnviarFacturasEmitidas(p_nombreCertificado, p_archivoEnvio, p_archivoRespuesta: ShortString): PChar;stdcall;export;
var
  v_suministroLRFacturasEmitidas: SuministroFactEmitidas.SuministroLRFacturasEmitidas;
  v_respuestaLRFacturasEmitidas: SuministroFactEmitidas.RespuestaLRFacturasEmitidas;
  v_siiSOAP: SuministroFactEmitidas.siiSOAP;
  v_serialNum: String;
  v_error: string;
  v_comunicacionSW: TComunicacionSW;
begin
  v_error := '';

  v_serialNum := ObtenerNumeroSerieCertificado(p_nombreCertificado);
 
  v_comunicacionSW := TComunicacionSW.Create;
  v_suministroLRFacturasEmitidas := SuministroFactEmitidas.SuministroLRFacturasEmitidas.Create;
  v_respuestaLRFacturasEmitidas := SuministroFactEmitidas.RespuestaLRFacturasEmitidas.Create;
  try
    try
      v_comunicacionSW.FArchivoEnvio := p_archivoEnvio;
      v_comunicacionSW.FArchivoRespuesta := p_archivoRespuesta;
      v_comunicacionSW.FHTTPRIO.HTTPWebNode.ClientCertificate.SerialNum := v_serialNum;

      //Se realiza la llamada sin datos y en el evento HTTPRIOBeforeExecute se establece el xml con los datos generados anteriormente
      v_siiSOAP := SuministroFactEmitidas.GetsiiSOAP(true,'',v_comunicacionSW.FHTTPRIO);
      v_respuestaLRFacturasEmitidas := v_siiSOAP.SuministroLRFacturasEmitidas(v_suministroLRFacturasEmitidas);
    except
      on e:Exception do
        v_error := 'Error DLL: Error en la comunicación con el servicio web.' + e.Message;
    end;
  finally
    v_suministroLRFacturasEmitidas.Free;
    v_respuestaLRFacturasEmitidas.Free;
  end;

  result := StringToPChar(v_error);
end;



El archivo SuministroFactEmitidas lo he generado automáticamente con WSDL Importer de delphi y le he modificado lo siguiente (defURL realmente no lo utilizo):

const
defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl';
defURL = 'https://www7.aeat.es/wlpl/SSII-FACT/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';
defSvc = 'siiService';
defPrt = 'SuministroFactEmitidasPruebas';


¿Se le ocurre a alguien que es lo que estoy haciendo mal?

Un saludo

joefrommalaka 30-05-2017 17:51:14

Por cierto si envío el archivo xml mediante la web https://www7.aeat.es/static_files/co...teWSAEAT2.html se envía correctamente.

mrobles 30-05-2017 17:57:21

Cita:

Empezado por joefrommalaka (Mensaje 517366)
Buenas tardes,

Estoy con un problema que no consigo encontrar la solución, a ver si alguien pudiese echarme una mano.
Cuando envío más de 20 facturas emitidas (me pasa lo mismo con las recibidas) recibo el siguiente error:

Se requiere un certificado para completar la autenticación de cliente - URL:https://www7.aeat.es/wlpl/SSII-FACT/...iiFactFEV1SOAP - SOAPAction:""

Si esas mismas facturas las envío en dos veces, me las envía sin problema.


Para realizar el envío, genero el xml con delphi 7 y realizo el envío mediante una dll que he creado con Delphi XE7.


El código mediante el cual hago el envío es el siguiente:


Código:

type
  TComunicacionSW = class(TObject)
    private
      FArchivoEnvio: String;
      FArchivoRespuesta: String;
      FHTTPRIO: THTTPRIO;
      procedure HTTPRIOBeforeExecute(const MethodName: string; SOAPRequest: TStream);
      procedure HTTPRIOAfterExecute(const MethodName: string; SOAPResponse: TStream);
    public
      Constructor Create;
      Destructor Destroy;
  end;


procedure TComunicacionSW.HTTPRIOBeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
  v_fileStream: TFileStream;
begin
  SOAPRequest.Size := 0;
  v_fileStream := TFileStream.Create(FArchivoEnvio, fmOpenRead);
  SOAPRequest.Position := 0;
  SOAPRequest.CopyFrom(v_fileStream, v_fileStream.Size);
  v_fileStream.Free;
  SOAPRequest.Position := 0;
end;

procedure TComunicacionSW.HTTPRIOAfterExecute(const MethodName: string; SOAPResponse: TStream);
var
  v_fileStream: TFileStream;
begin
  if FileExists(FArchivoRespuesta) then
    DeleteFile(FArchivoRespuesta);
  v_fileStream := TFileStream.Create(FArchivoRespuesta, fmCreate);
  SOAPResponse.Position := 0;
  v_fileStream.CopyFrom(SOAPResponse, SOAPResponse.size);
  v_fileStream.Free;
  SOAPResponse.Position := 0;
end;

function ObtenerNumeroSerieCertificado(p_nombreCertificado: String): string;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  v_nombre: String;
begin
  Result := '';
  hStore := CertOpenSystemStore(0, PChar('MY'));
  if hStore <> nil then
  begin
    PrevContext := nil;
    CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
    while CurContext <> nil do begin
      v_nombre := '';
      cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, nil, 0);
      if cbSize > 0 then
      begin
        SetLength(v_nombre, cbSize-1);
        CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil, PChar(v_nombre), cbSize);
        if SameText(p_nombreCertificado, v_nombre) then
        begin
          result := GetCertSerialNumber(@CurContext^.pCertInfo^.SerialNumber);
          break;
        end;
      end;
      PrevContext := CurContext;
      CurContext  := CertEnumCertificatesInStore(hStore, PrevContext);
    end;
  end;
end;

function EnviarFacturasEmitidas(p_nombreCertificado, p_archivoEnvio, p_archivoRespuesta: ShortString): PChar;stdcall;export;
var
  v_suministroLRFacturasEmitidas: SuministroFactEmitidas.SuministroLRFacturasEmitidas;
  v_respuestaLRFacturasEmitidas: SuministroFactEmitidas.RespuestaLRFacturasEmitidas;
  v_siiSOAP: SuministroFactEmitidas.siiSOAP;
  v_serialNum: String;
  v_error: string;
  v_comunicacionSW: TComunicacionSW;
begin
  v_error := '';

  v_serialNum := ObtenerNumeroSerieCertificado(p_nombreCertificado);
 
  v_comunicacionSW := TComunicacionSW.Create;
  v_suministroLRFacturasEmitidas := SuministroFactEmitidas.SuministroLRFacturasEmitidas.Create;
  v_respuestaLRFacturasEmitidas := SuministroFactEmitidas.RespuestaLRFacturasEmitidas.Create;
  try
    try
      v_comunicacionSW.FArchivoEnvio := p_archivoEnvio;
      v_comunicacionSW.FArchivoRespuesta := p_archivoRespuesta;
      v_comunicacionSW.FHTTPRIO.HTTPWebNode.ClientCertificate.SerialNum := v_serialNum;

      //Se realiza la llamada sin datos y en el evento HTTPRIOBeforeExecute se establece el xml con los datos generados anteriormente
      v_siiSOAP := SuministroFactEmitidas.GetsiiSOAP(true,'',v_comunicacionSW.FHTTPRIO);
      v_respuestaLRFacturasEmitidas := v_siiSOAP.SuministroLRFacturasEmitidas(v_suministroLRFacturasEmitidas);
    except
      on e:Exception do
        v_error := 'Error DLL: Error en la comunicación con el servicio web.' + e.Message;
    end;
  finally
    v_suministroLRFacturasEmitidas.Free;
    v_respuestaLRFacturasEmitidas.Free;
  end;

  result := StringToPChar(v_error);
end;



El archivo SuministroFactEmitidas lo he generado automáticamente con WSDL Importer de delphi y le he modificado lo siguiente (defURL realmente no lo utilizo):

const
defWSDL = 'https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/ssii/fact/ws/SuministroFactEmitidas.wsdl';
defURL = 'https://www7.aeat.es/wlpl/SSII-FACT/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';
defSvc = 'siiService';
defPrt = 'SuministroFactEmitidasPruebas';


¿Se le ocurre a alguien que es lo que estoy haciendo mal?

Un saludo

Ahora mismo andan un poco pasando de la comprobación de certificados, pero creo que a partir de 10 si que falla si no es un certificado valido (o mal insertado).
Yo ando en PHP y logro mandar bloques de 100 sin problema alguno

AlSan 30-05-2017 18:02:01

El NIF de la contraparte no está censado
 
Cita:

Empezado por austral_es (Mensaje 516961)
Buenas, que NIF utilizaste porque no consigo poner ningún NIF que me de esa respuesta de la AEAT.
Se cuales son los pasos a seguir una vez la AEAT te envía la respuesta "El NIF de la contraparte no está censado" lo que no doy hecho es tener ningún NIF con el que me responda con dicho error.
Gracias!

Cita:

Empezado por Txemari (Mensaje 516951)
Hola,

acabo de montarme un ficherito con el "07" de "NO censado" y al enviarlo a la AEAT me lo ha devuelto como "Aceptado con errores" y descripción error "El NIF de la contraparte no está censado".
Ahora, ¿ qué tendría que hacer ? ¿ Enviarlo todos los días con el TipoComunicación "A1" de modificación hasta que censen el NIF ?

Saludos


Hola, saludos a todos, es mi primera intervención, enhorabuena y gracias porque he encontrado (y sigo haciéndolo) mucha ayuda en este foro.

Yo repito la misma pregunta de Txemari porque, a diferencia de austral_es, no tengo nada claro el procedimiento a seguir en este caso.

He enviado un alta de factura con un NIF real de contraparte y en primera instancia me devuelve el error 1117:
Error en el bloque de la Contraparte. El NIF no está identificado. NIF:42******R. NOMBRE_RAZON:detal, Fulanito

Después la reenvío como modificación ("A1" en vez de "A0") usando los campos:
<sii:Contraparte>
<sii:NombreRazon>detal, Fulanito</sii:NombreRazon>
<sii:IDOtro>
<sii:CodigoPais>ES</sii:CodigoPais>
<sii:IDType>07</sii:IDType>
<sii:ID>42******R</sii:ID>
</sii:IDOtro>
</sii:Contraparte>
y entonces recibo el error 2011:
El NIF de la contraparte no está censado

A partir de este punto, ¿qué hacemos?

(P.D. - Obviamente para postear he ocultado el NIF real y su nombre real)


PASPAS 30-05-2017 18:04:26

Direcciones WDSL producción
 
Pregunta a la AEAT:
Tengo 2 cuestiones técnicas:
1.- Nos pueden suministrar las direcciones de los endpoint en producción para
que sean incorporadas en nuestro software antes de la puesta en marcha para que
no sea todo a última hora. Tienen pensado publicarlo pronto aunque no se pueda
utilizar hasta el 1 de Julio.
2.-Cuando exista un cambio de versión. Entre versión anterior y la que se
publique existirá un tiempo para poder utilizar la anterior hasta que cada
desarrollador de software adecue su programa para la nueva versión. Me refiero
si entre versión y versión existirá un plazo por ejemplo de 30 días para
cambiarlo o será de hoy para mañana.

-------------------
Respuesta de la AEAT:

1. Todavía no están disponibles.
2. Hay un periodo de adaptación entre versiones.

-------------------

Saludos a todos.

mrobles 30-05-2017 18:05:10

Cita:

Empezado por AlSan (Mensaje 517372)
Hola, saludos a todos, es mi primera intervención, enhorabuena y gracias porque he encontrado (y sigo haciéndolo) mucha ayuda en este foro.

Yo repito la misma pregunta de Txemari porque, a diferencia de austral_es, no tengo nada claro el procedimiento a seguir en este caso.

He enviado un alta de factura con un NIF real de contraparte y en primera instancia me devuelve el error 1117:
Error en el bloque de la Contraparte. El NIF no está identificado. NIF:42******R. NOMBRE_RAZON:detal, Fulanito

Después la reenvío como modificación ("A1" en vez de "A0") usando los campos:
<sii:Contraparte>
<sii:NombreRazon>detal, Fulanito</sii:NombreRazon>
<sii:IDOtro>
<sii:CodigoPais>ES</sii:CodigoPais>
<sii:IDType>07</sii:IDType>
<sii:ID>42******R</sii:ID>
</sii:IDOtro>
</sii:Contraparte>
y entonces recibo el error 2011:
El NIF de la contraparte no está censado

A partir de este punto, ¿qué hacemos?

(P.D. - Obviamente para postear he ocultado el NIF real y su nombre real)

No vale "Apellido, Nombre" tiene que ser "Nombre Apellido"

newtron 30-05-2017 18:06:00

Cita:

Empezado por AlSan (Mensaje 517372)
y entonces recibo el error 2011:
El NIF de la contraparte no está censado

A partir de este punto, ¿qué hacemos?

(P.D. - Obviamente para postear he ocultado el NIF real y su nombre real)

Pues lo primero tendrías que comprobar que el nif y el nombre son correctos y, en su caso, corregirlo. Si no tienes esa posibilidad puedes enviar el NIF como NIF no censado. Ya se ha hablado por aquí de ese tema.

Saludos

joefrommalaka 30-05-2017 18:06:16

Cita:

Empezado por mrobles (Mensaje 517369)
Ahora mismo andan un poco pasando de la comprobación de certificados, pero creo que a partir de 10 si que falla si no es un certificado valido (o mal insertado).
Yo ando en PHP y logro mandar bloques de 100 sin problema alguno

Muchas gracias por tú rápida respuesta. Para realizar el envío estoy utilizando un certificado válido, es el que ha estado utilizando mi cliente hasta ahora para todas sus operaciones con AEAT. Y la cosa es que enviando el archivo manualmente (desde la url https://www7.aeat.es/static_files/co...teWSAEAT2.html) si que se envía, pero utilizando el servicio wsdl no lo consigo.

PASPAS 30-05-2017 18:09:27

Aumento días plazo
 
Pregunta AEAT
En el supuesto caso: suele pasar en ocasiones una empresa envía en el último día de plazo la factura emitida o recibida.
Resulta en entonces que se me da el caso de:
1.- No existe conexión a internet en la empresa actualmente, debido causas tales como. Corte de suministro, corte por mantenimiento, etc… Qué debe hacer la empresa en estos casos.
2.- No está disponible la página de la AEAT. Mostrando el error de "Error 403", "Error de conexión SSL", "No se puede mostrar la página" o "Conexión segura fallida”
3.- El error se debe a que la página de un faultcode de tipo env:SERVER. Causado por el servidor de la AEAT. Por ejemplo: Código[102].Conexión a Oracle no disponible.
4.- Error debido a que esta en tramite la renovación del certificado y no deja la posibilidad de cambiar el actual ya que aún no se posee.
5.- Existe una Factura enviada pero con errores y no los pueden corregir por desconocimiento. Esta 100% obligado la empresa a corregir dichos errores.
Nos pueden indicar si estos casos van a generar una multa posterior. ¿Cómo se va a actuar en cada caso?
Necesitamos aclararlo ya que los clientes nos hacen muchas preguntas.
Necesito saber también en caso de multa cual sería su cuantía.
--------------------------------
Respuesta AEAT
Buenos días.

El artículo 7.3 de la Orden HFP/417/2017, de 12 de mayo señala lo siguiente en relación con los supuestos en que por imposibilidades técnicas no se haya remitido la información en los plazos previstos reglamentariamente:
3. En aquellos supuestos en que por razones de carácter técnico no fuera posible efectuar el suministro por Internet en el plazo establecido reglamentariamente para cada registro de facturación, o cuando este suministro no pudiera completarse porque no fuera posible realizar la consulta de los registros de facturación previamente suministrados, dicho suministro podrá efectuarse durante los cuatro días naturales siguientes al de finalización de dicho plazo.
Por su parte, el régimen de infracciones y sanciones previsto se encuentra regulado en el artículo 200 de la Ley 58/2003, de 17 de diciembre, General Tributaria.

En cualquier caso, de conformidad con lo establecido en el artículo 87 de la Ley 58/2003, de 17 de diciembre, General Tributaria (Boletín Oficial del Estado del día 18), esta contestación tiene el carácter de mera información de los criterios administrativos existentes para la aplicación de la normativa tributaria. Si desea plantear una consulta tributaria escrita respecto al régimen, clasificación o calificación tributaria que le corresponda, debe dirigirse, según lo establecido en los artículos 88 y 89 de la Ley General Tributaria, a la DGT como órgano competente para la elaboración de contestaciones vinculantes.
----------------


Saludos a todos

javipes 30-05-2017 18:14:44

buff! tengo un lío tremendo... si he conseguido generar el suministro de facturas emitidas, siguiendo lo que he visto en el hilo,
¿como puedo ver el contenido del xml ANTES de llamar a GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASumLRFacturasEmitidas); ?

seguro que es muy sencillo

AlSan 30-05-2017 18:23:03

Cita:

Empezado por mrobles (Mensaje 517374)
No vale "Apellido, Nombre" tiene que ser "Nombre Apellido"

Gracias, pero no me cuadra lo que dices, tengo ya subidas unas cuantas facturas en las que el nombre siempre consta como "Apellidos, Nombre" y todas han sido aceptadas como correctas por la AEAT...

Cita:

Empezado por newtron (Mensaje 517375)
Pues lo primero tendrías que comprobar que el nif y el nombre son correctos y, en su caso, corregirlo. Si no tienes esa posibilidad puedes enviar el NIF como NIF no censado. Ya se ha hablado por aquí de ese tema.

Saludos

Gracias newtron, pero ya lo envío como no censado en mi segundo intento, ver las líneas que he copiado del XML. Es decir estoy haciendo lo que la AEAT dice que se ha de hacer para NIFs no censados. Pero a partir de aquí ya no sé qué más podemos hacer.

Una cuestión, tal vez es importante: AEAT diferencia entre "NIF no identificado" (error 1117) y "NIF no censado" (error 2011). Ignoro en qué consiste esta diferencia en la práctica.

¿Alguien más tiene esta misma duda?

newtron 30-05-2017 18:32:06

Cita:

Empezado por AlSan (Mensaje 517380)
Gracias, pero no me cuadra lo que dices, tengo ya subidas unas cuantas facturas en las que el nombre siempre consta como "Apellidos, Nombre" y todas han sido aceptadas como correctas por la AEAT...



Gracias newtron, pero ya lo envío como no censado en mi segundo intento, ver las líneas que he copiado del XML. Es decir estoy haciendo lo que la AEAT dice que se ha de hacer para NIFs no censados. Pero a partir de aquí ya no sé qué más podemos hacer.

Una cuestión, tal vez es importante: AEAT diferencia entre "NIF no identificado" (error 1117) y "NIF no censado" (error 2011). Ignoro en qué consiste esta diferencia en la práctica.

¿Alguien más tiene esta misma duda?

Efectivamente no me había dado cuenta de que lo estás enviando como "nif no censado". En teoría se tendría que "tragar" la factura con errores.

newtron 30-05-2017 18:35:00

Cita:

Empezado por javipes (Mensaje 517378)
buff! tengo un lío tremendo... si he conseguido generar el suministro de facturas emitidas, siguiendo lo que he visto en el hilo,
¿como puedo ver el contenido del xml ANTES de llamar a GetsiiSOAP(true,'',HTTPRIO1).SuministroLRFacturasEmitidas(ASumLRFacturasEmitidas); ?

seguro que es muy sencillo

Aunque esto está engordando demasiado y se hace complicado, revisa el hilo (de principio en adelante) y verás que esa pregunta ya está contestada aunque ahora mismo no recuerdo exactamente cómo era.

Saludos

paquimd 30-05-2017 18:37:37

Cita:

Empezado por RUBEN_SP (Mensaje 517107)
Muchas gracias a tí también. Me he reincorporado, por que al final hemos decidido implentarlo en lugar de subcontratarlo. Si no te importa ¿Cómo me puede descargar ese código?. No me sale adjunto

Muchas gracias de antemano y Saludos

Hola Rubén, por aquí ando yo también.

brincola 30-05-2017 18:53:13

Cita:

Empezado por AlSan (Mensaje 517380)
Gracias, pero no me cuadra lo que dices, tengo ya subidas unas cuantas facturas en las que el nombre siempre consta como "Apellidos, Nombre" y todas han sido aceptadas como correctas por la AEAT...



Gracias newtron, pero ya lo envío como no censado en mi segundo intento, ver las líneas que he copiado del XML. Es decir estoy haciendo lo que la AEAT dice que se ha de hacer para NIFs no censados. Pero a partir de aquí ya no sé qué más podemos hacer.

Una cuestión, tal vez es importante: AEAT diferencia entre "NIF no identificado" (error 1117) y "NIF no censado" (error 2011). Ignoro en qué consiste esta diferencia en la práctica.

¿Alguien más tiene esta misma duda?

Posiblement señale una diferencia entre estas dos situaciones:
1.- NIF que, aunque correcto formalmente, no se corresponda con el nombre del titular adjuntado (no identificado).
2.- NIF que, aunque formalmente correcto, no corresponda a ningún sujeto registrado por la administracion (NIF no censado).

mrobles 30-05-2017 18:57:22

Cita:

Empezado por AlSan (Mensaje 517380)
Gracias, pero no me cuadra lo que dices, tengo ya subidas unas cuantas facturas en las que el nombre siempre consta como "Apellidos, Nombre" y todas han sido aceptadas como correctas por la AEAT...

Yo pase una validacion de 40 que salian en unas 100 facturas y haciendo el cambio me rebajo de 40 fallos a 6

nuevo1234 30-05-2017 19:19:16

Cita:

Empezado por brincola (Mensaje 517384)
Posiblement señale una diferencia entre estas dos situaciones:
1.- NIF que, aunque correcto formalmente, no se corresponda con el nombre del titular adjuntado (no identificado).
2.- NIF que, aunque formalmente correcto, no corresponda a ningún sujeto registrado por la administracion (NIF no censado).

EFECTIVAMENTE:

1.- NIF que, aunque correcto formalmente, no se corresponda con el nombre del titular adjuntado (no identificado). RECHAZA LA FACTURA (OJO PUEDE RECHAZARLA POR ESTAR MAL EL NOMBRE Y BIEN EL NIF). Por eso importante poner: primer apellido segundo apellido y nombre sin signos de puntuación
2.- NIF que, aunque formalmente correcto, no corresponda a ningún sujeto registrado por la administracion (NIF no censado). LA ACEPTA CON ERRORES(IMPORTANTE DIFERENCIA:SE ACEPTA LA FACTURA PERO SE MARCA QUE SE HA ENVIADO POR NO CENSADO)


Por tanto:
Es muy importante informar el nombre en el siguiente orden: primer apellido segundo apellido y nombre sin signos de puntuación.
Porque puede no identificar los NIF por esta razón y rechazar el envio de esa factura


En cuanto al NO CENSADO.
Para los casos en que se haya rechazado una factura emitida, en un segundo reintento, porque la información de identificación del destinatario (NIF y nombre) no figure censada en la AEAT, la forma de proceder para enviar dicha factura se realizará a través del bloque IdOtro con los
siguientes contenidos:

Código país: ES
Clave ID: 07. No censado
Número Id: NIF no censado del receptor de la factura
Apellidos y nombre: Nombre del no censado receptor de la factura.

En este caso, la factura figurará como aceptada con errores. A través de esta vía, también se intentará su validación contra el censo, de manera que podría lograse su identificación, aunque la factura figurará como aceptada con errores. En cualquier caso un error de formato en el NIF supondrá un RECHAZO de la factura.


La franja horaria es GMT +2. Ahora son las 03:01:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi