Controlando el acceso a los datos

Cuando se hacen aplicaciones para empresas, es normal que se requiera controlar los permisos de acceso al programa dependiendo del departamento. En este artículo os voy a explicar como lo hemos solucionado.

La aplicación está pensada para poder ser heredada y aplicarla a aplicaciones de cualquier fin, pudiendo incluso ser usada simultáneamente por más de una aplicación.

Distingo dos niveles de acceso:

  1. Acceso a menús
  2. nivel de autorización para crear/modificar datos

El control de accesos lo vamos a hacer a nivel de grupos de usuario, aprovechando la tabla que existe en vBase

Por lo que he creado cuatro tablas:

Acciones. En ella se dan de alta las acciones de menú que vamos a permitir activar o bloquear.

Tablas. Donde creamos las tablas que tendrán control de acceso a la información

Grupos – tablas. Donde definiremos los permisos de cada grupo de usuario con las tablas

Grupos – acciones. Para dar o quitar el acceso a las acciones por grupo.

Este es el esquema:

A nivel de acciones de menú no hay mas que dos posibilidades, o se permite o no se permite. Sin embargo en las tablas la cosa se puede complicar mucho (todo lo que queramos), desde controlar alta-modificación-baja, hasta controlar el acceso a cada campo (ver/modificar).

Sigue leyendo

Anuncios

vBase. Entidades y categorías

Vamos a ver como  crear clientes, proveedores con la vBase actual.

La tabla de entidades es genérica, y cuando queremos explotarla desde otra aplicación, como pueda ser la contabilidad o gestión, para usos concretos como definir un cliente o un proveedor, se debe usar la tabla categorías y la que las relaciona ENT_CAT.

Lo primero que tenemos que hacer es crear las categorías de uso reservado que necesitemos, la forma escogida es creando una constante que la defina. Ejemplos:

~CLT_CAT@vConta.dat con el valor CLT para definir clientes

~ENT_AGT@Gestión Maestros.dat  con el valor AGT para definir agentes comerciales

A continuación creamos un proceso que ejecutemos al inicar la aplicación para dar de alta las categorías en la tabla CAT

– Ejemplo de proceso

Suponemos que en nuestra aplicación vamos a definir comerciales, para ello definiremos una constante ENT_AGT, con el valor AGT, y creamos un registro en la tabla de categorías tal que así:

Es importante crearla como de uso reservado (USO_RSV = 1 ), para que el usuario no pueda borrarla. Ahora el usuario podrá definir cualquier entidad como comercial, con solo añadir esta categoría a las de la entidad ( tabla ENT_CAT).

Sigue leyendo

vBase definitiva

Con la salida de la versión 7.4 de v7, se publica lo que será la vBase estable. En esta vBase es fruto de la colaboración de Velneo con varias empresas, que empezó con una semana intensa de trabajo.

A esas jornadas, cada uno fue con su propia idea de vBase, y juntos llegamos a esta solución, de la cual estamos muy satisfechos.

Nuestro objetivo principal, incluso antes de ser elegidos para esta colaboración, era diseñar una vBase lo suficientemente abstracta, como para que pueda ser usada con aplicaciones totalmente opuestas (ejemplos: gestión clásica, académias, clubs deportivos,…..). Para ello habíamos empezado a contactar con otras empresas para consensuar ideas. Al ser elegidos para diseñar la vBase oficial, lógicamente, nos volcamos en el proyecto junto con el resto de equipo.

Ya en la v6 nosotros (Guida21), habíamos decidido basar nuestros desarrollos de las plantillas principales de Velneo (vBase, vConta) creciendo en funcionalidades, pero la experiencia de desarrollar aplicaciones para múltiples sectores, nos hacía encontrarnos una y otra vez, con la imposibilidad de tener una tabla de entidades común. Con esta vBase hemos conseguido que esto no nos vuelva a suceder. Hemos sido lo más ambiciosos en los planteamientos que el tiempo y los recursos nos han permitido.

La vBase que se ha publicado será totalmente estable a nivel de datos, es decir ya no desaparecerán campos ni tablas. La vConta se ha diseñado integrandola totalmente con esta, y es el mejor ejemplo de como operar con las entidades desde otras aplicaciones.

Voy a escribir algunos artículos que expliquen aspectos claves de esta vBase. Si quereis que escriba sobre algún apartado concreto me lo podeis indicar.

un saludo.

Jornadas análisis vConta

Hoy termina la semana de trabajo con Velneo, en la que estamos trabajando intensamente junto a Víctor García (Guida 21), Héctor Santoveña (HSM Software) y Jorge Velasco (The Seed Software Company), analizando y normalizando las futuras Open Apps de vBase y vConta.
La semana nos ha pasado muy rápidamente, personalmente ha sido una experiencia muy gratificante.
Nos va a dar mucha pena que finalice.
A lo largo de la semana hemos tenido momentos de acalorado debate que siempre han terminado con un resultado enriquecedor para todos. El poder contrastar la visión con el resto del equipo, el hecho que el objetivo común siempre ha sido claro por todos, hacer una vBase y vConta los más ambiciosa posible, la gran experiencia que cada uno aporta (propia y la de la lucha diaria con sus clientes) a conseguido que todos aprendamos y estoy seguro que lo que salga de aquí será una base muy sólida para la comunidad.

Os dejo un enlace al resumen de ayer, suscribo todos los comentarios de Jesus Arboleya, y esperamos repetir la experiencia. Aunque sabemos que este proyecto solo acaba de empezar.
Resumen del cuarto día de trabajo

Bueno os dejo que me voy a la última jornada, solo reiterar que está siendo un placer participar en esta experiencia.

Profundizando en vBase

Hemos estado profundizando en la estructura que debe tener el módulo vBase, para ser lo mas generalista posible y pueda ser utilizado para cualquier propósito. Como consideramos, al igual que otros desarroladores de v7, que este módulo deberiamos homologarlo lo mas posible, he procedido a contrastar mi planteamiento con otras personas con experiencia. Este es el caso de Hector Santoveña y Jorge Velasco. Nuestra intención es homologar los proyectos de datos, dejando los de aplicación para que cada uno aplique el estilo que desee. Una vez terminada la definición de campos publicaremos el proyecto para que pueda ser descargado por la comunidad.
Después de nuestras conversaciones, dividimos las tablas de la siguiente manera:

  • Universales. Tablas de uso universal, que podrían ser compartidas, por aplicaciones diferentes e incluso por clientes diferentes. Estas podrían estar en un proyecto separado, y compartido. Dentro de este apartado tenemos:
    • Divisas
    • Cambios de divisas
    • Idiomas
    • Paises. Dentro de los paises hemos desglosado hasta 2 divisiones
      • División 1 (comunidades autónomas)
      • División 2 (provincias)
    • Tipos de vías
    • Localizaciones: Códigos postales, localidades y calles. Esta es una tabla que nos permite obtener el código postal de una localidad o una calle indistintamente
    • Bancos, sucursales bancarias
  • Entidades y contactos. En este apartado disponemos de la tabla de entidades y todas sus relacionadas
    • Tablas maestras
      • Categorías
      • Tipos de relación
      • Clasificaciones. Para ser utilizada por el usuario final para cualquier fin.
    • Entidades
      • Entidades
      • Contactos. Relación de personas de contacto de una entidad
      • Direcciones. Direcciones postales
      • Relación entre entidades. Tabla de relaciones entre entidades
      • Categorías de una entidad
      • Centros o subdivisiones de entidad. Esta es una tabla de propósito múltiple, será utilizada para dividir la entidad en subentidades de control. Ejemplos: Centros de trabajo o de logística, Proyectos, centros de coste. Por ejemplo desde una gestión podría ser el almacén origen o destino de la mercancía.
  • Empresa
    • Empresas
    • Usuario por empresa
    • Entidades por empresa
  • Usuarios de la aplicación. Estas tablas las tenemos en un proyecto diferente, que es heredado por este.
    • Usuarios
    • Grupos de usuarios
    • Usuarios por grupo

Sigue leyendo

Recursos: Función fPregunta

Los que venimos de v6, echamos en falta un función “fPregunta”, que presentaba un cuadro de diálogo standard con un mensaje que le pasabas como parámetro y los botones SI / NO para que el usuario respondiese, y te devolvía el valor 1 o 0 según fuese la respuesta.
Bien, pues en este artículo vamos a diseñar nuestra propia función para preguntar al usuario con su cuadro de diálogo, aunque le vamos a pasar algún parámetro mas, y con todas las posibilidades de crecimiento.

En la función de la v6, sólo le pasábamos como parámetro el texto de la pregunta. En nuestra función le vamos a pasar tres parámetros:
TEXTO.- Texto de la pregunta
TITULO.- Título del formulario
BOTONES.- Este parámetro, nos permitirá indicarle que botones queremos que contenga el formulario. De momento vamos a programar la función para 2 opciones:

S: Botones SI/No
A: Aceptar/Cancelar

Procedemos:

Sigue leyendo