Custom Reporting -- Creating an Establishment Report - 4.0.9 - ES: Difference between revisions

From IHRIS Wiki
No edit summary
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 3: Line 3:
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.
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 [[Setting An Establishment | las instrucciones]] acerca de fijar un establecimiento antes de proceder.   
Tal vez desee leer [[Setting An Establishment | the instructions]] acerca de fijar un establecimiento antes de proceder.   


Para los fines de este tutorial, asumiremos que nos interesan los establecimientos de "Nomas de Personal" para el año 2010.
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).
'''Nota:''' En esta relación, asumimos que ha fijado el establecimiento/normas de personal de forma consistente en (job,facility).
Line 11: Line 11:


==Generalidades==
==Generalidades==
Primero iniciamos creando una relación de desacuerdo. Asumiremos que ya está familiarizado con la creación de informes personalizados, como por ejemplo en [[Custom Reporting -- Creating a Staff List Example|Creating A Staff List]].
Primero iniciamos creando una relación de varianza. Asumiremos que ya está familiarizado con la creación de informes personalizados, como por ejemplo en [[Custom Reporting -- Creating a Staff List Example|Creating A Staff List]].


A continuación necesitamos seleccionar los campos que deseamos incluir en el informe.
A continuación necesitamos seleccionar los campos que deseamos incluir en el informe.
Line 26: Line 26:
**Bajo el formulario "establishment" vamos a '''join''' en el formulario "facility" vinculado por el campo "establishment+location".  <br/>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 formulario "establishment" vamos a '''join''' en el formulario "facility" vinculado por el campo "establishment+location".  <br/>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".  <br/>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 "establishment" vamos a '''join''' el formulario "job" vinculado por el campo "establishment+job_cadre".  <br/>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".  <br/>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 cadapuesto 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.
***Bajo el formulario "job",  haremos un '''join''' en el formulario "position" a través del campo "position+job".  <br/>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.
****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."  <br/>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)
****A continuación necesitamos '''join''' el "person_position" al formulario "position" para que "person_position+position" = "position+id."  <br/>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)
Line 35: Line 35:
La relación resultante debería verse como la mitad superior de [[Media:staffing_norm_variance.png | '''this''']]
La relación resultante debería verse como la mitad superior de [[Media:staffing_norm_variance.png | '''this''']]


