Importante
Recuerda que estas personalizaciones se tienen que revisar con el cliente y una base de datos de pruebas, también se tendrán que adaptar al funcionamiento del cliente en caso de ser necesario modificar el comportamiento del SII.
En este artículo vamos a detallar varios ejemplo de como alterar el funcionamiento estándar del SII para adaptarlo al funcionamiento del cliente, también algunos ejemplos de como personalizar el valor para ciertos campos de valor libre.
Los registros del SII generan en el proceso 'PSII_1_1_Actualiza_Factura', la cual dispone de dos procesos personalizados:
- PSII_1_1_Actualiza_Factura_Pre: Antes de ejecutar el estándar
- PSII_1_1_Actualiza_Factura_Post: Después de ejecutar el estándar
En este artículo los ejemplos están preparados para ser ejecutados en el '_Post'.
Modificar el número de factura
-- Facturas de Venta
UPDATE SFC
SET SFC.NumFacturaEmisor = LEFT(SF.Descrip, CHARINDEX('-', SF.Descrip)) +RIGHT('000000'+CAST(FCC.NumFactCliente AS varchar), 7)
FROM SII_1_1_Temp_Objetos_Actualizar TOA
INNER JOIN Facturas_Cli_Cab FCC
ON FCC.IdDoc = TOA.IdDocObjeto AND TOA.Objeto = 'SIIFacturaCli' AND TOA.IdDocSesion = @IdDocSesion
INNER JOIN SII_1_1_Facturas_Cli SFC
ON FCC.IdFactura = SFC.IdFactura
INNER JOIN Series_Facturacion SF
ON SF.SerieFactura = FCC.SerieFactura
/* WHERE PERSONALIZADO */
-- Facturas de Compra
UPDATE SFP
SET SFP.NumSerieFacturaEmisor = LEFT(SF.Descrip, CHARINDEX('-', SF.Descrip)) +RIGHT('000000'+CAST(FPC.NumFactProv AS varchar), 7)
FROM SII_1_1_Temp_Objetos_Actualizar TOA
INNER JOIN Facturas_Prov_Cab FPC
ON FPC.IdDoc = TOA.IdDocObjeto AND TOA.Objeto = 'SIIFacturaProv' AND TOA.IdDocSesion = @IdDocSesion
INNER JOIN SII_1_1_Facturas_Prov SFP
ON FPC.IdFactura = SFP.IdFactura
INNER JOIN Series_Facturacion SF
ON SF.SerieFactura = FPC.SerieFactura
/* WHERE PERSONALIZADO */Si llevamos a cabo la personalización anterior, también tendremos que realizarla en la función Fun_IL_DameSerieFacturaCli_Personalizada. Necesario desde el Hotfix 108 de la v5.0, dado que las modificaciones en las facturas del SII se realizarán desde el Registro de Facturación al no poder desactualizar la factura.
-- Facturas de Venta SELECT Factura = replace(str(CAST(SerieFactura AS VARCHAR(5)),2),' ','0')+'/'+replace(str(CAST(FCC.NumFactClñiente AS VARCHAR(6)),6),' ','0') FROM Facturas_Cli_Cab FCC WHERE IdFactura=@IdFactura AND @Tipo=1
Modificar la descripción de la operación
--Ventas
UPDATE SFC
SET SFC.DescripcionOperacion = 'Rect. ' +ISNULL(SFC.DescripcionOperacion,'')
FROM SII_1_1_Temp_Objetos_Actualizar TOA
INNER JOIN Facturas_Cli_Cab FCC
ON FCC.IdDoc = TOA.IdDocObjeto AND TOA.Objeto = 'SIIFacturaCli' AND TOA.IdDocSesion = @IdDocSesion
INNER JOIN SII_1_1_Facturas_Cli SFC
ON FCC.IdFactura = SFC.IdFactura
INNER JOIN Series_Facturacion SF
ON SF.SerieFactura = FCC.SerieFactura
/* WHERE PERSONALIZADO */
-- Compras
UPDATE SFP
SET SFP.DescripcionOperacion = TS.Descrip
FROM SII_1_1_Temp_Objetos_Actualizar TOA
INNER JOIN Facturas_Prov_Cab FPC
ON FPC.IdDoc = TOA.IdDocObjeto AND TOA.Objeto = 'SIIFacturaProv' AND TOA.IdDocSesion = @IdDocSesion
INNER JOIN Prov_Datos PD
ON PD.IdProveedor = FPC.IdProveedor
INNER JOIN TiposSuministro TS
ON PD.TipoSuministro=TS.TipoSuministro
INNER JOIN SII_1_1_Facturas_Prov SFP
ON FPC.IdFactura = SFP.IdFactura
/* WHERE PERSONALIZADO */
Si hemos realizado las modificaciones anteriores, será también necesario
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo