(Desactualizado) SII - Adaptar el SII a los cambios de 01/07/2021 de ventas a distancia

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:30 PM por David Miralpeix

Importante

Este proceso solamente es necesario para las empresas que estén acogidas a la nueva normativa OSS e IOSS.


La finalidad del presenta artículo es explicar los pasos que se deben realizar para adaptar el SII a los cambios de 01.07.2021 de ventas a distancia con la estructura de configuración actual.


Si la empresa está acogida a ventanilla única o supera los 10.000€, cuando las operaciones tributan en destino, realmente este tipo de operación no está sujeto al IVA español. Por tanto a la hora de subirlo al SII lo subimos por el total como no sujeto, no tenemos que desglosar el IVA.


Se deberán configurar nuevo/os impuesto/os, operaciones fiscales y las venta a clientes comunitarios particulares (configurados como nacionales y en su ficha IdImpuesto de su país), al hacer ventas de bienes/servicios podremos subir las facturas al SII tal como indica la AEAT.

Solución

Se deben seguir los siguientes pasos de configuración: ERP - Configurar nuevos impuestos


En el captura se muestra nuevo impuesto "IVA PT" cuyo Id sería -1 y que es lo que habría que indicar en el Post.


Una vez tenemos configurado el ERP, tenemos que modificar el comportamiento del SII para poder generar los registros correctamente para este tipo de facturas, se ha preparado un Post de forma temporal para generar facturas con los impuestos creados, en este se deben indicar de forma manual los idImpuesto que han creado: 


- Añadir la nueva clave '17' para el SII en los datos estáticos:

INSERT INTO SII_1_1_Clave_Regimen_Cli (ClaveRegimenCli,Descrip)
SELECT '17','Operación acogida a alguno de los regímenes previstos en el Capítulo XI del Título IX (OSS e IOSS)'


- Aplicar en el proceso _Post del SII 'pSII_1_1_Actualiza_Factura_Post' la siguiente modificación al final del proceso indicando manualemente los idImpuesto creados:

DECLARE @SII_Canarias AS BIT
SELECT @SII_Canarias = dbo.StrToBool(dbo.Valor_Parametro('SII_Canarias',USER)) -- #31 SII Canarias

-- Cabecera de las facturas
MERGE SII_1_1_Facturas_Cli AS TARGET
USING (
  SELECT (
      SELECT ISNULL(MAX(IdSIIFacturaCli), 0)
      FROM SII_1_1_FACTURAS_CLI
      ) + ROW_NUMBER() OVER (
      ORDER BY FCC.IdFactura
      ) IdSIIFacturaCli
    ,FCC.IdFactura AS IdFactura
    ,1 AS IdEstado
    ,YEAR(FCC.FechaFact) AS Ejercicio
    ,RIGHT('0' + CAST(month(FechaFact) AS VARCHAR), 2) AS Periodo
    ,E.Nif AS NIFFacturaEmisor
    ,CAST(FCC.SerieFactura AS VARCHAR) + '/' + cast(FCC.NumFactCliente AS VARCHAR) NumFacturaEmisor
    ,NULL AS NumeroFacturaEmisorResumenFin
    ,FCC.FechaFact AS FechaExpedicionFacturaEmisor
    ,CASE 
      WHEN FCC.Rectificativa = 1
        THEN 'R1'
      ELSE 'F1'
      END AS TipoFactura
    ,CASE 
      WHEN FCC.Rectificativa = 1
        THEN 'I'
      ELSE NULL
      END AS TipoRectificativa
    ,NULL AS BaseRectificada
    ,NULL AS CuotaRectificada
    ,NULL AS CuotaRecargoRectificado
    ,NULL AS TipoNoExenta
    ,NULL AS ClaveRegimenEspecialOTrascendenciaAdicional1
    ,NULL AS ClaveRegimenEspecialOTrascendenciaAdicional2
    ,NULL AS NumRegistroAcuerdoFacturacion
    ,VLI.ImporteTAIReglasLocalizacion AS ImporteTotal
    ,NULL AS BaseImponibleACoste
    ,'Operación acogida a alguno de los regímenes previstos en el Capítulo XI del Título IX (OSS e IOSS)' AS DescripcionOperacion
    ,NULL AS FacturaSimplificadaArticulos7_2_7_3
    ,NULL AS NIFEntidadSucedida
    ,NULL AS NombreRazonEntidadSucedida
    ,NULL AS RegPrevioGGEEoREDEMEoCompetencia
    ,NULL AS Macrodato
    ,NULL AS ImporteTransmisionInmueblesSujetoAIVA
    ,NULL AS EmitidaPorTercerosODestinatario
    ,NULL AS FacturacionDelMercadoDelGas
    ,NULL AS VariosDestinatarios
    ,NULL AS Cupon
    ,NULL AS FacturaSinIdentifDestinatarioAritculo6_1_d
    ,C.Nombre AS ContraparteNombreRazon
    ,NULL AS ContraparteNIFRepresentante
    ,NULL AS ContraparteNIF
    ,FCC.FechaFact AS FechaOperacion
    ,'06' AS ContraparteIdOtroIDType
    ,C.idPais AS ContraparteIdOtroCodigoPais
    ,C.Nif AS ContraparteIdOtroID
    ,'17' AS ClaveRegimenEspecialOTrascendencia
    ,STOA.Eliminar
  FROM SII_1_1_Temp_Objetos_Actualizar STOA
  INNER JOIN Facturas_Cli_Cab FCC
    ON STOA.IdDocObjeto = FCC.IdDoc AND STOA.Objeto = 'SIIFacturaCli' AND STOA.IdDocSesion = @IdDocSesion
  INNER JOIN Clientes_Datos CD
    ON CD.IdCliente = FCC.IdCliente
  OUTER APPLY (
    SELECT TOP 1 IdContacto IdContactoG
    FROM Contactos_Objetos
    WHERE Objeto = 'Cliente' AND IdDocObjeto = CD.IdDoc  AND (FechaHasta >= FCC.FechaActualizacion) AND IdTipo = - 1 ORDER BY FechaHasta DESC
    ) CG
  INNER JOIN Contactos C
    ON C.IdContacto = ISNULL(CG.IdContactoG, CD.IdContactoG)
  LEFT JOIN SII_1_1_Codigo_Pais P
    ON C.IdPais = P.IdPais
  INNER JOIN Series_Facturacion SF
    ON SF.SerieFactura = FCC.SerieFactura
  INNER JOIN Empresa E
    ON E.IdEmpresa = FCC.IdEmpresa
  INNER JOIN SII_1_1_Empresas SE
    ON SE.IdEmpresa = E.IdEmpresa
  CROSS APPLY (
    SELECT IdFactura
      ,SUM(LI.BaseEuros) AS ImporteTAIReglasLocalizacion
    FROM vLibroIVA LI
    INNER JOIN Ivas I
      ON I.IdIva = LI.IdIva AND LI.IdFactura = FCC.IdFactura AND LI.IdLibro = 0 AND LI.TipoFactura IN (0, 3) AND ((I.IdImpuesto IN (/* Indicar los idImpuestos generados*/)AND @SII_Canarias = 0))
    WHERE LI.idFactura = FCC.idFactura
    GROUP BY idFactura
    ) VLI
  WHERE EXISTS (
      SELECT IdFactura
      FROM LibroIVA LI
      INNER JOIN Ivas I
        ON I.IdIva = LI.IdIva AND LI.IdFactura = FCC.IdFactura AND LI.IdLibro = 0 AND LI.TipoFactura IN (0, 3) AND ((I.IdImpuesto IN (/* Indicar los idImpuestos generados*/) AND @SII_Canarias = 0)
    )
      )
  ) AS SOURCE
  ON (TARGET.IdFactura = SOURCE.IdFactura)
WHEN MATCHED
  THEN
    UPDATE
    SET TARGET.Ejercicio = SOURCE.Ejercicio
      ,TARGET.NIFFacturaEmisOR = SOURCE.NIFFacturaEmisOR
      ,TARGET.FechaExpedicionFacturaEmisor = SOURCE.FechaExpedicionFacturaEmisor
      ,TARGET.TipoFactura = SOURCE.TipoFactura
      ,TARGET.TipoRectificativa = SOURCE.TipoRectificativa
      ,TARGET.BaseRectificada = SOURCE.BaseRectificada
      ,TARGET.CuotaRectificada = SOURCE.CuotaRectificada
      ,TARGET.CuotaRecargoRectificado = SOURCE.CuotaRecargoRectificado
      ,TARGET.TipoNoExenta = SOURCE.TipoNoExenta
      ,TARGET.ClaveRegimenEspecialOTrascendenciaAdicional1 = SOURCE.ClaveRegimenEspecialOTrascendenciaAdicional1
      ,TARGET.ClaveRegimenEspecialOTrascendenciaAdicional2 = SOURCE.ClaveRegimenEspecialOTrascendenciaAdicional2
      ,TARGET.NumRegistroAcuerdoFacturacion = SOURCE.NumRegistroAcuerdoFacturacion
      ,TARGET.ImporteTotal = SOURCE.ImporteTotal
      ,TARGET.BaseImponibleACoste = SOURCE.BaseImponibleACoste
      ,TARGET.DescripcionOperacion = SOURCE.DescripcionOperacion
      ,TARGET.FacturaSimplificadaArticulos7_2_7_3 = SOURCE.FacturaSimplificadaArticulos7_2_7_3
      ,TARGET.NIFEntidadSucedida = SOURCE.NIFEntidadSucedida
      ,TARGET.NombreRazonEntidadSucedida = SOURCE.NombreRazonEntidadSucedida
      ,TARGET.RegPrevioGGEEoREDEMEoCompetencia = SOURCE.RegPrevioGGEEoREDEMEoCompetencia
      ,TARGET.Macrodato = SOURCE.Macrodato
      ,TARGET.ImporteTransmisionInmueblesSujetoAIVA = SOURCE.ImporteTransmisionInmueblesSujetoAIVA
      ,TARGET.EmitidaPorTercerosODestinatario = SOURCE.EmitidaPorTercerosODestinatario
      ,TARGET.FacturacionDelMercadoDelGas = SOURCE.FacturacionDelMercadoDelGas
      ,TARGET.VariosDestinatarios = SOURCE.VariosDestinatarios
      ,TARGET.Cupon = SOURCE.Cupon
      ,TARGET.FacturaSinIdentifDestinatarioAritculo6_1_d = SOURCE.FacturaSinIdentifDestinatarioAritculo6_1_d
      ,TARGET.ContraparteNombreRazon = SOURCE.ContraparteNombreRazon
      ,TARGET.ContraparteNIFRepresentante = SOURCE.ContraparteNIFRepresentante
      ,TARGET.ContraparteNIF = SOURCE.ContraparteNIF
      ,TARGET.FechaOperacion = SOURCE.FechaOperacion
      ,TARGET.ContraparteIdOtroIDType = SOURCE.ContraparteIdOtroIDType
      ,TARGET.ContraparteIdOtroCodigoPais = SOURCE.ContraparteIdOtroCodigoPais
      ,TARGET.ContraparteIdOtroID = SOURCE.ContraparteIdOtroID
      ,TARGET.ClaveRegimenEspecialOTrascendencia = SOURCE.ClaveRegimenEspecialOTrascendencia
