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)

Homine 23-06-2017 09:37:17

Cita:

Empezado por xamminf (Mensaje 518620)
CMB, figo21,

Gracias por responder.
Asi pues, por estar seguro.... ¿ las facturas de compra se envian por fecha de contabilizacion ? ¿ Verdad ?

A partir del 8º día todos los días serán el último día. Para las facturas emitidas el pistoletazo de salida es la fecha de emisión y para las recibidas la fecha de registro contable.

No es conveniente apurar los plazos de presentación pues, en el caso de ser rechazado el envío o aceptado parcialmente, los registros no procesados no constan como enviados y no dispones de margen para la rectificación y el reenvío, y más coincidiendo el inicio de puesta en marcha del sistema con el periodo vacacional donde muchas pequeñas y medias empresas acogidas al REDEME disponen de recursos de personal administrativo muy reducidos. A este respecto, la contabilización de las facturas recibidas puede realizarse al final de este periodo y enviarlas juntas, pero para las emitidas, si la empresa no detiene su producción y emite facturas diariamente, el envío será diario a partir del 8 día hábil.

En mi caso, la solución que he aportado es el desarrollo de un servicio donde el cliente puede configurar el plazo de envío: diario, cada 2 días, 3 días o el máximo legal (no contemplo la posibilidad de los 8 días) y la frecuencia de envío: de 60 a 1440 minutos (realizando consultas con esta frecuencia en busca de registros pendientes). Por otro lado, he desarrollado una consola donde el usuario puede configurar el anterior servicio, el nivel de registro de log de eventos y errores, correo electrónico para el envío de reportes... y la posibilidad de realizar consultas sobre los libros enviados a la AEAT, todo ello muy visual e intuitivo.

Lo bueno de un servido es que te aseguras su funcionamiento cada vez que el usuario inicia sesión en el equipo y, más interesante, si se trata de un servidor que está en el cuarto oscuro; funciona de modo desatendido, estableciendo una comunicación directa máquina a máquina y sin intervención del usuario y éste únicamente recibe información vía mail de las incidencias producidas.

CMB 23-06-2017 09:48:01

Cita:

Empezado por xamminf (Mensaje 518620)
CMB, figo21,
Gracias por responder.
Asi pues, por estar seguro.... ¿ las facturas de compra se envian por fecha de contabilizacion ? ¿ Verdad ?

Yo entiendo que las facturas recibidas tienen dos fechas. La de emisión de la factura que ya viene de origen, y la fecha de recepción, que es también la fecha en que se contabiliza. Cada fecha va en un tag distinto en el XML del SII. Ahora bien, existen unos límites en la diferencia entre una fecha y la otra. Desde luego no pueden ser 2 o 3 meses. Pero ahora no recuerdo cuáles son. Eso ya es cosa del usuario y no del programador. Si se distraen y dejan pasar varias semanas, es responsabilidad de ellos.

Saludos,

newtron 23-06-2017 09:55:33

Cita:

Empezado por CMB (Mensaje 518625)
Yo entiendo que las facturas recibidas tienen dos fechas. La de emisión de la factura que ya viene de origen, y la fecha de recepción, que es también la fecha en que se contabiliza. Cada fecha va en un tag distinto en el XML del SII. Ahora bien, existen unos límites en la diferencia entre una fecha y la otra. Desde luego no pueden ser 2 o 3 meses. Pero ahora no recuerdo cuáles son. Eso ya es cosa del usuario y no del programador. Si se distraen y dejan pasar varias semanas, es responsabilidad de ellos.

Saludos,

Si no me equivoco hay un plazo de 4 años para contabilizar facturas recibidas así que no hay problema en ese aspecto. Evidentemente la fecha de contabilización debe de ser la del día en que contabiliza y poner en la fecha de emisión la fecha de la factura.

Homine 23-06-2017 09:57:18

Cita:

Empezado por CMB (Mensaje 518625)
Yo entiendo que las facturas recibidas tienen dos fechas. La de emisión de la factura que ya viene de origen, y la fecha de recepción, que es también la fecha en que se contabiliza. Cada fecha va en un tag distinto en el XML del SII. Ahora bien, existen unos límites en la diferencia entre una fecha y la otra. Desde luego no pueden ser 2 o 3 meses. Pero ahora no recuerdo cuáles son. Eso ya es cosa del usuario y no del programador. Si se distraen y dejan pasar varias semanas, es responsabilidad de ellos.

Saludos,

