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.