WHEN NOT MATCHED BY TARGET
  THEN
    INSERT (
      IdSIIFacturaCli
      ,IdFactura
      ,IdEstado
      ,Ejercicio
      ,Periodo
      ,NIFFacturaEmisOR
      ,NumFacturaEmisOR
      ,FechaExpedicionFacturaEmisor
      ,TipoFactura
      ,TipoRectificativa
      ,BaseRectificada
      ,CuotaRectificada
      ,CuotaRecargoRectificado
      ,TipoNoExenta
      ,ClaveRegimenEspecialOTrascendenciaAdicional1
      ,ClaveRegimenEspecialOTrascendenciaAdicional2
      ,NumRegistroAcuerdoFacturacion
      ,ImporteTotal
      ,BaseImponibleACoste
      ,DescripcionOperacion
      ,FacturaSimplificadaArticulos7_2_7_3
      ,NIFEntidadSucedida
      ,NombreRazonEntidadSucedida
      ,RegPrevioGGEEoREDEMEoCompetencia
      ,Macrodato
      ,ImporteTransmisionInmueblesSujetoAIVA
      ,EmitidaPorTercerosODestinatario
      ,FacturacionDelMercadoDelGas
      ,VariosDestinatarios
      ,Cupon
      ,FacturaSinIdentifDestinatarioAritculo6_1_d
      ,ContraparteNombreRazon
      ,ContraparteNIFRepresentante
      ,ContraparteNIF
      ,FechaOperacion
      ,ContraparteIdOtroIDType
      ,ContraparteIdOtroCodigoPais
      ,ContraparteIdOtroID
      ,ClaveRegimenEspecialOTrascendencia
      )
    VALUES (
      SOURCE.IdSIIFacturaCli
      ,SOURCE.IdFactura
      ,SOURCE.IdEstado
      ,SOURCE.Ejercicio
      ,SOURCE.Periodo
      ,SOURCE.NIFFacturaEmisOR
      ,SOURCE.NumFacturaEmisOR
      ,SOURCE.FechaExpedicionFacturaEmisor
      ,SOURCE.TipoFactura
      ,SOURCE.TipoRectificativa
      ,SOURCE.BaseRectificada
      ,SOURCE.CuotaRectificada
      ,SOURCE.CuotaRecargoRectificado
      ,SOURCE.TipoNoExenta
      ,SOURCE.ClaveRegimenEspecialOTrascendenciaAdicional1
      ,SOURCE.ClaveRegimenEspecialOTrascendenciaAdicional2
      ,SOURCE.NumRegistroAcuerdoFacturacion
      ,SOURCE.ImporteTotal
      ,SOURCE.BaseImponibleACoste
      ,SOURCE.DescripcionOperacion
      ,SOURCE.FacturaSimplificadaArticulos7_2_7_3
      ,SOURCE.NIFEntidadSucedida
      ,SOURCE.NombreRazonEntidadSucedida
      ,SOURCE.RegPrevioGGEEoREDEMEoCompetencia
      ,SOURCE.Macrodato
      ,SOURCE.ImporteTransmisionInmueblesSujetoAIVA
      ,SOURCE.EmitidaPorTercerosODestinatario
      ,SOURCE.FacturacionDelMercadoDelGas
      ,SOURCE.VariosDestinatarios
      ,SOURCE.Cupon
      ,SOURCE.FacturaSinIdentifDestinatarioAritculo6_1_d
      ,SOURCE.ContraparteNombreRazon
      ,SOURCE.ContraparteNIFRepresentante
      ,SOURCE.ContraparteNIF
      ,SOURCE.FechaOperacion
      ,SOURCE.ContraparteIdOtroIDType
      ,SOURCE.ContraparteIdOtroCodigoPais
      ,SOURCE.ContraparteIdOtroID
      ,SOURCE.ClaveRegimenEspecialOTrascendencia
      );