Perdona que matice, pero, la fecha de recepción no tiene porqué coincidir con la de contabilización.

Según la documentación de la AEAT:


B) Facturas Recibidas

En un plazo de cuatro días naturales desde la fecha en que se produzca el
registro contable de la factura y, en todo caso, antes del día 16 del mes siguiente
al periodo de liquidación en que se hayan incluido las operaciones correspondientes
(período en que se deduce el IVA soportado).

Se entiende que el registro contable de la factura se produce en la fecha de
entrada en el sistema contable con independencia de la fecha reflejada en el
asiento contable.


Ejemplo 5: un empresario que recibe una factura el 9 de agosto de 2017 procede a
su registro contable con fecha de entrada en el sistema el 13 de octubre. El plazo
para remitir el registro de esta factura a través del SII finaliza:

a) El 16* de octubre si deduce la factura en el modelo 303 de septiembre (opera la
fecha límite).

b) el 25 de octubre si deduce la factura en el modelo 303 de octubre.

figo21 23-06-2017 10:04:34

Cita:

Empezado por xamminf (Mensaje 518620)
CMB, figo21,

Gracias por responder.
Asi pues, por estar seguro.... ¿ las facturas de compra se envian por fecha de contabilizacion ? ¿ Verdad ?

B) Facturas Recibidas
En un plazo de cuatro días naturales desde la fecha en que se produzca el registro contable de la factura y, en todo caso, antes del día 16 del mes siguiente al periodo de liquidación en que se hayan incluido las operaciones correspondientes (período en que se deduce el IVA soportado).
Se entiende que el registro contable de la factura se produce en la fecha de entrada en el sistema contable con independencia de la fecha reflejada en el asiento contable.

En el punto 1.12. ¿Cuándo hay que enviar los registros de facturación a la AEAT? del FAQ hay varios ejemplos.

Un saludo.

Homine 23-06-2017 10:14:23

Cita:

Empezado por newtron (Mensaje 518626)
Si no me equivoco hay un plazo de 4 años para contabilizar facturas recibidas así que no hay problema en ese aspecto. Evidentemente la fecha de contabilización debe de ser la del día en que contabiliza y poner en la fecha de emisión la fecha de la factura.

El inconveniente de enviarlas cada 4 años es que vas a tardar el mismo tiempo en poder deducírtelas.

Aparentemente el SII parece un sustituto del 340, pero nos comentan desde Inspección que se aplicará el régimen sancionador del IVA en el caso de deducción de una factura en un periodo en la que la correspondiente factura no ha sido comunicada por el SII dentro del mismo.

RafaSerMed 23-06-2017 10:36:18

Cita:

Empezado por Homine (Mensaje 518621)
Son libros de registro distintos. El libro de Registro de determinadas operaciones intracomunitarias:

En este libro se registran exclusivamente dos tipos de operaciones, las operaciones a
las que hace referencia el artículo 66 del RIVA, es decir, sólo las siguientes:

1. El envío o recepción de bienes para la realización de los informes periciales o
trabajos mencionados en el artículo 70, apartado uno, número 7º, de la Ley del
Impuesto (Ley 37/1992).

2. Las transferencias de bienes y las adquisiciones intracomunitarias de bienes
comprendidas en los artículos 9, apartado 3º, y 16, apartado 2º, de la Ley del
Impuesto (Ley 37/1992).

Se consignará la clave “D” si el declarado es el destinatario de los bienes objeto de la
operación, y “R” si el declarado es el remitente de los bienes objeto de la operación.

En cuanto a las adquisiciones intracomunitarias de bienes habituales, así como
las entregas intracomunitarias de bienes habituales, se deben registrar en el
Libro registro de Facturas recibidas y Expedidas respectivamente.

Esa pregunta la formule yo hace unos dias, ya que tampoco nos quedaba claro. Como bien dice Homine, son unas determinadas operaciones y "creemos" que SOLO van en el libro de Otras operaciones Intracomunitarias y no se debe tambien de enviar en cualquiera de los otros libros.

jodaws 23-06-2017 10:45:41

Buenos días, nosotros tambien hemos subido facturas a producción con nuestro NIF y no estamos en el SII...

Sabéis si hay portal para hacer consultas y modificaciones en Producción??? Claro ahora si voy al portal de pruebas, evidentemente no me aparece las que he subido en producción

dimony 23-06-2017 10:52:01

Certificados en 64Bits
 
