Printed Forms: Difference between revisions

From IHRIS Wiki
Line 49: Line 49:


Los detalles de un formulario específico son los siguientes (todas las medidas son en mm):
Los detalles de un formulario específico son los siguientes (todas las medidas son en mm):
*relationship: Required scalar node. the name of the form relationship that this form is based off of. It needs to be the name of a child node of ''/modules/CustomReports/relationships''
*relationship: Nodo escalar requerido. El nombre de la relación de formulario en la que se basa este formulario. Debe ser el nombre de un nodo secundario de ''/modules/CustomReports/relationships''
*displayName: Optional scalar nodeThe name of the printed letter as displayed to the end user.
*displayName: Nodo escalar opcionalEl nombre de la carta impresa como se muestra al usuario final.
*archive: Optional scalar nodeIf set it should be a named form in the relationship. If it is a valid named form, then it will enable archiving of this printed letter as a child form of the corresponding named form. You should ensure that this form has ''generated_doc'' as a valid [[Defining Forms | child form]].
*archive: Nodo escalar opcionalSi se ha establecido, debe ser un formulario nombrado en la relación. Si es un formulario de nombre válido, entonces permitirá la archivación de esta carta impresa como un formulario secundario del formulario nombrado correspondiente. Debe asegurarse que este formulario tiene un ''generated_doc'' como un [[Defining Forms | formulario secundario]] válido.
*layout_details: Optional parent node describing the page layout details for the form. It contains the following child nodes.
*layout_details: Nodo primario opcional que describe los detalles de de la diagramación de la página. Contiene los siguientes nodos secundarios.
**encoding:  Optional scalar node. The encoding used by the renderer(PDF). Defaults to ASCII
**encoding:  Nodo escalar opcional. La codificación utilizada por el renderer(PDF). Por defecto es ASCII
**hyphenation_file: Optional scalar nodeFile used for hyphenation. Defaults to hyph_en_US.dic'
**hyphenation_file: Nodo escalar opcionalArchivo utilizado para la separación. Por defecto en hyph_en_US.dic'
**orientation:  Optional scalar nodeDefaults to 'P' for portrait.  The other option is 'L' for landscape
**orientation:  Nodo escalar opcionalPor defecto a 'P' de portrait.  La otra opción es 'L' de landscape
**size: Optional scalar node. Defaults to 'A4' to describe the paper to be used. Should be one of the  ISO 216 standard paper sizes, e.g. 'A4', or one of the North American paper sizes, e.g. 'letter' or 'legal'   
**size: Nodo escalar opcional. Por defecto 'A4' para describer el papel que se utilizará. Debe ser uno de los tamaños de papel ISO 216 estándar, es decir 'A4', o uno de los tamaños de papel Norteamericanos como 'carta' o 'legal'   
**rows:  Optional scalar nodeDefaults to 1.  The number of rows of forms to be printed on the page.
**rows:  Nodo escalar opcionaPor defecto 1.  El número de filas de de formularios a imprimir en una página.
**cols:  Optional scalar nodeDefaults to 1.  The number of columns of forms to be printed on the page.
**cols:  Nodo escalar opcionalPor defecto 1.  El número de columnas de formularios a imprimir en la página.
**border: Optional scalar nodeDefaults to 0 if rows and columns are 1, otherwise it to defaults to 1.  The width of the border drawn around the forms.  
**border: Nodo escalar opcionalPor defecto 0 si las filas y columnas son 1, de lo contrario por defecto es 1.  El ancho del borde dibujado alrededor de los formularios.  
**vert_pad: Optional scalar node. Defaults to 10.  The vertical padding used on the page boundary
**vert_pad: Nodo escalar opcional. Por defecto 10.  El espacio vertical utilizado en el límite de la página
**horiz_pad: Optional scalar node. Defaults to 10.  The horizontal padding used on the page boundary
**horiz_pad: Nodo escalar opcional. Por defecto 10.  El espacio horizontal utilizado en el límite de la página
**vert_pad_border: Defaults to 0. The vertical padding used between forms
**vert_pad_border: Por defecto 0. El espacio vertical utilizado entre formularios
**horiz_pad_border: Defaults to 0. The vertical padding used between forms
**horiz_pad_border: Por defecto 0. El espacio vertical utilizado entre formularios
*text_properties: An optional parent node defining the default text properties  of the element types of the documentChild node names are the name of the element types (image or text).  Possible values are:
*text_properties: Un nodo primario opcional que define las propiedades de texto por defecto de los tipos de elementos en el documentoLos nombres de los nodos secundarios son los nombres de los tipos de elementos (imágen o texto).  Los valores posibles son:
**font:  Optional scalar nodeDefaults to helvetica.  Should be limited to one of the standard pdf fonts: times,helvetica, courier
**font:  Nodo escalar opcionalPor defecto helvetica.  Debe limitarse a uno de los tipos de letra standard de pdf: times,helvetica, courier
**size: Optional positive integer node.Size in points of font. Defaults to 12.
**size: Nodo entero positive opcional. Tamaño en puntos de tipo de letra. Por defecto 12.
**alignment: Optional scalar nodeDefaults to 'L' for left.  Can be 'R' or 'J', 'L' or 'C'
**alignment: Nodo escalar opcionalPor defecto 'L' por left.  Puede ser 'R' o 'J', 'L' o 'C'
**color: Optional color foreground/text color. Use html style hex colorsDefaults to black #000000 ,  
**color: Color opcional del primer plano/texto . Utiliza colores estilo html hex .  Por defecto negro #000000 ,  
**bg_color: Optional background color. Use html style hex colorsDefaults to 'none' for transparent.
**bg_color: Color opcional de fondo. Utiliza colores estilo html hex .  Por defecto  'none' para transparente.
**style: Optional scalar nodeDefault to blankCan contain any of the following characters, B for bold, U for underline, I for italic
**style: Nodo escalar opcionalPor defecto ningunoPuede contener cualquiera de los siguientes caracteres, N de Negrita, S de subrayado , K para cursiva
*elements: Parent node. Children should be numerically indexedElements are added to the standard document in increasing numeric order of the node name of the elementEach of the child nodes will contain the following:
*elements: Nodo primario. Los secundarios Deben tener un índice numéricoLos elementos se agregan al document estándar en orden nemérico ascendente del nombre del nodo del elementoCada nodo secundario contendrá lo siguiente:
**text_properties: An optional parent node defining the properties which applies to this node and all of its sub-elements of this. The definition is the same as above.
**text_properties: Un nodo primario opcional que define las propiedades que aplican a este nodo y a todos los sub-elementos de este. La definición es la misma que la anterior.
**type: Required scalar nodeShould be one of 'text' 'image' or 'value'     
**type: Nodo escalar requeridoDebe ser 'text' 'image' o 'value'     
**definition:  Depends on the typeSee below.  
**definition:  Depende del tipoVer abajo.  


