Ejemplo Implementacion

From ADempiere
Jump to: navigation, search
This Wiki is read-only for reference purposes to avoid broken links.

Introducción

Somos un equipo de trabajo encargado de la implementación del Adempiere, el modulo de recursos humanos, en una organización. Mas alla de la funcionalidad que ofrece, tenemos que ampliarlo con unos casos de uso que el mismo no contempla. La idea de esta pagina es implementar un modelo sencillo, mostrando la mayor cantidad de mecanismos de extensión posible.
Todas las acciones seran ejecutados como el usuario del Sistema: SuperUser / pass: System Todos las entidades creadas en este ejemplo deben tener el valor Tipo de Entidad: 'User Mantained'

Requerimientos

  • Una vez por año, Administración de personal, debe elevar una resolución a Liquidaciones, donde figuran la cantidad de horas extra que las distintas direcciones (o gerencias) disponen para asignar a sus empleados y cuales fueron utilizadas durante el año.
  • Se eleva solo una resolución por año.

Casos de uso

  • ABM de resoluciones
  • Agregar horas extra solicitadas y otorgadas por Dirección
  • Imprimir reporte de las resoluciones elevadas hasta el momento
  • Imprimir reporte de horas extra de una resolución

Tablas

Modelo.PNG
Importante: (mas adelanta se detalla por que)

  • Ninguna tabla tiene PK (todavia, el Postgres puede tener tablas sin PKs).
  • Todavia no tiene FKs ( se sabe que las horas extra pertenecen a una Dirección).
  • Con respecto a lo anterior, la FK de horas extra, a la direccion tiene el formato tabla_ID.

Preparación

  • Las tablas que se muestran arriba fueron hechas con el Power Architect. Con el podemos generar el DDL y darlas de alta en la DB. Cuando se creen las tablas, es importante hacerlo con el usuario con el cual se hizo el setup(RUN_Setup.bat) en el Adempiere. En mi caso con el usuario 'adempiere', porque si se las crea con otro, las crea en otro esquema y no se pueden ver desde el programa.
  • Crear una tabla base, clonando uan tabla cualquiera, por ejemplo M_FreightCategory_Categoría de Fletes, quitandole todos los campos que no sean obligatorios ni el ID. Los mismos se especifican en NewWindow



CREATE TABLE adempiere.rh_direccion (
nombre VARCHAR(20) NOT NULL,
email VARCHAR(50) NOT NULL
);
CREATE TABLE adempiere.rh_horas_extra_x_direccion (
rh_direccion_id INTEGER NOT NULL,
horas_solicitadas INTEGER NOT NULL,
horas_otorgadas INTEGER NOT NULL,
horas_sobrantes INTEGER NOT NULL,
rh_resoluciones_he_ID INTEGER NOT NULL
);
CREATE TABLE adempiere.rh_resoluciones_he (
anio INTEGER NOT NULL,
numero_resolucion INTEGER NOT NULL
);


Ventana basica

Implementación Teoría

Creación de tabla

Vamos a implementar la tabla de Direcciones (rh_direccion).

  1. Ir a Diccionario de la Aplicación -> Tabla y columna
  2. Crear la tabla rh_direccion
    1. Llenar
      1. Nombre y nombre de tabla con rh_direccion
      2. Acceso a datos: Todo (En realidad es a nivel Organizacion, pero entonces habria que entrar con otro rol que no sea SuperUser para poder ingresar datos)
      3. Tipo de Entidad: User Mantained
      4. y luego guardar.
    2. Ahora se oprime Copiar columnas desde tablas y se selecciona la tabla base que creamos
    3. Ya tenemos una tabla con los campos basicos y un ID. Paso siguiente se activa la opción Crear columnas desde DB
    4. En este punto la tabla esta configurada en el Adempiere, pero no estan creados todos los campos en la base. Si uno va a las columnas y pone Sincronizar Columnas, como la tabla esta creada, simplemente agregara la columna a la tabla. Es mas rapido asi que hay que borrar la tabla en la base de datos (Drop Table) y recien ahi Sincronizar Columnas ( que si no detecta la tabla, hace la sentencia Create table con todas las columnas.)

Creación de Ventana

  1. Crear una ventana
    1. Ir a Diccionario de la Aplicación -> Ventana, Pestraña y Campo
    2. Crear una nueva Ventana llenando:
      1. Nombre: ABM Direcciones
      2. Ventana Tipo: Mantener
    3. Guardar la ventana
    4. Ir a pestaña, crear una nueva y llenar
      1. Nombre: Direcciones
      2. Tabla: rh_direccion
    5. Guardar la pestaña
    6. Oprimir Crear Campos
    7. Luego en la pestaña 'Secuencia de campos', ocultar rh_direccion, Active, Client y Organizacion.
  2. Crear un link de menu
    1. Ir a Administracion del sistema -> Reglas generales -> Reglas del sistema -> Menú (Tambien hay un acceso directo en la solapa de Menu, la que siempre esta abierta )
    2. Crear un nuevo link, llenando:
      1. Nombre: Direcciones
      2. Accion: Ventana
      3. Ventana: ABM Direcciones
    3. Desloguearse y volver a ingresar.

Ahora ya puede probar el correcto funcionamiento del ABM.

Los pasos genericos para crear una ventana simple (1 ventana = 1 pestaña) son:

  1. Crear una tabla
    1. Se puede crear 100% desde el Adempiere o se puede importar el modelo de datos implementado.
    2. Las tablas en el Adempiere, tienen una serie de columnas obligatorios y un ID. Estos ultimos conviene crearlos clonando una tabla existente, el ID se clonara siguiendo la regla de nombres del Adempiere.
    3. De las 2 formas de crear una tabla, la mejor nos parece la de importar la tabla de la base, ya que de lo contrario hay que crear columna por columna.
  2. Crear una ventana
  3. Crear un link de menu




Maestro/detalle

Creacion de tablas

  1. En Tabla y columna se crean las tablas 'rh_horas_extra_x_direccion' y 'rh_resoluciones_he', de la misma forma que se creo la anterior, pero, antes de ir a Sincronizar Columnas se debe modificar la columna rh_resoluciones_he_ID sobre la tabla 'rh_horas_extra_x_direccion' y verificar la opción Columna de Enlace a Tabla Padre - Esa columna tambien como valor en el campo referecia deberia tener TableDir.
  2. Luego se debe ir a la tabla 'rh_direccion', editar la columna 'nombre' y activar el checkbox de Identificador. Esto es para cuando se le hace referencia en una vista (por ejemplo un combo box) se liste este campo.

Ventana con pestañas

En este punto probablemente seria util chequear que las tablas la db estan correctamente creadas.

  1. En Ventana, Pestaña y campo vamos a crear una ventana con 2 pestañas. En la pestaña de Ventana creamos una con el nombre 'Gestionar Horas extra'.
  2. Luego vamos a la parte de Pestaña y creamos una llamada 'Resoluciones' que hace referencia a la tabla 'rh_resoluciones_he'. Creamos los campos y guardamos.
  3. Despues creamos otra llamada 'Horas extra' y le seteamos la tabla 'rh_horas_extra_x_direccion', en Nivel de Pestaña ponemos '1', creamos los campos y guardamos.
  4. Parado en la pestaña 'Horas extra', nos vamos a Campos y configuramos el campo 'rh_resoluciones_he' como de solo lectura.


Es necesario aclarar que no hace falta modificar otros campos que no sean el nombre y la tabla, mas adelante vemos que el detalle toma los argumentos sin mas configuración que esta. Lo mas importante de esta parte es que 'Resoluciones' tenga Nivel de Pestaña = 0 y 'Horas extra' Nivel de Pestaña = 1.
Un poquito de resolución de problemas:

  • Si el combo box de direcciones les aparece vacio, es que, o no tienen direcciones dadas de alta o no se seteo el campo Identificador en la columna nombre de la tabla 'rh_direccion'.
  • Si cuando abren la ventana tienen las 2 pestañas con el mismo nombre, probablemente sin querer, eso mismo hicieron, y cuando modificaron el nombre no tomo los cambios. A mi cuando me pasa eso tengo que borrar la ventana y volver a crearla (previo borrar el link en el menú).

Reportes

Reporte basico

Reporte reporte con parámetros

Procesos

Trabajo en equipo

Paquetes

Elementos

Los elementos son la forma en la que el Adempiere intenta unificar el vocabulario y la nomenclatura de las tablas. Estan asociados con una o mas columnas y estandarizan el nombre y la descripcion de las mismas,tanto para el Adempiere como para su creacion en la base de datos, con lo que no se pueden crear 2 elementos que tengan el mismo nombre de columna en 2 tablas distintas. Como detalle un elemento no tiene porque ser del mismo tipo en 2 columnas distintas.

Por ejemplo:

  • Si tengo un elemento Año, con nombre de columna anio, siempre que tenga una tabla con una columna que sea un elemento Año, siempre va a tener el mismo nombre en la DB y descripcion dentro del Adempiere.
  • Las PKs de las tablas(de las cuales se crea un elemento por cada una) siguen el formato tabla_ID.
  • Las FKs son elementos PK de la tabla a la que hacen referencia.

Referencias:
http://www.adempiere.com/index.php/Table_Prefix