===Vincular un Formulario===
Para explicar un poco la vinculación, el módulo "establishment" tiene dos campos:
# El campo "location" que es un campo mapeado que puede ser "facility" o "facility_type"
# El campo "job_cadre" que es un campo mapeado que puede ser  "job" o "cadre"
Vincular el formulario position al formulario  "facility" ''[[#Ancestor Forms|ancestral]]'' resultará en que solo se llene el informe donde el formulario "position" tenga su "facility" mapeando al formulario facility en la relación.


===Linking a Form===
==Agregar las Funciones de Relación==
To explain a bit about the linking, the "establishment" module has two fields:
Ahora que hemos creado nuestra relación base, necesitamos crear dos funciones de relación. 
# The "location" field which is a mapped field that can either be a "facility" or a "facility_type"
# The "job_cadre" field which is a mapped field that can be either a "job" or a "cadre"
Linking the position form to the ''[[#Ancestor Forms|ancestral]]'' "facility" form will result that you only populate the report where the "position" form has its "facility" mapping to the facility form in the relationship


==Adding the Relationship Functions==
===Agregar el Total de Puestos===
Now that we have created our base relationship, we need to create two relationship functions. 
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:
===Aggregate Total Positions===
Recall, that when we joined in the  base relationship has a copy of the establishment form for each triple of (facility,job,position).  We really only want to have a copy of the establishment form once for each pair (facility,job) and we only want the total number of positions for each pair (facility,job), not the positions themselvesThus our first step is to create an "aggregating" function:
*Under "Functions" create a new function called "filled_positions" that has:
**SQL Query: count(`position+id`)     
**SQL Query: count(`position+id`)     
**Description: Filled Positions
**Description: Puestos Ocupados
**Form Field: I2CE_FormField_INT
**Form Field: I2CE_FormField_INT
**Aggregate: position,person_position <br/>Note: you can only set the aggregate once you have created "filled_positions." Edit it and set it so that it aggregates on the position form as indicated.
**Aggregate: position,person_position <br/>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ó.


===Variance===
===Varianza===
Now that we have a function to get the total number of positions for each pair of (facility,job) we want to display the variance -- the difference between the establishment and the filled positions.  Since we will have needed to do the count(`position+id`) first, we will need to make the 'variance' a dependent function of the 'filled_positions'.  The actual establishment number is stored in the "amount" field of the "establishment" form which is the primary form in the relationshipSo to create the function we do:
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ónAsí que hacemos esto para crear la función:
*Go under 'filled_positions'  
*Vaya bajo 'filled_positions'  
*Click 'Dependent Functions'
*Haga click en 'Dependent Functions'
*Click 'Add a new function' and add a function with these properties:
* Haga click en 'Add a new function' y agregue una función con estas propiedades:
**SQL Query: `primary_form+amount` - `+filled_positions`
**SQL Query: `primary_form+amount` - `+filled_positions`
**Description: Variance Between Establishment and Filled Positions
**Description: Varianza entre Establecimientos y Puestos Ocupados
**Form Field: I2CE_FormField_INT
**Form Field: I2CE_FormField_INT
Note here that all functions in the SQL query have a + automatically added to the beginning of their name
Nótese  que aquí a todas las funciones en SQL query se les agrega un + automáticamente al inicio de su nombre






The resulting functions should look like the lower half of [[Media:staffing_norm_variance.png | '''this''']]
Las funciones resultantes deberían de verse como la mitad de abajo de [[Media:staffing_norm_variance.png | '''esto''']]


==Creating The Report==
==Crear el Informe==
We create a report view based on the "staff_norm_2010" relationship with the following forms and field settings:
Creamos una visualización de informe basada en la relación "staff_norm_2010" con las siguientes normas y ajustes de campos:
*The primary form (establishment)'s amount field is enabled with header "Establishment"
*El campo amount del formulario primario (establishment) está habilitado con el encabezado "Establishment"
*The job form has the field title enabled with header "Job"
*El formulario job tiene el campo title habilitado con el encabezado "Job"
*The facility form has the field title enabled with header "Facility"
* El formulario facility tiene el campo title habilitado con el encabezado "Facility"
*The function 'filled_position' is enabled with header "Filled Positions"
*La función 'filled_position' se habilita con el encabezado "Filled Positions"
*The function 'variance' is enabled with header "Variance"
* La función 'variance' se habilita con el encabezado "Variance"


==Creating The Report View==
==Crear la Visualización del Informe==
You may now create a report view based on the staff_norm_2010 report
Ahora puede crear una visualización de informe basada en el informe staff_norm_2010  




==Variations of the Relationship==
==Variaciones de la Relación==
In the above we assume that you have set the establishment on the pairs (job,facility).  However, you may have set the establishment differently.
En lo anterior asumimos que fijo el establishment en los pares (job,facility).  Sin embargo, puede que haya fijado el de forma distinta.
*If you set it on the pairs (cadre,facility) then in the relationship, instead of joining job to the establishment form, you would join cadre (right join with multiples).  Then under the cadre form you would join job (right join with multiples).  The rest would proceed as before.
*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.
*If you set in on the pairs (job,facility_type) then in the relationship, instead of joining facility to the establishment form, you would join facility_type (right join with multiples).  The under the facility_type form you would join facility (right join with multiples).  The rest would proceed as before.
* 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.
*If you set it on the pairs (cadre,facility_type) then in the relationship, instead of joining job to the establishment form, you would join cadre (right join with multiples).  Then under the cadre form you would join job (right join with multiples). Also, instead of joining facility to the establishment form, you would join facility_type (right join with multiples).  The under the facility_type form you would join facility (right join with multiples).  The rest would proceed as before.
* 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.


==Ancestor Forms==
==Formularios Ancestros==
An "ancestor" form in a relationship is any form at a higher level in the current form in the relationship hierarchy. In the above example we have the hierarchy:
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
*person_position
**position
**position
Line 95: Line 94:
****cadre
****cadre
   
   
In this hierarchy, we have the following ancestors:
En esta jerarquía, tenemos los ancestros siguientes:
*person_position: has no ancestors
*person_position: no tiene ancestros
*position: has person_position as an ancestor
*position: tiene  person_position como ancestro
*facility:has person_position and position as ancestors
*facility: tiene person_position y position como ancestro
*job:has person_position and position as ancestors
*job: tiene person_position y position como ancestros
*facility_type: has person_position, position, facility, ''and job'' as ancestors
*facility_type: tiene person_position, position, facility, y ''job'' como ancestros
*cadre: has person_position, position, job, ''and facility'' as ancestors
*cadre: tiene person_position, position, job, y ''facility'' como ancestros
*establishment: has person_position, position, ''job'', facility, ''cadre'' and facility_type as ancestors
*establishment: tiene person_position, position, ''job'', facility, ''cadre'' y facility_type como ancestros

Latest revision as of 23:23, 7 October 2013

É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