Hola buenos días, ya se que este tema esta muy trillado, pero me ha saltado ahora y estoy algo desesperado.
Resulta que el envío de facturas me funcionaba a las mil maravillas, enviaba mas de 13 o 14 con mi librería capicom.dll.
El día de ayer me llama un cliente que tiene un s.o. de 64 bits y empieza a petar el envío con mas de 14 facturas.
Con las mismas me puse a buscar en este maravilloso foro y vi varias posibilidades de las cuales no me ha funcionado ninguna.

1ª.- Descargue la instalación de capicom a 64 bits y la registre. --> Error no envía mas de 14.
2ª.- Supuse que tendría que compilar mi app para Windows 64 bits, por lo que lo incluí windows 64 bit en Target Plattaforms

Código Delphi [-]
procedure TData.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var
     Store : IStore;
     Certs : ICertificates;
     Cert : ICertificate2;
     CertContext : ICertContext;
     PCertContext : PCCERT_CONTEXT;
     V : OleVariant;
 const
     INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
begin
  V:= trim(main.lista_certificados.Items.Text);
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
  Certs:=Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False ); { Buscar certificado por nombre }
  if Certs.Count > 0 then
    begin
    Cert:=IInterface(Certs.Item[1]) as ICertificate2;
    CertContext:=Cert as ICertContext;
    CertContext.Get_CertContext(integer(PCertContext));
    if InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT)) = False then
      begin
      ShowMessage( 'Internet SSL certificate. Something went wrong' );
      end;
    end;
end;

Código Delphi [-]
[dcc64 Error] Datos.pas(188): E2197 Constant object cannot be passed as var parameter

Este error es por que PCertContext se debería declarar como constante, pero exactamente no se que valor se le debería dar.

Y ahí me he quedado.
Me podría alguien echar un cable, o darme unas nociones por si a lidiado con este Montoro ... digo Toro.
Gracias.

Homine 23-06-2017 11:03:07

Cita:

Empezado por jodaws (Mensaje 518631)
Buenos días, nosotros tambien hemos subido facturas a producción con nuestro NIF y no estamos en el SII...

Sabéis si hay portal para hacer consultas y modificaciones en Producción??? Claro ahora si voy al portal de pruebas, evidentemente no me aparece las que he subido en producción

Cambia la URL ...www7.aeat.es... por ...www1.aeat.es...

jodaws 23-06-2017 11:11:32

Cita:

Empezado por Homine (Mensaje 518633)
Cambia la URL ...www7.aeat.es... por ...www1.aeat.es...

Gracias!!!!!!!

anabelda 23-06-2017 11:57:37

Envío masivo
 
Cita:

Empezado por dimony (Mensaje 518632)
Hola buenos días, ya se que este tema esta muy trillado, pero me ha saltado ahora y estoy algo desesperado.
Resulta que el envío de facturas me funcionaba a las mil maravillas, enviaba mas de 13 o 14 con mi librería capicom.dll.
El día de ayer me llama un cliente que tiene un s.o. de 64 bits y empieza a petar el envío con mas de 14 facturas.
Con las mismas me puse a buscar en este maravilloso foro y vi varias posibilidades de las cuales no me ha funcionado ninguna.

1ª.- Descargue la instalación de capicom a 64 bits y la registre. --> Error no envía mas de 14.
2ª.- Supuse que tendría que compilar mi app para Windows 64 bits, por lo que lo incluí windows 64 bit en Target Plattaforms

Código Delphi [-]
procedure TData.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var
     Store : IStore;
     Certs : ICertificates;
     Cert : ICertificate2;
     CertContext : ICertContext;
     PCertContext : PCCERT_CONTEXT;
     V : OleVariant;
 const
     INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84;
begin
  V:= trim(main.lista_certificados.Items.Text);
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'MY',CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED );
  Certs:=Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False ); { Buscar certificado por nombre }
  if Certs.Count > 0 then
    begin
    Cert:=IInterface(Certs.Item[1]) as ICertificate2;
    CertContext:=Cert as ICertContext;
    CertContext.Get_CertContext(integer(PCertContext));
    if InternetSetOption(Data,INTERNET_OPTION_CLIENT_CERT_CONTEXT,PCertContext,Sizeof(CERT_CONTEXT)) = False then
      begin
      ShowMessage( 'Internet SSL certificate. Something went wrong' );
      end;
    end;
end;

Código Delphi [-]
[dcc64 Error] Datos.pas(188): E2197 Constant object cannot be passed as var parameter

