Custom Reporting -- Creating a Staff List Example - ES: Difference between revisions

From IHRIS Wiki
No edit summary
 
(5 intermediate revisions by one other user not shown)
Line 4: Line 4:
*Cree un [[Custom Reporting -- Creating Report Views| report view]] personalizado para el staff report. <br/>Las diferentes visualizaciones de un informe están pensadas para que usuarios no-administrativos vean los datos en el sistema.
*Cree un [[Custom Reporting -- Creating Report Views| report view]] personalizado para el staff report. <br/>Las diferentes visualizaciones de un informe están pensadas para que usuarios no-administrativos vean los datos en el sistema.


En realidad, esto es un proceso de cuatro pasos, siendo el primer paso decidir que datos desea y donde están guardados.  Supongamos que tenemos el siguiente formulario de requerimiento de un HR Manager:
En realidad, esto es un proceso de cuatro pasos, siendo el primer paso decidir qué datos desea y donde están guardados.  Supongamos que tenemos el siguiente formulario de requerimiento de un Gerente de RH:
  Requerimiento: Cree una lista de personal con el puesto y localidad de cada persona  
  Requerimiento: Cree una lista de personal con el puesto y localidad de cada persona  


Line 10: Line 10:


==El Formulario y Mapa de Campo==
==El Formulario y Mapa de Campo==
Un buen punto de inicio es ver el [[iHRIS Manage Form Fields | forms and fields]] y en especial la "visualización gráfica" que es un mapa de los formularios y campos en iHRIS Manage.  Cuando construimos una buena relación de formulario, entonces '''adjuntamos''' formularios al cruzar las flechas en el formulario de mapa de campos, tanto hacia adelante como hacia atrás. Hay dos flechas en este mapa:
Un buen punto de inicio es ver el [[iHRIS Manage Form Fields | forms and fields]] y en especial la "graphic visualization" que es un mapa de los formularios y campos en iHRIS Manage.  Cuando construimos una buena relación de formulario, entonces '''adjuntamos''' formularios al cruzar las flechas en el formulario de mapa de campos, tanto hacia adelante como hacia atrás. Hay dos flechas en este mapa:
*flechas negras: El nacimiento de una flecha, formA, se relaciona al objetivo de el formulario flecha, formB,  a través de un campo mapeado.  Si la flecha no está etiquetada, entonces el campo mapeado también es nombrado formB. De otra manera es la etiqueta de la flecha.  Aunque, formA se mapea sólo a una instancia de formB, pueden haber muchas instancias de formA mepeadas desde formB.  Así, cuando vaya hacia atrás en una flecha negra, probablemente tendrá que limitar el formulario adjunto para que se elija un único formulario.  
*flechas negras: El nacimiento de una flecha, formA, se relaciona al objetivo del formulario flecha, formB,  a través de un campo mapeado.  Si la flecha no está etiquetada, entonces el campo mapeado también es nombrado formB. De otra manera es la etiqueta de la flecha.  Aunque, formA se mapea sólo a una instancia de formB, pueden haber muchas instancias de formA mapeadas desde formB.  Así, cuando vaya hacia atrás en una flecha negra, probablemente tendrá que limitar el formulario adjunto para que se elija un único formulario.  
*flechas rojas:  El nacimiento de una flecha, formA, es el originario del objetivo de la flecha, formB.  Puede que formA tenga instancias de formB como un formulario secundario, pero formB sólo puede tener un formulario primario.  Así, cuando vaya hacia adelante en una flecha roja, probablemente tendrá que limitar el formulario secundario para que se elija un único formulario secundario.
*flechas rojas:  El nacimiento de una flecha, formA, es el originario del objetivo de la flecha, formB.  Puede que formA tenga instancias de formB como un formulario secundario, pero formB sólo puede tener un formulario primario.  Así, cuando vaya hacia adelante en una flecha roja, probablemente tendrá que limitar el formulario secundario para que se elija un único formulario secundario.