===Definición del tipo: Texto===
===Definición del tipo: Texto===

Revision as of 17:54, 29 September 2013

This tutorial describes how to create "standardized" or "official" PDF forms based upon the data in the system. This could be useful for generating training certificates, generating form letters on a position change, or validating who works in a facility or district.

This module first appears in version 4.0.5 of the iHRIS Suite.

Depending on your needs, you may wish to look at these other methods for standardized form generation:

Datos Fuente

Los datos fuente para el formulario impreso estarán basados en una Relación de Formularios.

Interacción de Páginas

Imprimir

En la primera fase de este módulo, la única interacción es para producir los formularios impresos en base a lo que se ha guardado en los datos magic. No habrá un componente de "diseño de documento" . Se podrá tener acceso al formulario estándar a través de un URL con el nombre del formulario estandarizado y una variable GET/POST que contenga una o más de las id del formulario primario en la relación. Por ejemplo:

http://<SITE_URL>/PrintedForms/print/registration?ids[]=person|12&ids[]=person|14&ids=[]person|22

Utilizar este URL causaría lo siguiente:

  • verificar que existe un formulario estandarizado llamado registration
  • verificar que el usuario tiene los permisos apropiados para ver este formulario estandarizado:
    • Revisar si el usuario tiene la tarea 'printed_forms_all_generate'
    • Si no, revisar si la tarea 'printed_forms_generate_registration' existe y el usuario tiene esta tarea
  • pra cada id, person|12, person|14, person|22 llenar los detalles del informe estandarizado utilizando las filas correspondientes en la tabla de informes si existe (ver abajo).