Este error es por que PCertContext se debería declarar como constante, pero exactamente no se que valor se le debería dar.

Y ahí me he quedado.
Me podría alguien echar un cable, o darme unas nociones por si a lidiado con este Montoro ... digo Toro.
Gracias.

Hola,
yo también estoy peleando con este tema, el tope que consigo enviar son 25 facturas. También estoy utilizando CAPICOM.

dimony 23-06-2017 12:02:31

Cita:

Empezado por anabelda (Mensaje 518635)
Hola,
yo también estoy peleando con este tema, el tope que consigo enviar son 25 facturas. También estoy utilizando CAPICOM.

Yo voy a optar por enviar lotes de 13 facturas en 13.
Bueno 13 no que da mal fario, :D:D:D

manelb 23-06-2017 12:59:09

Cita:

Empezado por dimony (Mensaje 518632)
Hola buenos días, ya se que este tema esta muy trillado, pero me ha saltado ahora y estoy algo desesperado.
Resulta que el envío de facturas me funcionaba a las mil maravillas, enviaba mas de 13 o 14 con mi librería capicom.dll.
El día de ayer me llama un cliente que tiene un s.o. de 64 bits y empieza a petar el envío con mas de 14 facturas.
Con las mismas me puse a buscar en este maravilloso foro y vi varias posibilidades de las cuales no me ha funcionado ninguna.

Hay un comprimido de un compañero en el hilo donde explica detalladamente como instalar y registrar CAPICOM.

http://www.clubdelphi.com/foros/misc...hments&t=91252

Yo lo estoy utilizando en 32 y 64 bits y no tengo ningún problema.

No recuerdo quien lo envió (disculpa compañero........)pero le estaré eternamente agradecido.

parrux 23-06-2017 13:16:05

notitificar factura española
 
Buenos días y gracias de antemano,
tengo una duda (porque algo estoy haciendo mal seguro) me dan error todos los CIF de las empresas, a ver si podéis echarme un cable:

Código:

//Contraparte
            FacturasEmitidas.PersonaFisicaJuridicaType contraparte = new FacturasEmitidas.PersonaFisicaJuridicaType();
            contraparte.NombreRazon = Factura.Contrap_RazonSocial;                                                                                  //Razón Social
            if (Factura.Contrap_NIFRepresentante != "")
                contraparte.NIFRepresentante = Factura.Contrap_NIFRepresentante;                                                                    //NIF Representante
         
            FacturasEmitidas.IDOtroType IdOtroContrap = new FacturasEmitidas.IDOtroType();                                                          //IdOtro
            if (Factura.Contrap_IdPais != null)
            {
                IdOtroContrap.CodigoPais = p.FacturasEmiConvertirPaises(Factura.Contrap_IdPais);                                                    //País
                IdOtroContrap.CodigoPaisSpecified = true;
            }
            IdOtroContrap.IDType = dp.FacturasEmiConvertirDocPaises(Factura.Contrap_IdType);                                                        //Doc País
            IdOtroContrap.ID = Factura.Contrap_Id;                                                                                                  //Id

            contraparte.Item = IdOtroContrap;
           
            f.FacturaExpedida.Contraparte = new FacturasEmitidas.PersonaFisicaJuridicaType();
            f.FacturaExpedida.Contraparte = contraparte;

            f.FacturaExpedida.TipoDesglose = new FacturasEmitidas.FacturaExpedidaTypeTipoDesglose();

No consigo o no se como especificar el NIF de una empresa española sin tener que recurrir al objeto IdOtro

anabelda 23-06-2017 13:18:16

Cita:

Empezado por manelb (Mensaje 518637)
Hay un comprimido de un compañero en el hilo donde explica detalladamente como instalar y registrar CAPICOM.


Yo lo estoy utilizando en 32 y 64 bits y no tengo ningún problema.

No recuerdo quien lo envió (disculpa compañero........)pero le estaré eternamente agradecido.

Si, seguí esos pasos. Pero creo que el problema lo tengo a la hora de obtener el certificado, utilizo SecureBlackBox. Mi duda es en la siguiente línea
Certs := Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False );

¿que es el parametro V? ¿como lo obtengo con SecureBlackbox, si es posible?

dimony 23-06-2017 13:32:09

Cita:

Empezado por parrux (Mensaje 518639)
Buenos días y gracias de antemano,
tengo una duda (porque algo estoy haciendo mal seguro) me dan error todos los CIF de las empresas, a ver si podéis echarme un cable:

Código:

//Contraparte
            FacturasEmitidas.PersonaFisicaJuridicaType contraparte = new FacturasEmitidas.PersonaFisicaJuridicaType();
            contraparte.NombreRazon = Factura.Contrap_RazonSocial;                                                                                  //Razón Social
            if (Factura.Contrap_NIFRepresentante != "")
                contraparte.NIFRepresentante = Factura.Contrap_NIFRepresentante;                                                                    //NIF Representante
         
            FacturasEmitidas.IDOtroType IdOtroContrap = new FacturasEmitidas.IDOtroType();                                                          //IdOtro
            if (Factura.Contrap_IdPais != null)
            {
                IdOtroContrap.CodigoPais = p.FacturasEmiConvertirPaises(Factura.Contrap_IdPais);                                                    //País
                IdOtroContrap.CodigoPaisSpecified = true;
            }
            IdOtroContrap.IDType = dp.FacturasEmiConvertirDocPaises(Factura.Contrap_IdType);                                                        //Doc País
            IdOtroContrap.ID = Factura.Contrap_Id;                                                                                                  //Id

            contraparte.Item = IdOtroContrap;
           
            f.FacturaExpedida.Contraparte = new FacturasEmitidas.PersonaFisicaJuridicaType();
            f.FacturaExpedida.Contraparte = contraparte;

            f.FacturaExpedida.TipoDesglose = new FacturasEmitidas.FacturaExpedidaTypeTipoDesglose();

No consigo o no se como especificar el NIF de una empresa española sin tener que recurrir al objeto IdOtro

Id_Otro se debe de utilizar solo en caso de que no sea un CIF español, o sea que es excluyente

JRCALOR 23-06-2017 13:32:59

Error al enviar el fichero xml
 
Hola a todos

Hace un mes escaso, un cliente me a pedido que le programe el envio de facturas por SII ya que está obligado por volumen de facturacióm !!!. Como podeis imaginar llevo 3 semanas revisando este foro.

Gracias a comentarios como los de keys, newtron, CMB y muchos otros he conseguido crear los ficheros xml a traves de las clases extraidas de los wdsl.

He comprobado los ficheros generados enviandolos manualmente a través del portal y me responde correctamente señalando los aciertos o errores.

El problema lo tengo al enviar "directamente", estoy usando CAPICOM.dll y la versión DX10 de delphi y el certificado entiendo que es válido ya que es el mismo que utilizo al hacer el envio manual.

El error que me da al enviar es este:

An error occurred in the secure channel support - URL:https://www7.aeat.es/wlpl/SSII-FACT/...iiFactFEV1SOAP - SOAPAction:''

Seguro que me dejo algo de configurar, pero no veo que es. Me da el mismo error si en el evento HTTPRIO1BeforeExecute cargo un fichero de los de ejemplo (perviamene modificado el nif, etc) por lo que no creo que el problema sea del xml creado.

He consultado a la AEAT pero su respuesta es que dado el volumen de consultas que tienen no pueden responder dudas de configuración.

Gracias por vuestra ayuda

parrux 23-06-2017 13:36:22

Cita:

Empezado por dimony (Mensaje 518641)
Id_Otro se debe de utilizar solo en caso de que no sea un CIF español, o sea que es excluyente

Gracias por tu respuesta!
Y si es Español directamente paso el CIF, me explico, las unicas propiedades que me da FacturaExpedida.Contraparte son:

.NombreRazon
.NIFRepresentante
.Item

si no meto un objeto IdOtro y meto directamente un String "V12346578" por defecto pone la eqtiqueta NIF?? o como va???

Muchas gracias de nuevo!

anabelda 23-06-2017 14:16:54

Resuelto
 
Cita:

Empezado por anabelda (Mensaje 518640)
Si, seguí esos pasos. Pero creo que el problema lo tengo a la hora de obtener el certificado, utilizo SecureBlackBox. Mi duda es en la siguiente línea
Certs := Store.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME,V,False );

¿que es el parametro V? ¿como lo obtengo con SecureBlackbox, si es posible?

Por fin, lo he conseguido. Como suponía el problema lo tenia al asociar el certificado, en un principio asignaba el número de serie, pero no era correcto. Con la siguiente línea ya me funciona:

v:=certif.SubjectName.CommonName;


La franja horaria es GMT +2. Ahora son las 17:56:37.

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