Custom Reporting -- Creating an Establishment Report - 4.0.9 - ES

From IHRIS Wiki
Revision as of 23:23, 7 October 2013 by Karla Matus (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Éste tutorial aplica para la versión 4.0.9 y posteriores de iHRIS Manage. Para ver este tutorial para versiones distintas del software vea:

. También pondremos algo sobre funciones de agregación a las relaciones que es un tema nuevo presentado aquí.

En este tutorial discutimos como hacer un informe de establecimientos. Este informe mostrará el número total de personal por puesto y localidad en un establecimiento especifico.

Tal vez desee leer the instructions acerca de fijar un establecimiento antes de proceder.

Para los fines de este tutorial, asumiremos que nos interesan los establecimientos de "Staffing Norm" para el año 2010.

Nota: En esta relación, asumimos que ha fijado el establecimiento/normas de personal de forma consistente en (job,facility).


Generalidades

Primero iniciamos creando una relación de varianza. Asumiremos que ya está familiarizado con la creación de informes personalizados, como por ejemplo en Creating A Staff List.

A continuación necesitamos seleccionar los campos que deseamos incluir en el informe. Finalmente creamos una visualización de reporte para mostrar el total de puestos en el establecimiento.

Al crear esta relación, seria de ayuda conocer las diferencias entre JOIN, LEFT JOIN y RIGHT JOIN en SQL. Estos son algunos lugares donde puede leer sobre esto:

Crear la Relación Base

Solo nos interesan los puestos actuales en el sistema. Necesitamos crear una relación de formulario de la siguiente manera:

  • Cree una relación de formulario nueva llamada "staff_norms_2010" con el formulario primario "establishment"
    • Ahoralimite el formulario "establishment", para que el campo "establishemnt_period" sea igual a "Staffing Norm - 2010" o a cualquiera que sea el establecimiento con el que desea trabajar.
    • Bajo el formulario "establishment" vamos a join en el formulario "facility" vinculado por el campo "establishment+location".
      Nota: Es importante que este formulario este adjuntado como Left Join y que permita múltiples adjuntos. De esta manera obtenemos una copia del formulario establishment apropiado para cada "facility" en el sistema.
    • Bajo el "establishment" vamos a join el formulario "job" vinculado por el campo "establishment+job_cadre".
      Nota: Es importante que este formulario este adjuntado como Left Join y que permita múltiples adjuntos. De esta manera obtenemos una copia del formulario establishment de cada empleo en el sistema. Combinando con lo adjunto para la localidad, obtendremos una copia del formulario establishment apropiado para cada par único de (facility,job) en el sistema.
      • Bajo el formulario "job", haremos un join en el formulario "position" a través del campo "position+job".
        Nota: Es importante que este formulario este adjuntado como Left Join y que permita múltiples adjuntos. De esta manera obtenemos una copia del formulario job para cada puesto en el sistema que se vincule con ese empleo. Combinando con lo adjunto para la localidad y empleo para el formulario de establishment, y una vez que hayamos hecho la vinculación en el próximo paso, obtendremos una copia del formulario establishment apropiado para cada trio único de (facility,job,position) en el sistema.
        • Vamos a link el formulario de "position" para que el campo "position+facility" sea igual que el campo "facility+id". Esto es para asegurarse que el puesto coincida con la localidad y empleo al que el formulario establishment está haciendo referencia.
        • A continuación necesitamos join el "person_position" al formulario "position" para que "person_position+position" = "position+id."
          Nota: Es importante que este sea un JOIN con un límite de uno. (si es left join, recibirá todos los puestos aun si no están ocupados)
          • Sea cual sea el número de personas que hayan tenido este puesto durante los años, queremos escoger el puesto más reciente. También queremos asegurarnos que estén empleados actualmente. Así que necesitamos agregar dos límites al formulario "person_position" para que:
            • start_date no es nulo (para indicar que alguien tuvo ese puesto)
            • end_date es nulo (para indicar que el puesto aun está siendo ocupado por alguien)

La relación resultante debería verse como la mitad superior de this

Vincular un Formulario

Para explicar un poco la vinculación, el módulo "establishment" tiene dos campos:

  1. El campo "location" que es un campo mapeado que puede ser "facility" o "facility_type"
  2. El campo "job_cadre" que es un campo mapeado que puede ser "job" o "cadre"

Vincular el formulario position al formulario "facility" ancestral resultará en que solo se llene el informe donde el formulario "position" tenga su "facility" mapeando al formulario facility en la relación.

Agregar las Funciones de Relación

Ahora que hemos creado nuestra relación base, necesitamos crear dos funciones de relación.

Agregar el Total de Puestos

Recuerde, que cuando adjuntamos la relación base posee una copia del formulario establishment para cada trio de (facility,job,position). En realidad solo queremos una copia del formulario establishment una vez por cada par (facility,job) y solo queremos el total de puestos por cada par (facility,job), no los puestos en sí. Por lo que nuestro primer paso es crear una función "aggregating":

  • Bajo "Functions" cree una nueva function llamada "filled_positions" que tenga:
    • SQL Query: count(`position+id`)
    • Description: Puestos Ocupados
    • Form Field: I2CE_FormField_INT
    • Aggregate: position,person_position
      Nota: solo se puede fijar el aggregate una vez que ha creado "filled_positions." Edítelo y ajústelo para que el aggregates en el formulario position de la manera en que se indicó.

Varianza

Ahora que tenemos una función para obtener el número total de puestos para cada par (facility,job) queremos mostrar la varianza – la diferencia entre el establishment y filled positions. Ya que hemos necesitado hacer el count(`position+id`) primero, tendremos que hacer de 'variance' una función dependiente de 'filled_positions'. El número real de establecimientos está guardado en el campo "amount" del formulario "establishment" que es el formulario primario en la relación. Así que hacemos esto para crear la función:

  • Vaya bajo 'filled_positions'
  • Haga click en 'Dependent Functions'
  • Haga click en 'Add a new function' y agregue una función con estas propiedades:
    • SQL Query: `primary_form+amount` - `+filled_positions`
    • Description: Varianza entre Establecimientos y Puestos Ocupados
    • Form Field: I2CE_FormField_INT

Nótese que aquí a todas las funciones en SQL query se les agrega un + automáticamente al inicio de su nombre


Las funciones resultantes deberían de verse como la mitad de abajo de esto

Crear el Informe

Creamos una visualización de informe basada en la relación "staff_norm_2010" con las siguientes normas y ajustes de campos:

  • El campo amount del formulario primario (establishment) está habilitado con el encabezado "Establishment"
  • El formulario job tiene el campo title habilitado con el encabezado "Job"
  • El formulario facility tiene el campo title habilitado con el encabezado "Facility"
  • La función 'filled_position' se habilita con el encabezado "Filled Positions"
  • La función 'variance' se habilita con el encabezado "Variance"

Crear la Visualización del Informe

Ahora puede crear una visualización de informe basada en el informe staff_norm_2010


Variaciones de la Relación

En lo anterior asumimos que fijo el establishment en los pares (job,facility). Sin embargo, puede que haya fijado el de forma distinta.

  • Si lo fija en los pares (cadre,facility) luego, en la relación, en lugar de adjuntar job al formulario establishment, adjuntaría cadre (right join con múltiples). Luego bajo el formulario cadre form adjuntaría job (right join con múltiples). Lo demás procedería como antes.
  • Si lo fija en los pares (job,facility_type) luego, en la relación, en lugar de adjuntar facility al formulario establishment, adjuntaría facility_type (right join con múltiples). Luego bajo el formulario facility_type adjuntaría facility (right join con múltiples). Lo demás procedería como antes.
  • Si lo fija en los pares (cadre,facility_type) luego, en la relación, en lugar de adjuntar job al formulario establishment, adjuntaría cadre (right join con múltiples). Luego bajo el formulario cadre adjuntaría job (right join con múltiples).También, en lugar de adjuntar facility al formulario establishment, adjuntaría facility_type (right join con múltiples). Luego bajo el formulario facility_type adjuntaría facility (right join con múltiples). Lo demás procedería como antes.

Formularios Ancestros

Un formulario "ancestro" en una relación es cualquier formulario en un nivel mayor en la jerarquía de la relación en el formulario actual de la relación. En el ejemplo anterior tenemos la jerarquía:

  • person_position
    • position
      • facility
        • facility_type
          • establishment
      • job
        • cadre

En esta jerarquía, tenemos los ancestros siguientes:

  • person_position: no tiene ancestros
  • position: tiene person_position como ancestro
  • facility: tiene person_position y position como ancestro
  • job: tiene person_position y position como ancestros
  • facility_type: tiene person_position, position, facility, y job como ancestros
  • cadre: tiene person_position, position, job, y facility como ancestros
  • establishment: tiene person_position, position, job, facility, cadre y facility_type como ancestros