Menú

Es posible ver cuales formularios se pueden generar para una id dada haciendo el siguiente llamado

http://<SITE_URL>/PrintedForms/menu?id=person|12

mostrará todos los formularios impresos cuyo formulario primario es person. Entonces para cada uno de estos tendrá un link a la página de impresión correspondiente.

También debe vincular a la página de archivo correspondiente y mostrar cuales formularios en PDF ya se han archivado para esa persona clasificados por tipo y fecha.

Archivo

También debe crear un formulario, por ejemplo generated_doc que contenga los siguientes campos:

  • document: Un campo binario que contendrá el PDF
  • date: la fecha en la que fue generado
  • type: el formulario standard impreso (es decir, registro en el ejemplo anterior)

Al llamar a la página de archivo como:

http://<SITE_URL>/PrintedForms/archive/registration?ids[]=person|12&ids[]=person|14&ids=[]person|22

Se ejecutará lo siguiente:

  • revisar si 'generated_form' es un formulario secundario de person. Si no, la ejecución se detiene.
  • para cada id crear el formulario PDF (solo uno en cada página/documento) y guardarlo como un formulario secundario generated_doc

Detalles de Datos Magic

Todos los formularios estandarizados se guardarán en el nodo de datos magic:

/modules/PrintedForms/forms

En el ejemplo anterior los detalles que definen el formulario de registro se guardarían bajo:

/modules/PrintedForms/forms/registration

Los detalles de un formulario específico son los siguientes (todas las medidas son en mm):

  • relationship: Nodo escalar requerido. El nombre de la relación de formulario en la que se basa este formulario. Debe ser el nombre de un nodo secundario de /modules/CustomReports/relationships
  • displayName: Nodo escalar opcional. El nombre de la carta impresa como se muestra al usuario final.
  • archive: Nodo escalar opcional. Si se ha establecido, debe ser un formulario nombrado en la relación. Si es un formulario de nombre válido, entonces permitirá la archivación de esta carta impresa como un formulario secundario del formulario nombrado correspondiente. Debe asegurarse que este formulario tiene un generated_doc como un formulario secundario válido.
  • layout_details: Nodo primario opcional que describe los detalles de de la diagramación de la página. Contiene los siguientes nodos secundarios.
    • encoding: Nodo escalar opcional. La codificación utilizada por el renderer(PDF). Por defecto es ASCII
    • hyphenation_file: Nodo escalar opcional. Archivo utilizado para la separación. Por defecto en hyph_en_US.dic'
    • orientation: Nodo escalar opcional. Por defecto a 'P' de portrait. La otra opción es 'L' de landscape
    • size: Nodo escalar opcional. Por defecto 'A4' para describer el papel que se utilizará. Debe ser uno de los tamaños de papel ISO 216 estándar, es decir 'A4', o uno de los tamaños de papel Norteamericanos como 'carta' o 'legal'
    • rows: Nodo escalar opciona: Por defecto 1. El número de filas de de formularios a imprimir en una página.
    • cols: Nodo escalar opcional: Por defecto 1. El número de columnas de formularios a imprimir en la página.
    • border: Nodo escalar opcional. Por defecto 0 si las filas y columnas son 1, de lo contrario por defecto es 1. El ancho del borde dibujado alrededor de los formularios.
    • vert_pad: Nodo escalar opcional. Por defecto 10. El espacio vertical utilizado en el límite de la página
    • horiz_pad: Nodo escalar opcional. Por defecto 10. El espacio horizontal utilizado en el límite de la página
    • vert_pad_border: Por defecto 0. El espacio vertical utilizado entre formularios
    • horiz_pad_border: Por defecto 0. El espacio vertical utilizado entre formularios
  • text_properties: Un nodo primario opcional que define las propiedades de texto por defecto de los tipos de elementos en el documento. Los nombres de los nodos secundarios son los nombres de los tipos de elementos (imágen o texto). Los valores posibles son:
    • font: Nodo escalar opcional. Por defecto helvetica. Debe limitarse a uno de los tipos de letra standard de pdf: times,helvetica, courier
    • size: Nodo entero positive opcional. Tamaño en puntos de tipo de letra. Por defecto 12.
    • alignment: Nodo escalar opcional. Por defecto 'L' por left. Puede ser 'R' o 'J', 'L' o 'C'
    • color: Color opcional del primer plano/texto . Utiliza colores estilo html hex . Por defecto negro #000000 ,
    • bg_color: Color opcional de fondo. Utiliza colores estilo html hex . Por defecto 'none' para transparente.
    • style: Nodo escalar opcional. Por defecto ninguno. Puede contener cualquiera de los siguientes caracteres, N de Negrita, S de subrayado , K para cursiva
  • elements: Nodo primario. Los secundarios Deben tener un índice numérico. Los elementos se agregan al document estándar en orden nemérico ascendente del nombre del nodo del elemento. Cada nodo secundario contendrá lo siguiente:
    • text_properties: Un nodo primario opcional que define las propiedades que aplican a este nodo y a todos los sub-elementos de este. La definición es la misma que la anterior.
    • type: Nodo escalar requerido. Debe ser 'text' 'image' o 'value'
    • definition: Depende del tipo. Ver abajo.

Definición del tipo: Texto

The text element is just certain text to be placed in the document. It should consist of the following nodes:

  • printf: Optional scalar node. The a printf string to be placed here. Defaults to . Example: "%s, %s has registation number %s"
  • printf_args: Optional parent node. An array of arguments to subsititute into the printf as follows
    • formname+field: a report form fields to substitute into the printf. E.g. "person+surname,person+fisrtname,registation+number":
    • +relationshipFunction: The evaluation of the named function in the the form relationship. Example +age65 which be the year the person turns 65 in the staff relationship
    • ++date(XYZ): The data formatted according to XYZ (unquoted) via strfrtime functions. Example ++date(%Y) is the four digit year
    • ++date: The date. This is the same as ++date(%x).
    • ++user: The name of the user printing the form
    • ++eval(XYZ): Evaluate the php code XYZ. Example is ++eval(strftime("%Y")+60) would add 60 to the current year
  • horiz_min: Required numeric scalar node. If the alignment is 'L' it is the left most coordinate to place this text. If the alignment is 'R' it is the right-most cooridnate of the text
  • horiz_max: Optional numeric scalar node. If not set and the allignment is 'J' then the alignment reverts to 'L'. If set and allignment if 'L' is the right-most coordinate. If set and alignment is 'R' then it is the left-most coordinate. If set and alignment is 'J' then the this is the right-most coordinate and horiz-min is the left-most coodinate.
  • vert_max: Optional numeric scalar node. The bottom most coordinate to place this text.
  • vert_min: Required numeric scalar value. The top most coordinate to place this text.

Definición del Tipo: Imágen

  • image: Nodo standard Requerido. El nombre del archivo de imágen a ubicar. Puede ser:
    • Un nombre de archivo, en cual caso la ruta de búsqueda utilizada es "PDF_IMAGES"
    • Una cadena "form://form+field" donde el formulario se nombra form en la relación y el campo es un campo de tiempo IMAGE (e.g. "form://passport+image")
  • horiz_min: Nodo escalar numérico requerido. El de más a la izquierda coordina para ubicar la imágen.
  • vert_min: Nodo escalar numérico requerido. El de más arriba coordina para ubicar la imágen
  • horiz_max: Nodo escalar numérico opcional. El de más a la derecha coordina para ubicar la imágen. Si esta establecido, la imágen se reescala si es necesario.
  • vert_max: Nodo escalar numérico opcional. El de más abajo coordina para ubicar la imágen. Si esta establecido, la imágen se reescala si es necesario.

Ejemplo

Definir las características del Formulario Impreso

Por ejemplo, para producir una Staff Hire Letter en iHRIS Manage podría definirla como: <source lang='xml'>

 <configurationGroup name="sample-hire-letter" path="/modules/PrintedForms/forms/sample_hire_letter">
   <configuration name="relationship">
     <value>staff</value>
   </configuration>
   <configuration name="archive">
     <value>person</value>
   </configuration>
   <configuration name="displayName">
     <value>Staff Hire Letter</value>
   </configuration>
   <configurationGroup name="elements">
     <configurationGroup name="0">
       <configuration name="type">
         <value>image</value>
       </configuration>
       <configuration name="definition" values='many' type='delimited'>
         <value>image:iHRISManage_logo_whiteBG.png</value>
         <value>horiz_min:5</value>
         <value>vert_min:1</value>
       </configuration>
     </configurationGroup>
     <configurationGroup name="50">
       <configuration name="type">
         <value>text</value>
       </configuration>
       <configuration name="text_properties" values='many' type='delimited'>
         <value>style:I</value>
       </configuration>
       <configuration name="definition" values='many' type='delimited'>
         <value>horiz_min:33</value>
         <value>vert_min:6</value>
         <value>printf:Certification of Employment</value>
       </configuration>
     </configurationGroup>
     <configurationGroup name="51">
       <configuration name="type">
         <value>text</value>
       </configuration>
       <configuration name="text_properties" values='many' type='delimited'>
         <value>style:BU</value>
       </configuration>
       <configuration name="definition" values='many' type='delimited'>
         <value>horiz_min:33</value>
         <value>vert_min:12</value>
         <value>printf:Ministry of Health</value>
       </configuration>
     </configurationGroup>
     <configurationGroup name="52">
       <configuration name="type">
         <value>text</value>
       </configuration>
       <configuration name="definition" values='many' type='delimited'>
         <value>horiz_min:160</value>
         <value>vert_min:6</value>
         <value>printf:%s</value>
       </configuration>
       <configuration name="printf_args" path='definition/printf_args' values='many' type='delimited'>
         <value>0:++date(%e %B %Y)</value>

</configuration>

     </configurationGroup>
     <configurationGroup name="100">
       <configuration name="type">
         <value>text</value>
       </configuration>
       <configuration name="definition" values='many' type='delimited'>
         <value>horiz_min:3</value>
         <value>vert_min:50</value>
         <value>printf:Dir Sir/Madam, 
Please accept this letter as certification of employment for %s %s. 

On %s, employment began as %s in the %s department of %s.

Sincerely, %s</value>

       </configuration>
       <configuration name="printf_args" path='definition/printf_args' values='many' type='delimited'>
         <value>0:person+firstname</value>
         <value>1:person+surname</value>
         <value>2:staff+start_date</value>
         <value>3:position+title</value>
         <value>4:department+name</value>
         <value>5:facility+name</value>
         <value>6:++user</value>
       </configuration>
     </configurationGroup>
   </configurationGroup>
 </configurationGroup>

</source>

Crear un link para imprimir el formulario

Después de que esto se ha establecido, debe abrir la plantilla de vista del formulario donde quiere ubicar el link a PrinteForm. <source lang="xml">

 hasValidForms('sample_hire_letter')">
  • Sample Hire Letter
  • </source> Lo descrito arriba sigificaría que el nombre de PrintedForm es sample_hire_letter y es primario de person. Esta parte del código debe insertarse favorablemente bajo el link para actualizar la información de un formulario. (view_form_name.html)