Supongamos que tenemos dos empresas A y B, cada una con una delegación A1 y B1.
Hay tres empleados, uno en la empresa A que solo tiene acceso a la misma y los otros dos a la empresa B. Uno de esto último tiene acceso a la empresa B y el otro a ambas, según la siguiente configuración:
Empleado | Empresa A | Empresa B |
Luís | Accede a A1 | Accede a B1 |
Pepe | Accede a A1 |
|
María |
| Accede a B1 |
Las dos empresas utilizan series distintas:
Serie | Id.Delegación | Delegación | Descripción |
0 | 0 | A1 | N – Normal |
1 | 0 | A1 | R – Rectificativa |
2 | 0 | A1 | RI – Recuperación de IVA |
3 | 0 | B1 | N2 - Normal |
Vamos a configurar las vistas que se utilizan en las colecciones de documentos, para que tengan en cuenta la serie y solo muestren los documentos de series pertenecientes a la delegación a la que tiene acceso el usuario.
Por ejemplo, colección de facturas de cliente/deudor:
En el Admon, podemos ver que se utiliza la vista VDLG_Facturas_Cli_Cab_Col, la cual podemos ver a continuación.
CREATE VIEW [dbo].[VDLG_Facturas_Cli_Cab_Col]
----- Modificada en erp/estandar#13012, para añadir los anticipos con facturas
AS
SELECT
Fcc.*,
F.SubTotalEuros as Total,
F.TotalEuros as TotalIVA,
F.BaseAnticiposConFactura,
F.TotalAnticiposConFactura
FROM
VDLG_Facturas_Cli_Cab Fcc
LEFT JOIN vFacturas_Cli_Total_Anticipos F ON Fcc.IdFactura =F.IdFactura
Para añadir la seguridad por serie de delegación, crearemos una vista personalizada y basada en la anterior.
CREATE VIEW [dbo].[Vpers_VDLG_Facturas_Cli_Cab_Col]
----- Creada para añadir seguridad por serie y delegaciones a las que tiene acceso el usuario
AS
SELECT
*
FROM
VDLG_Facturas_Cli_Cab_Col FCC
WHERE Fcc.SerieFactura IN (SELECT seriefactura FROM Series_Facturacion WHERE IdDelegacion IN (SELECT IdDelegacion FROM VEmpresas_Empleados WHERE Usuario = USER))
GO
zpermisos Vpers_VDLG_Facturas_Cli_Cab_Col
De este modo, nos aseguramos que solo se muestren documentos cuya serie se corresponda con una serie de una delegación a la que tenga acceso el usuario.
En caso de querer que solo se visualicen los documentos pertenecientes a la delegación en la que el usuario está logeado, habría que utilizar esta otra vista
CREATE VIEW [dbo].[Vpers_VDLG_Facturas_Cli_Cab_Col]
----- Creada para añadir seguridad por serie y delegación en la que está logueado el usuario
AS
SELECT
*
FROM
VDLG_Facturas_Cli_Cab_Col FCC
WHERE Fcc.SerieFactura IN (SELECT seriefactura FROM Series_Facturacion WHERE IdDelegacion IN (SELECT IdDelegacion FROM Ahora_Sesion WHERE Usuario = USER))
GO
zpermisos Vpers_VDLG_Facturas_Cli_Cab_Col
En la que podemos ver que solo cambia el origen de datos en el que buscamos la delegación a filtrar.
Una vez creada esta vista, solo tenemos que asignarla a la colección que queremos filtrar con seguridad y volver a acceder a AHORA ERP para comprobar que solo visualizamos los documentos de las delegaciones a las que tenemos acceso.
Mediante este método, no es necesario tocar ningún parámetro de seguridad.
El resultado será que los usuarios Pepe y María solo podrán ver las facturas generadas en su delegación, mientras que Luís verá las facturas generadas en ambas delegaciones.