-- Lineas de la factura 
MERGE SII_1_1_Facturas_Cli_Lineas AS TARGET
USING (
  SELECT FCC.IdFactura AS IdFactura
    ,SFC.IdDoc AS IdDocSIIFacturaCli
    ,FCC.Deudor AS TipoOperacion
    ,NULL AS Sujeta
    ,NULL AS Exenta
    ,NULL AS CausaExencion
    ,NULL AS BaseImponible
    ,NULL AS TipoNoExenta
    ,NULL AS TipoImpositivo
    ,NULL AS CuotaRepercutida
    ,NULL AS TipoRecargoEquivalencia
    ,NULL AS CuotaRecargoEquivalencia
    ,NULL AS ImportePorArticulos7_14_Otros
    ,SUM(LI.BaseEuros) AS ImporteTAIReglasLocalizacion
  FROM SII_1_1_Temp_Objetos_Actualizar STOA
  INNER JOIN Facturas_Cli_Cab FCC
    ON STOA.IdDocObjeto = FCC.IdDoc
      AND STOA.Objeto = 'SIIFacturaCli'
      AND STOA.IdDocSesion = @IdDocSesion
  INNER JOIN SII_1_1_Facturas_Cli SFC
    ON SFC.IdFactura = FCC.IdFactura
  INNER JOIN Clientes_Datos CD
    ON CD.IdCliente = FCC.IdCliente
  INNER JOIN LibroIVA LI
    ON LI.IdFactura = SFC.IdFactura AND LI.TipoFactura IN (0, 3) AND LI.IdLibro = 0
  INNER JOIN IVAs I
    ON LI.IdIva = I.IdIVA --AND (I.IdImpuesto IN (-1,-2) AND @SII_Canarias = 0)
  WHERE EXISTS (
      SELECT IdFactura
      FROM LibroIVA LI
      INNER JOIN Ivas I
        ON I.IdIva = LI.IdIva AND LI.IdFactura = FCC.IdFactura AND LI.IdLibro = 0 AND LI.TipoFactura IN (0, 3) AND ((I.IdImpuesto IN (/* Indicar los idImpuestos generados*/) AND @SII_Canarias = 0))
      )
  GROUP BY 
  FCC.IdFactura
  ,SFC.IdDoc
  ,FCC.Deudor
  ) AS SOURCE
  ON (TARGET.IdFactura = SOURCE.IdFactura)
WHEN MATCHED
  THEN
    UPDATE
    SET TARGET.IdFactura = SOURCE.IdFactura
      ,TARGET.IdDocSIIFacturaCli = SOURCE.IdDocSIIFacturaCli
      ,TARGET.TipoOperacion = SOURCE.TipoOperacion
      ,TARGET.Sujeta = SOURCE.Sujeta
      ,TARGET.Exenta = SOURCE.Exenta
      ,TARGET.CausaExencion = SOURCE.CausaExencion
      ,TARGET.BaseImponible = SOURCE.BaseImponible
      ,TARGET.TipoNoExenta = SOURCE.TipoNoExenta
      ,TARGET.TipoImpositivo = SOURCE.TipoImpositivo
      ,TARGET.CuotaRepercutida = SOURCE.CuotaRepercutida
      ,TARGET.TipoRecargoEquivalencia = SOURCE.TipoRecargoEquivalencia
      ,TARGET.CuotaRecargoEquivalencia = SOURCE.CuotaRecargoEquivalencia
      ,TARGET.ImportePorArticulos7_14_Otros = SOURCE.ImportePorArticulos7_14_Otros
      ,TARGET.ImporteTAIReglasLocalizacion = SOURCE.ImporteTAIReglasLocalizacion
WHEN NOT MATCHED BY TARGET
  THEN
    INSERT (
      IdFactura
      ,IdDocSIIFacturaCli
      ,TipoOperacion
      ,Sujeta
      ,Exenta
      ,CausaExencion
      ,BaseImponible
      ,TipoNoExenta
      ,TipoImpositivo
      ,CuotaRepercutida
      ,TipoRecargoEquivalencia
      ,CuotaRecargoEquivalencia
      ,ImporteTAIReglasLocalizacion
      )
    VALUES (
      SOURCE.IdFactura
      ,SOURCE.IdDocSIIFacturaCli
      ,SOURCE.TipoOperacion
      ,SOURCE.Sujeta
      ,SOURCE.Exenta
      ,SOURCE.CausaExencion
      ,SOURCE.BaseImponible
      ,SOURCE.TipoNoExenta
      ,SOURCE.TipoImpositivo
      ,SOURCE.CuotaRepercutida
      ,SOURCE.TipoRecargoEquivalencia
      ,SOURCE.CuotaRecargoEquivalencia
      ,SOURCE.ImporteTAIReglasLocalizacion
      );


La forma de subir las facturas al SII:





SII Factura de Cliente
SII Envíos 


Código del cambio: 16513

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo