Ejemplo Implementacion
Contents
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
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 tablaVamos a implementar la tabla de Direcciones (rh_direccion).
Creación de Ventana
Ahora ya puede probar el correcto funcionamiento del ABM. |
Los pasos genericos para crear una ventana simple (1 ventana = 1 pestaña) son:
|
Maestro/detalle
Creacion de tablas
- 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.
- 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.
- 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'.
- 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.
- 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.
- 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