Custom Reporting -- Creating Form Relationships

From IHRIS Wiki

Generalidades

Uso para el que fue Diseñado

Esto esta diseñado para un desarollador o administrador del sistema que tenga una idea clara de como se relacionan todos los formularios. Las posibles conecciones entre los diferentes formularios ya se encuentran mapeados en el sistema. Una relación es la descripción de una ruta entre los diferentes formularios en el sistema.

En este instante, una relación es usada para Custom Reports. También intendemos utilizarla para Custom Pages.

Una relación de formularios es utilizada para construir consultas SQL usadas en un Reporte Personalizado. Aunque no necesite conocer ningún SQL para crear un informe, familiarizarse con bases de datos relacionadas será de ayuda.

Ejemplo

Necesita crear una realación de formularios en in iHRIS Manage que muestre todos los empleados actuales, sus salarios y sus supervisores. Aqui hay un equema de como definir esta relación:

  • Inicie con el formulario primario 'person_position' y limitese a los puestos en los cuales el campo 'being_date' se sea nulo y el campo 'end_date' sea nulo.
  • Adjunte al formulario primario el formulario 'person' donde el formulario 'person' es primario y el formulario 'person_position' secundario
  • Adjunte al formulario primario el formulario 'salary' donde 'salary' es secundario a 'person_position' y donde el campo 'start_date' para 'salary' es máximo
  • Adjunte al formulario primario el formulario 'position' donde el campo 'position' del formulario primario 'person_position' se mapea a ese puesto. Nombre a este formulario 'employee_position'.
  • Adjunte al formulario 'position' el formulario 'position' donde el campro 'supervisor' del formulario 'position' se mapea a ese puesto. Nombre a este formulario conjunto 'supervisor_position'para distinguirlo del formulario 'employee_position'.
  • Adjunte al 'supervisor_position' el formulario 'person_position' del cual el campo 'position' es el valor del formulario 'supervisor_position'. Nombre a este 'supervisor_person_position'
  • Adjunte el formulario 'supervisor_person_position' el formulario 'person' que es un formulario primario. Nombre a este 'supervisor'

Alguna Terminología

  • En ocaciones a una relación se le llama "relación de formulario" o "relación de informe"
  • El "primary_form" es el punto inicial para describir el formulario en la relación.
  • Un formulario puede ser mencionado varias veces en una relación. En el ejemplo anterior, el formulario, the person_position fue mencionado dos veces. Una vez se le dio el "nombre de informe del formulario" 'person_position' y una vez se le dio el "nombre de informe del formulario" 'supervisor_person_position'. De forma similar, el formulario person fue mencionado dos veces y se le dieron los dos "nombres de informe del formulario" de 'person' y 'supervisor'
  • Alguna de la terminología, tal como 'adjuntar,' es tomada de SQL.

Dando Inicio

Una relación de formulario puede ser creada siguiendo el "Sistema de Configuración" y luego el link "Editar Relación de Formulario" . Los primeros pasos son:

  • seleccione "Display Name" para la relación, el nombre de la relación para el usuario final.
  • seleccione un "Short Name" para el informe, lo cual es una manera de hacer referencia internamente a la relación y solo puede contener caracteres alfa-numericos y algunos signos limitados de puntuación tales como _ y -.
  • Una descripción de la relación.
  • Luego debe hacer una de las opciones siguientes:
    • Escoger el "primary_form" para la realción
    • Copiar los detalles existente de la relación de formulario a modificar

Adjuntar un Formulario

Once a form, formA, is in a relationship, you can join to it any of its related forms. You must ensure, by adding a limit, that at most one instance of the formB is joined to another an instance of formA. There are four possible ways to join:

  • (An instance of) formA is a parent of (an instance of) formB.
    • formA may have several child instances of formB. For example, a 'person' form may have may child 'salary' forms.
  • (An instance of) formA is a child of (an instance of) formB.
    • Note that a form, if it has a parent form, is unique, so no limits are needed when joining in this manner.
  • (An instance of) formA contains a mapped field whose value maps to (an instance of) formB.
  • (An instance of) formB contains a mapped field whose value maps to (an instance of) formA.

Limiting a Form

The primary form and any joined forms in a relationship may be limited by using the limiting forms structure. The form relationship provides a nice interface to construct form limits.

Adding in a SQL Function

In addition to linking in forms to a report, we can define SQL functions that can be run on the data in the forms. To reference the field named $fieldName in the form named $reportFormName in the relationship you use:

`$reportFormName+$fieldName`

For example:

CONACT (SUBSTR(`supervisor+name`,1,1), '. ',  SUBSTR(`supervisor+surname`,1,1) , '.')

would return the initials of the supervisor.

To define a sql function, you need to define:

  • A (short) name use to reference the function. For example, 'supervisor_initials.'
  • A description of the function. For example, "The Initials of the Supervisor."
  • The form field that the result of the SQL function should take values in. For example, "STRING_LINE"