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

From IHRIS Wiki
No edit summary
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
Éste tutorial  
É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:{{otherversions|Creating an Establishment Report}}.  También pondremos algo sobre funciones de agregación a las relaciones que es un tema nuevo presentado aquí.
applies to version 4.0.9 and later of iHRIS Manage.  To see this tutorial for different versions of the software see the following:{{otherversions|Creating an Establishment Report}}.  We will also be adding some aggregating functions to the relationship which are a new topic introduced here.


In this tutorial we discuss how to make an establishment reportThis report will show the total number
En este tutorial discutimos como hacer un informe de establecimientosEste informe mostrará el número total de personal por puesto y localidad en un establecimiento especifico.
of current staff by cadre and facility against a set establishment.


You may wish to read [[Setting An Establishment | the instructions]] on setting an establishment before proceeding.   
Tal vez desee leer [[Setting An Establishment | the instructions]] acerca de fijar un establecimiento antes de proceder.   


For the purposes of this tutorial, we will assume that we are interested in the "Staffing Norm" establishments for the year 2010.
Para los fines de este tutorial, asumiremos que nos interesan los establecimientos de "Staffing Norm" para el año 2010.


'''Note:''' In this relationship, we are assuming that you have set the establishment/staffing norms consistently on (job,facility).
'''Nota:''' En esta relación, asumimos que ha fijado el establecimiento/normas de personal de forma consistente en (job,facility).




==Overview==
==Generalidades==
We first start by creating a variance relationship. We will assume that you are already familiar with creating custom reports, for example as in  [[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]].


Next we will need to select the fields we wish to include in the report.
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.


Finally we will create a report view to display the total positions against the establishment.
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:
 
In creating this relationship, it would be helpful to know the differences between JOIN, LEFT JOIN and RIGHT JOINs in SQL.  Here are a few places you can read:
*[http://www.wellho.net/mouth/158_MySQL-LEFT-JOIN-and-RIGHT-JOIN-INNER-JOIN-and-OUTER-JOIN.html join explanation ]
*[http://www.wellho.net/mouth/158_MySQL-LEFT-JOIN-and-RIGHT-JOIN-INNER-JOIN-and-OUTER-JOIN.html join explanation ]
*[http://phpweby.com/tutorials/mysql/32 left vs right join]
*[http://phpweby.com/tutorials/mysql/32 left vs right join]


==Creating the Base Relationship==
==Crear la Relación Base==
We are only interested in the current positions in the system. We create a new form relationship as follows:
Solo nos interesan los puestos actuales en el sistema. Necesitamos crear una relación de formulario de la siguiente manera:
*Create a new form relationship called "staff_norms_2010" with the primary form "establishment"
*Cree una relación de formulario nueva llamada "staff_norms_2010" con el formulario primario "establishment"
**Now '''limit''' the "establishment" form, so that the the "establishemnt_period" field equals "Staffing Norm - 2010" or whichever establishment you wish to work with.
**Ahora'''limite''' 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.
**Under the "establishment" form we will '''join''' in the "facility" form linked by the "establishment+location" field.  <br/>Note: It is important that this form is joined as a Left Join and to allow multiple joins. In this way we get a copy of the appropriate establishment form for each "facility" in the system.
**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.
**Under the "establishment" form we will '''join''' in the "job" form linked by the "establishment+job_cadre" field.  <br/>Note: It is important that this form is joined as a Left Join and to allow multiple joins.   This way we get a copy of the establishment form for each job in the systemCombining with the join for the facility, we will now get a copy of the appropriate establishment form for each unique pair of (facility,job) in the system.
**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 sistemaCombinando con lo adjunto para la localidad, obtendremos una copia del formulario establishment apropiado para cada par único de (facility,job) en el sistema.
***Under the "job" form, we will '''join''' in the "position" form via the "position+job" field.  <br/>Note: It is important that this form is joined as a Left Join and to allow multiple joins.   This way we get a copy of the job form for each position in the system that links to that job.  Combining with the joins for the facility and job to the establishment form, and once we have done the linking in the next step, we will now get a copy of the appropriate establishment form for each unique triple of (facility,job,position) in the system.
***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 empleoCombinando 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.
****We will '''link''' the "position" form so that the "position+facility" field is the same as the "facility+id" fieldThis is to ensure that the position matches both the facility and job that the establishment form is referencing.
****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.
****Next we need to '''join''' the "person_position" to the "position" form so that "person_position+position" = "position+id."  <br/>Note: It is important that this is a ''JOIN'' with a limit of one.  (if it is left join, you will be picking up all positions even if they are not filled)
****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)
*****As many people may have held this position over the years, we will want to choose the most recent position. We will also want to make sure that they are currently employed. So we need to add two limit the "person_position" form so that:
*****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 is notnull (to indicate that some held this position)
******start_date no es nulo (para indicar que alguien tuvo ese puesto)
******end_date is null (to indicate that this position is ''still'' being held by someone)
******end_date es nulo (para indicar que el puesto ''aun'' está siendo ocupado por alguien)
 
The resulting relationship should look like the upper half of [[Media:staffing_norm_variance.png | '''this''']]


La relación resultante debería verse como la mitad superior de [[Media:staffing_norm_variance.png | '''this''']]


===Linking a Form===
===Vincular un Formulario===
To explain a bit about the linking, the "establishment" module has two fields:
Para explicar un poco la vinculación, el módulo "establishment" tiene dos campos:
# The "location" field which is a mapped field that can either be a "facility" or a "facility_type"
# El campo "location" que es un campo mapeado que puede ser "facility" o "facility_type"
# The "job_cadre" field which is a mapped field that can be either a "job" or a "cadre"
# El campo "job_cadre" que es un campo mapeado que puede ser  "job" o "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
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.


==Adding the Relationship Functions==
==Agregar las Funciones de Relación==
Now that we have created our base relationship, we need to create two relationship functions.   
Ahora que hemos creado nuestra relación base, necesitamos crear dos funciones de relación.   


===Aggregate Total Positions===
===Agregar el Total de Puestos===
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:
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":
*Under "Functions" create a new function called "filled_positions" that has:
*Bajo "Functions" cree una nueva function llamada "filled_positions" que tenga:
**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 98: 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