==Paso 0: ¿Qué datos desea?==
==Paso 0: ¿Qué datos desea?==
Este es el paso más importante, y requiere algunos conocimientos más amplios de cómo se utilizan los datos (formularios) en el sistema.   
Este es el paso más importante, y requiere algunos conocimientos más amplios de cómo se utilizan los datos (formularios) en el sistema.   
Basándose en el requerimiento del HR Manager y el formulario y campo vemos que tenemos que incluir los formularios siguientes:
Basándose en el requerimiento del Gerente de RH y el formulario y campo vemos que tenemos que incluir los formularios siguientes:
*''facility'':  necesitamos el nombre del local
*''facility'':  necesitamos el nombre del local
*''job'':  necesitamos saber el puesto que desempeña la persona
*''job'':  necesitamos saber el puesto que desempeña la persona
*''person'': aunque no está dicho de forma explícita como requerimiento, asumamos que el HR Manager también quiere saber el nombre de los miembros del personal
*''person'': aunque no está dicho de forma explícita como requerimiento, asumamos que el Gerente de RH también quiere saber el nombre de los miembros del personal
Sin embargo, si vemos el mapa de datos, podemos observar que no hay flechas que conecten directamente los formularios ''facility'', ''job,'' y ''person''.  En lugar de eso vemos que necesitamos ir del formulario ''person'', hacia el formulario ''person_position'' hacia el formulario ''position''.  Desde el formulario position, podemos adjuntar el facility y job.  Esta es la parte relevante del formulario mapa de campo:
Sin embargo, si vemos el mapa de datos, podemos observar que no hay flechas que conecten directamente los formularios ''facility'', ''job,'' y ''person''.  En lugar de eso vemos que necesitamos ir del formulario ''person'', hacia el formulario ''person_position'' hacia el formulario ''position''.  Desde el formulario position, podemos adjuntar el facility y job.  Esta es la parte relevante del formulario mapa de campo:


Line 26: Line 26:
Nótese que sólo hay una flecha roja, conectando ''person'' y ''person_position,''  mientras que el resto de las flechas son negras.
Nótese que sólo hay una flecha roja, conectando ''person'' y ''person_position,''  mientras que el resto de las flechas son negras.


==Paso 1: Cree el Formulario de Relació==
==Paso 1: Cree el Formulario de Relación==
Crearemos un formulario de relación llamado 'staff_info'.  El formulario del cual empezamos el desplasamiento de nuestro mapa se llama ''primary form.''  Estamos en libertad de escoger desde donde queremos iniciar el mapeo, pero seleccionae diferentes formularios primarios producira un grupo de datos diferentes. Hay tres relaciones principales que podemos crear que se basan en cual formulario principal escojamos.   
Crearemos un formulario de relación llamado 'staff_info'.  El formulario del cual empezamos el desplazamiento de nuestro mapa se llama ''primary form.''  Estamos en libertad de escoger desde donde queremos iniciar el mapeo, pero seleccionar diferentes formularios primarios producirá un grupo de datos diferentes. Hay tres relaciones principales que podemos crear que se basan en cual formulario principal escojamos.   
*[[#Option A:  Person Report | Option A]]: Escoger el formulario ''person'' como el formulario principal. Luego los informes basados en la relación "staff_info" incluirán a todoas las personas en el sistema tengan o no un puesto.
*[[#Opción A:  Informe de Personas | Opción A]]: Escoger el formulario ''person'' como el formulario principal. Luego los informes basados en la relación "staff_info" incluirán a todas las personas en el sistema tengan o no un puesto.
*[[#Option B:  Position Report | Option B]]: Escoger el formulario ''position'' como el formulario principal.  Luego los informes basados en la relación "staff_info" sólo incluirán a las personas en el sistema que tengan un puesto.  También, si hay algunos puestos vacantes, estos aparaeceran en el informe.
*[[#Opción B:  Informe de Puestos| Opción B]]: Escoger el formulario ''position'' como el formulario principal.  Luego los informes basados en la relación "staff_info" sólo incluirán a las personas en el sistema que tengan un puesto.  También, si hay algunos puestos vacantes, estos aparecerán en el informe.
*[[#Option C: Current Position Report| Option C]]: Escoger el formulario ''person_position'' fcomo el formulario principal.  Luego los informes basados en la relación "staff_info" sólo incluiran los puestos ocupados.
*[[#Opción C: Informe de Puestos Actuales| Opción C]]: Escoger el formulario ''person_position'' como el formulario principal.  Luego los informes basados en la relación "staff_info" sólo incluirán los puestos ocupados.


Cualquiera de las opciones tiene sentido y la elección depende de los requerimientos del Gerente de RH.  Ya que el Gerenete de RH no os dió suficientes detalles para guiarnos, tendremos que pedirle que nos aclare este punto.
Cualquiera de las opciones tiene sentido y la elección depende de los requerimientos del Gerente de RH.  Ya que el Gerente de RH no nos dio suficientes detalles para guiarnos, tendremos que pedirle que nos aclare este punto.




===Option A: Person Report===
===Opción A: Informe de Personas===
Select '''Configure System''' and then '''Form Relationships.''' We create a report relationship called 'staff_info' and choose "person" as the primary form, enter a display name and description. Then click update.
Seleccione '''Configure System''' y luego '''Form Relationships.''' Creamos un informe de relación llamado 'staff_info' y elegimos "person" como el formulario primario, escribimos un nombre y descripción. Luego hacemos click en update.
<center>
<center>
[[File:screenshot-create-relationship.gif]]
[[File:screenshot-create-relationship.gif]]
</center>
</center>
Now that we have created the 'staff_info' relationship we can '''edit''' it. Now we need to join the "person_position" form to the "position" formTo do this click '''Joined Forms''' then '''Add a New Form'''.  Select ''person_position (child)" as the form to add, and the the "short name" to be 'person_position.'  You should also set a display name and description for this form.
Ahora que hemos creado la relación 'staff_info' la podemos '''editar''' . Ahora necesitamos adjuntar el formulario "person_position" al formulario  "position" .  Para hacer esto haga click en '''Joined Forms''' y luego en  '''Add a New Form'''.  Seleccione ''person_position (child)" como el formulario a adjuntar, y el "short name" como 'person_position.'  También debería escoger un nombre y descripción para este formulario.
<center>
<center>
[[File:Screenshort-join-person-position.gif]]
[[File:Screenshort-join-person-position.gif]]
</center>
</center>
You will notice that we are traversing a red arrow forward, form ''person'' to ''person_position.''  By what we said above there may be many ''person_position''s associated to a person, so we will need to limit the formsWe will need to limit the ''person_position'' form so that:
Notará que estamos trazando una fleche roja hacia adelante, de ''person'' a ''person_position.''  Según lo que dijimos anteriormente pueden haber muchas ''person_position'' asociadas a una persona, así que tendremos que limitar los formulariosTendremos que limitar el formulario ''person_position'' para que:
*The ''start_date'' is maximal among all the values of the ''start_date'' field for any ''person_position'' that is a child of the current ''person'' .  This way we get the most recent position the person has started.
*La ''start_date'' sea máxima entre todos los valores del campo ''start_date'' para cualquier ''person_position'' que sea secundaria a la actual ''person'' .  De esta manera obtenemos el puesto más reciente que la persona haya iniciado.
*The ''end_date'' is not null, so that we know that person still holds this position.
*La ''end_date'' no es nula, Para que sepamos que la persona aún mantiene su puesto.
To do so, we click on '''Joined Forms''' once again and select '''Person Position (person_position),''' which is the form that we just addedNow we can choose to '''Limit This Form.''' Since we have two limits to place on this form, we will need to select the "Operator Node" to be "And."
Para esto, hacemos click en '''Joined Forms''' de Nuevo y seleccionamos '''Person Position (person_position),''' que es el formulario que acabamos de agregarAhora podemos elegir  '''Limit This Form.''' Ya que tenemos dos límites para este formulario, tendremos que seleccionar el Since "Operator Node" para que sea "And."
<center>
<center>
[[File:Screenshot-limit-person-position-AND.png]]
[[File:Screenshot-limit-person-position-AND.png]]
</center>
</center>
Once we click the "Update" button, we can choose to '''Add A New Operand.'''  We will do this twice, once for the 'start_date' and once for the 'end_date.'  Once the operands have been added, we can '''Edit''' each of them and select to '''Limit  By A Field''':
Una vez que hacemos click en el botón "Update", podemos elegir '''Add A New Operand.'''  Haremos esto dos veces, una vez para  'start_date' y una para  'end_date.'  Una vez que los operandos hayan sido agregados, podemos '''Editar''' cada uno de ellos y elegir  '''Limit  By A Field''':
<center>
<center>
[[File:Screenshot-limit-person-position-FIELDS.png]]
[[File:Screenshot-limit-person-position-FIELDS.png]]
</center>
</center>
Now click '''Update''' once againWe can now choose the two fields we want to limit by and how we want to limit them
Ahora haga click en '''Update''' una vez másAhora podemos elegir los dos campos con los que queremos limitar y como queremos limitarlos
<center>
<center>
[[File:Screenshot-limit-person-position-FIELDS2.png]]
[[File:Screenshot-limit-person-position-FIELDS2.png]]
Line 61: Line 61:




Next, we join the ''person'' form to the ''person_position'' form as a parent formWe do this by click '''Joined Forms''' and then '''Add A New Child Form''' underneath the ''person_position'' formNote, we do not need to specify any limits here as we are traversing a black arrow in the correct direction.
A continuación, adjuntamos el formulario ''person'' al formulario ''person_position'' como un formulario primarioHacemos esto al hacer click en '''Joined Forms''' y luego '''Add A New Child Form''' bajo el formulario ''person_position''.  Nótese, no necesitamos especificar ningún límite aquí ya que estamos trazando una flecha negra en la dirección correcta.
<center>
<center>
[[File:Screenshot-join-position.png]]
[[File:Screenshot-join-position.png]]
</center>
</center>
We finish by joining the "facility" and "job" forms to the "position" form by clicking '''Joined Forms''' and then '''Add A New Child Form''' underneath the ''position'' formNote, we do not need to specify any limits here as we are traversing a black arrow in the correct direction.
Terminamos adjuntando los formularios "facility" y "job" al formulario "position"haciendo click en '''Joined Forms''' y luego en '''Add A New Child Form''' bajo el formulario ''position''.  Nótese, no necesitamos especificar ningún límite aquí ya que estamos trazando una flecha negra en la dirección correcta.
==== Variaciones de la Opción A====
*Nota: Existe un potencial para la ambigüedad aquí. Si una persona es asignada a más de un puesto a la vez con la misma ''start_date'', entonces habrá un ''person_position'' para cada uno de los puestos, así que cuando el formulario person_position se adjunte, escogerá uno de los formularios  person_position arbitrariamente.  Si espera que sea posible que las personas puedan tener más de un puesto a la vez, entonces debería de escoger la [[#Opción B:  Informe de Puestos | opción B]]
*Nota: Elegimos limitar el ''end_date'' para que no sea nulo para obtener sólo puestos actuales. Si no pusiéramos un límite en ''end_date,'' obtendríamos el último puesto que la persona tuvo, sin importar si lo mantienen o no.
*Nota: Si seleccionamos ''Drop row if no form found'' bajo el formulario ''person_position'', entonces si una persona no tuviera un formulario person_position asociado, serian eliminados del informe. Elegir hacer esto convertiría a este en un " Informe de Puestos Actuales," en lugar de un " Informe de Puestos." No haremos esto aquí, pero puede elegir hacerlo si tiene sentido para sus requerimientos.


====Variations for Option A====
===Opción B:  Informe de Puestos ===
*Note: There is some potential ambiguity here.  If a person was assigned to more than one position at a time with the same ''start_date'', then there will be a ''person_position'' for each of the positions, so when the person_position form is joined it will choose one of person_position forms arbitrarily. If you expect that people can have more than one position, then you should choose [[#Option B:  Position Report | option B]]
Seleccione '''Configure System''' y luego '''Form Relationships.''' Creamos un informe de relación llamado 'staff_info' y elegimos "position" como el formulario primario, escribimos un nombre y descripción. Luego hacemos click en update.
*Note: We chose to limit the ''end_date'' to be not null so as to only get current positions.  If we did not set a limit on the ''end_date,'' then we would get the last position the person held, regardless of whether they hold it or not.
*Note: If we selected ''Drop row if no form found'' under the ''person_position'' form, then if a person did not have a person_position form associated to them, they would be removed from the report.  Selecting to do so would make this a "Current Staff Report," rather than a "Person Report." We won't do this here, but you may choose to do so if this make sense for your requirements.


===Option B:  Position Report===
Ahora que hemos creado la relación 'staff_info' la podemos editar.
Select '''Configure System''' and then '''Form Relationships.''' We create a report relationship called 'staff_info' and choose "position" as the primary form, enter a display name and description. Then click update.


Now that we have created the 'staff_info' relationship we can edit it.
Primero adjuntamos el formulario "facility" al formulario "position" por el campo mapeado "position."  También adjuntamos el formulario "job" al formulario "position" por el campo mapeado "job."
 
First, we join the "facility" form to the "position" form by the mapped field "position."  We also join the "job" form to the "position" form by the mapped field "job."
    
    
Next we need to join the "person_position" form as mapping to the ''position'' form via the ''position'' fieldIn the form field map, we are traversing a black arrow backwards, so we will need to add in some limits to choose a unique ''person_position'' formThere may be many ''person_positon'' forms mapping to a given ''position'' as multiple people could have held the same positionHowever, there should only be one ''person_position'' form where the ''end_date'' is null and this will correspond to the person currently holding this position.
A continuación debemos adjuntar el formulario "person_position" como mapeo del formulario ''position'' a través del campo ''position''.  En el formulario de mapa de campo, estamos trazando una flecha negra hacia atrás, así que tendremos que agregar algunos límites para elegir un único formulario ''person_position''.  Puede que haya muchos formularios ''person_positon'' mapeados a un  ''position'' específico, así como varias personas pueden haber tenido el mismo puestoSin embargo, solo debería haber un formulario ''person_position'' donde  ''end_date'' es nulo y esto corresponderá a la persona que tiene el puesto actualmente.
 
Next, we join the ''person'' form  as to the ''person_position'' form as its parent form.  Since we are traversing a red arrow backwards, there is no ambiguity about which form we are joining.


====Variations for Option B====
A continuación, adjuntamos el formulario ''person'' al formulario ''person_position'' como su formulario primario.  Ya que estamos trazando una flecha roja hacia atrás, no hay ambigüedad acerca de cuál formulario estamos adjuntando.
*If we chose to "Drop Row If No Form Found"  when we joined in the ''person_position'' form, then we only will show those positions which have ever been assigned to someone so it becomes more of "Filled Positions" report, although not a Current Positions report.


===Option C: Current Position Report===
==== Variaciones de la Opción B====
Select '''Configure System''' and then '''Form Relationships.''' We create a report relationship called 'staff_info' and choose "person_position" as the primary form, enter a display name and description. Then click update.
* Si seleccionamos "Drop Row If No Form Found"  cuando adjuntamos el formulario ''person_position'', entonces sólo se mostraran aquellos puestos que han sido asignados a alguien alguna vez así que se vuelve más un informe de "Puestos Ocupados", pero no un informe de Puestos Actuales.


Now that we have created the 'staff_info' relationship we can edit it.  
===Opción C: Informe de Puestos Actuales===
Seleccione '''Configure System''' y luego '''Form Relationships.''' Creamos un informe de relación llamado 'staff_info' y elegimos " person_position" como el formulario primario, escribimos un nombre y descripción. Luego hacemos click en update.
Ahora que hemos creado la relación 'staff_info' la podemos editar.


First, since we wish to only show the current positions, we will choose to limit the ''person_position'' form so that the end_date is not null.
Primero, ya que solo queremos mostrar los puestos actuales, escogemos limitar el formulario ''person_position'' para que end_date no sea nulo.


Next, we join the ''person'' form which as the parent form of the ''person_position'' formSince we are traversing a red arrow backwards, there is no ambiguity in which ''person'' we are joining.
A continuación, adjuntamos el formulario ''person'' que es el formulario primario del formulario''person_position'' .  Ya que estamos trazando una flecha roja hacia atrás, no hay ambigüedad sobre cual ''person'' estamos adjuntando.


Next we join the ''position'' form to ''person_position'' form via the mapped field ''position.'' Since we are traversing a black arrow forwards, there is no ambiguity in the ''position'' form we are joining.
A continuación adjuntamos el formulario ''position'' al formulario ''person_position'' a través del campo mapeado ''position.'' Ya que estamos trazando una fleche negra hacia adelante, no hay ambigüedad en el formulario ''position'' que estamos adjuntando.


Next we join the ''job'' and ''facility'' forms to the ''position'' form via their respective fieldsAgain, since we are traversing a black arrow forwards, there is no ambiguity in the forms we are joining.
A continuación adjuntamos los formularios ''job'' y ''facility'' al formulario ''position'' a través de sus campos respectivosDe nuevo, como estamos trazando una flecha negra hacia adelante, no hay ambigüedad en los formularios que estamos adjuntando.


====Variations for Option C====
====Variaciones de la Opción C====
*If we chose not to use the limit ''end_date'' is null, we would end up with a report in which shows the history of any position which has been filled.
*Si elegimos no usar el limite ''end_date'' es nulo, terminaríamos con un informe en el que se muestra la historia de cualquier puesto que haya sido ocupado.


==Step 2: Create the Report==
==Paso 2: Crear el Informe==


Now that we have the relationship 'staff_info' built, we can create a report from that relationship. Go to '''Configure System''' and then '''Reports''' and choose to create a new report, called 'staff_report' based on the 'staff_info' relationshipWhen we are done you will see the zebra_staff_report table in the database. Here, we can choose the limits that we will want for the report views (below) as well as all the fields that we may want to see in a report viewTo do so, click on the "Reporting Forms" and then the "Fields" and you will be able to enable or disable fields from the relationship to include in the report. You will also be able  to change the header text for the field and set the limits for the field.
Ahora que construimos la relación 'staff_info' , podemos crear un informe a partir de esa relación. Vaya a '''Configure System''' y luego '''Reports''' y elija crear un informe nuevo, llamado 'staff_report' basado en la relación  'staff_info'.  Cuando terminemos verá la tabla zebra_staff_report en la base de datos. Aquí, podemos escoger los límites que queremos para las visualizaciones del informe (abajo) así como los campos que queramos ver en una visualización delPara hacer esto, haga click en  "Reporting Forms" y luego en "Fields" y podrá habilitar o deshabilitar campos de la relación a incluir en el informe. También podrá cambiar el texto del encabezado para el campo y fijar los límites para el campo.


==Step 3: Create the Report View==
==Paso 3: Crear la Visualización del Informe==
Go to '''Configure System''' and then '''Report Views''' and choose to create a new report view based on the report "staff_report."   Just select the fields you want to display and you are done.
Vaya a '''Configure System''' y luego a '''Report Views''' y elija crear una nueva visualización de informe basado en el informe "staff_report." Simplemente seleccione los campos que quiere mostrar y habrá terminado.


[[Category:Tutorial]][[Category:Reports]][[Category:iHRIS Manage]][[Category:Review2013]]
[[Category:Custom Reporting]][[Category:Spanish]]

Latest revision as of 14:34, 8 November 2013

Éste artículo describe como crear un informe staff info personalizad para iHRIS Manage. Esto es un proceso de tres pasos:

  • Cree el form relationship 'staff_info'.
    Aquí elije los formularios que le interesan y como se relacionan el uno con el otro.
  • Cree un report 'staff_report' personalizado basado en la relación 'staff_info'
    Aquí escoge los campos que desee en su informe de las relaciones que ha creado. También puede escoger a través de que campos limitar todas las visualizaciones de informe creadas de este informe.
  • Cree un report view personalizado para el staff report.
    Las diferentes visualizaciones de un informe están pensadas para que usuarios no-administrativos vean los datos en el sistema.

En realidad, esto es un proceso de cuatro pasos, siendo el primer paso decidir qué datos desea y donde están guardados. Supongamos que tenemos el siguiente formulario de requerimiento de un Gerente de RH:

Requerimiento: Cree una lista de personal con el puesto y localidad de cada persona 


El Formulario y Mapa de Campo

Un buen punto de inicio es ver el forms and fields y en especial la "graphic visualization" que es un mapa de los formularios y campos en iHRIS Manage. Cuando construimos una buena relación de formulario, entonces adjuntamos formularios al cruzar las flechas en el formulario de mapa de campos, tanto hacia adelante como hacia atrás. Hay dos flechas en este mapa:

  • flechas negras: El nacimiento de una flecha, formA, se relaciona al objetivo del formulario flecha, formB, a través de un campo mapeado. Si la flecha no está etiquetada, entonces el campo mapeado también es nombrado formB. De otra manera es la etiqueta de la flecha. Aunque, formA se mapea sólo a una instancia de formB, pueden haber muchas instancias de formA mapeadas desde formB. Así, cuando vaya hacia atrás en una flecha negra, probablemente tendrá que limitar el formulario adjunto para que se elija un único formulario.
  • flechas rojas: El nacimiento de una flecha, formA, es el originario del objetivo de la flecha, formB. Puede que formA tenga instancias de formB como un formulario secundario, pero formB sólo puede tener un formulario primario. Así, cuando vaya hacia adelante en una flecha roja, probablemente tendrá que limitar el formulario secundario para que se elija un único formulario secundario.

Paso 0: ¿Qué datos desea?

Este es el paso más importante, y requiere algunos conocimientos más amplios de cómo se utilizan los datos (formularios) en el sistema. Basándose en el requerimiento del Gerente de RH y el formulario y campo vemos que tenemos que incluir los formularios siguientes:

  • facility: necesitamos el nombre del local
  • job: necesitamos saber el puesto que desempeña la persona
  • person: aunque no está dicho de forma explícita como requerimiento, asumamos que el Gerente de RH también quiere saber el nombre de los miembros del personal

Sin embargo, si vemos el mapa de datos, podemos observar que no hay flechas que conecten directamente los formularios facility, job, y person. En lugar de eso vemos que necesitamos ir del formulario person, hacia el formulario person_position hacia el formulario position. Desde el formulario position, podemos adjuntar el facility y job. Esta es la parte relevante del formulario mapa de campo:

http://www.ihris.org/w/upload/Forms-person-position-map.gif

Nótese que sólo hay una flecha roja, conectando person y person_position, mientras que el resto de las flechas son negras.

Paso 1: Cree el Formulario de Relación

Crearemos un formulario de relación llamado 'staff_info'. El formulario del cual empezamos el desplazamiento de nuestro mapa se llama primary form. Estamos en libertad de escoger desde donde queremos iniciar el mapeo, pero seleccionar diferentes formularios primarios producirá un grupo de datos diferentes. Hay tres relaciones principales que podemos crear que se basan en cual formulario principal escojamos.

  • Opción A: Escoger el formulario person como el formulario principal. Luego los informes basados en la relación "staff_info" incluirán a todas las personas en el sistema tengan o no un puesto.
  • Opción B: Escoger el formulario position como el formulario principal. Luego los informes basados en la relación "staff_info" sólo incluirán a las personas en el sistema que tengan un puesto. También, si hay algunos puestos vacantes, estos aparecerán en el informe.
  • Opción C: Escoger el formulario person_position como el formulario principal. Luego los informes basados en la relación "staff_info" sólo incluirán los puestos ocupados.

Cualquiera de las opciones tiene sentido y la elección depende de los requerimientos del Gerente de RH. Ya que el Gerente de RH no nos dio suficientes detalles para guiarnos, tendremos que pedirle que nos aclare este punto.


Opción A: Informe de Personas

Seleccione Configure System y luego Form Relationships. Creamos un informe de relación llamado 'staff_info' y elegimos "person" como el formulario primario, escribimos un nombre y descripción. Luego hacemos click en update.

Ahora que hemos creado la relación 'staff_info' la podemos editar . Ahora necesitamos adjuntar el formulario "person_position" al formulario "position" . Para hacer esto haga click en Joined Forms y luego en Add a New Form. Seleccione person_position (child)" como el formulario a adjuntar, y el "short name" como 'person_position.' También debería escoger un nombre y descripción para este formulario.

Notará que estamos trazando una fleche roja hacia adelante, de person a person_position. Según lo que dijimos anteriormente pueden haber muchas person_position asociadas a una persona, así que tendremos que limitar los formularios. Tendremos que limitar el formulario person_position para que:

  • La start_date sea máxima entre todos los valores del campo start_date para cualquier person_position que sea secundaria a la actual person . De esta manera obtenemos el puesto más reciente que la persona haya iniciado.
  • La end_date no es nula, Para que sepamos que la persona aún mantiene su puesto.

Para esto, hacemos click en Joined Forms de Nuevo y seleccionamos Person Position (person_position), que es el formulario que acabamos de agregar. Ahora podemos elegir Limit This Form. Ya que tenemos dos límites para este formulario, tendremos que seleccionar el Since "Operator Node" para que sea "And."

Una vez que hacemos click en el botón "Update", podemos elegir Add A New Operand. Haremos esto dos veces, una vez para 'start_date' y una para 'end_date.' Una vez que los operandos hayan sido agregados, podemos Editar cada uno de ellos y elegir Limit By A Field:

Ahora haga click en Update una vez más. Ahora podemos elegir los dos campos con los que queremos limitar y como queremos limitarlos


A continuación, adjuntamos el formulario person al formulario person_position como un formulario primario. Hacemos esto al hacer click en Joined Forms y luego Add A New Child Form bajo el formulario person_position. Nótese, no necesitamos especificar ningún límite aquí ya que estamos trazando una flecha negra en la dirección correcta.

Terminamos adjuntando los formularios "facility" y "job" al formulario "position"haciendo click en Joined Forms y luego en Add A New Child Form bajo el formulario position. Nótese, no necesitamos especificar ningún límite aquí ya que estamos trazando una flecha negra en la dirección correcta.

Variaciones de la Opción A

  • Nota: Existe un potencial para la ambigüedad aquí. Si una persona es asignada a más de un puesto a la vez con la misma start_date, entonces habrá un person_position para cada uno de los puestos, así que cuando el formulario person_position se adjunte, escogerá uno de los formularios person_position arbitrariamente. Si espera que sea posible que las personas puedan tener más de un puesto a la vez, entonces debería de escoger la opción B
  • Nota: Elegimos limitar el end_date para que no sea nulo para obtener sólo puestos actuales. Si no pusiéramos un límite en end_date, obtendríamos el último puesto que la persona tuvo, sin importar si lo mantienen o no.
  • Nota: Si seleccionamos Drop row if no form found bajo el formulario person_position, entonces si una persona no tuviera un formulario person_position asociado, serian eliminados del informe. Elegir hacer esto convertiría a este en un " Informe de Puestos Actuales," en lugar de un " Informe de Puestos." No haremos esto aquí, pero puede elegir hacerlo si tiene sentido para sus requerimientos.

Opción B: Informe de Puestos

Seleccione Configure System y luego Form Relationships. Creamos un informe de relación llamado 'staff_info' y elegimos "position" como el formulario primario, escribimos un nombre y descripción. Luego hacemos click en update.

Ahora que hemos creado la relación 'staff_info' la podemos editar.

Primero adjuntamos el formulario "facility" al formulario "position" por el campo mapeado "position." También adjuntamos el formulario "job" al formulario "position" por el campo mapeado "job."

A continuación debemos adjuntar el formulario "person_position" como mapeo del formulario position a través del campo position. En el formulario de mapa de campo, estamos trazando una flecha negra hacia atrás, así que tendremos que agregar algunos límites para elegir un único formulario person_position. Puede que haya muchos formularios person_positon mapeados a un position específico, así como varias personas pueden haber tenido el mismo puesto. Sin embargo, solo debería haber un formulario person_position donde end_date es nulo y esto corresponderá a la persona que tiene el puesto actualmente.

A continuación, adjuntamos el formulario person al formulario person_position como su formulario primario. Ya que estamos trazando una flecha roja hacia atrás, no hay ambigüedad acerca de cuál formulario estamos adjuntando.

Variaciones de la Opción B

  • Si seleccionamos "Drop Row If No Form Found" cuando adjuntamos el formulario person_position, entonces sólo se mostraran aquellos puestos que han sido asignados a alguien alguna vez así que se vuelve más un informe de "Puestos Ocupados", pero no un informe de Puestos Actuales.

Opción C: Informe de Puestos Actuales

Seleccione Configure System y luego Form Relationships. Creamos un informe de relación llamado 'staff_info' y elegimos " person_position" como el formulario primario, escribimos un nombre y descripción. Luego hacemos click en update. Ahora que hemos creado la relación 'staff_info' la podemos editar.

Primero, ya que solo queremos mostrar los puestos actuales, escogemos limitar el formulario person_position para que end_date no sea nulo.

A continuación, adjuntamos el formulario person que es el formulario primario del formularioperson_position . Ya que estamos trazando una flecha roja hacia atrás, no hay ambigüedad sobre cual person estamos adjuntando.

A continuación adjuntamos el formulario position al formulario person_position a través del campo mapeado position. Ya que estamos trazando una fleche negra hacia adelante, no hay ambigüedad en el formulario position que estamos adjuntando.

A continuación adjuntamos los formularios job y facility al formulario position a través de sus campos respectivos. De nuevo, como estamos trazando una flecha negra hacia adelante, no hay ambigüedad en los formularios que estamos adjuntando.

Variaciones de la Opción C

  • Si elegimos no usar el limite end_date es nulo, terminaríamos con un informe en el que se muestra la historia de cualquier puesto que haya sido ocupado.

Paso 2: Crear el Informe

Ahora que construimos la relación 'staff_info' , podemos crear un informe a partir de esa relación. Vaya a Configure System y luego Reports y elija crear un informe nuevo, llamado 'staff_report' basado en la relación 'staff_info'. Cuando terminemos verá la tabla zebra_staff_report en la base de datos. Aquí, podemos escoger los límites que queremos para las visualizaciones del informe (abajo) así como los campos que queramos ver en una visualización del. Para hacer esto, haga click en "Reporting Forms" y luego en "Fields" y podrá habilitar o deshabilitar campos de la relación a incluir en el informe. También podrá cambiar el texto del encabezado para el campo y fijar los límites para el campo.

Paso 3: Crear la Visualización del Informe

Vaya a Configure System y luego a Report Views y elija crear una nueva visualización de informe basado en el informe "staff_report." Simplemente seleccione los campos que quiere mostrar y habrá terminado.