Importación de incidencias

Las incidencias asociadas a una persona empleada se pueden importar en WorkPlanner de forma independiente a los datos básicos de la propia ficha del empleado o empleada. Para su carga de forma masiva, se puede realizar vía Excel o bien mediante fichero XML.

Importación de incidencias desde Excel

La importación de incidencias vía Excel, se realiza siguiendo el procedimiento estándar (ver Importación vía Excel).

Es posible realizar la importación de incidencias desde Excel siguiendo diferentes formatos. Es imprescindible proporcionar en el documento una columna que sirva para identificar a la persona empleada a modificar. Esta columna puede ser Name (clave estándar), ID (clave por identificador), ExtCode (clave por código externo) o bien Description (clave por descripción). Además, se necesitará especificar en cada fila la incidencia que deseamos importar. Para ello utilizaremos uno de los siguientes formatos:

Formato 1

NamePeriodAttribute-DateAttribute-IdType
000122507-182013-03-29T00:00:00127
000122500-242013-03-25T00:00:00122
Se indica la franja horaria siempre en la columna Period y las horas a 00:00:00 en Attribute-Date

Formato 2

NamePeriodAttribute-StartDAttribute-EndDAttribute-IdType
00012252013-03-29T09:00:002013-03-29T17:00:00127
00012252013-03-25T08:00:002013-03-25T12:00:00122
000122500-242013-03-25T00:00:002013-03-31T00:00:00122
Se indica la franja horaria en la columna Period y cuando está en blanco se coge directamente de Attribute-Date

Importación de incidencias mediante fichero XML

Descripción de campos

  • Name (clave): Nombre identificador de la persona empleada
  • IncidenceList: Contiene la lista de incidencias a actualizar de la persona empleada.
  • dateFormat (atributo): este atributo, cuando está presente indica que las fechas de definición de la incidencia serán en formato ISO, indicando el inicio y fin de la misma (StartD, EndD, StartT, EndT)
  • TTimePeriod: Define el periodo de la incidencia y sus propiedades:
    • Quantity: siempre es 1
    • PeriodType: siempre es 2 para periodos de tipo incidencia
    • IdType: referencia el ID interno de la incidencia según este definida en WorkPlanner
    • StartD: la fecha de inicio de la incidencia en formato ISO
    • EndD: la fecha de fin
    • StartT: cuando la incidencia está definida como “de horas”, indica la hora y minuto de inicio en formato HHMM o bien HH:MM.
    • EndT: cuando la incidencia está definida como “de horas”, indica la hora y minuto de fin en formato HHMM o bien HH:MM. En caso de incidencia en horas que afecte a más de un día, se aplicará dicha incidencia sobre todo el rango de días indicado entre las horas proporcionadas.

Ejemplo en formato XML en donde se permite configurar qué incidencias actualmente en WP serán sobreescritas totalmente por la información proporcionada en el documento:

<?xml version="1.0" encoding="ISO-8859-1"?>
<IntContainerVector>
  <UpdateFields UpdateOnly="1" COLNAME0="IncidenceList" />
  <CustomParams UseExtCodeAsKeyField="1">
    <IncidenceList Start="2012-10-01T00:00:00" End="2100-01-02T00:00:00">
      <Incidence Nombre="EX" IdType="30" />
      <Incidence Nombre="EV" IdType="47" />
      <Incidence Nombre="IT" IdType="50" ITEndException="1"/>
    </IncidenceList>
  </CustomParams>
  <Worker>
    <ExtCode value="test01" />
    <IncidenceList dateFormat="1">
      <TTimePeriod StartD="2012-10-24T00:00:00" EndD="2012-10-26T00:00:00" PeriodType="2" Quantity="1" IdType="47" />
      <TTimePeriod StartD="2012-10-24T00:00:00" EndD="2012-10-24T00:00:00" StartT="1022" EndT="1222" PeriodType="2" Quantity="1" IdType="47" />
    </IncidenceList>
  </Worker>
</IntContainerVector>

En el documento de importación anterior, se está indicando lo siguiente:

  • La identificación de qué objeto Worker del sistema se va a actualizar vendrá indicada por el valor del campo ExtCode (UseExtCodeAsKeyField=1). Por defecto la identificación se realiza por el campo Name.
  • Sólo se van a actualizar las incidencias de los objetos Worker que se identifiquen. En caso contrario no se hará nada (no se crearán los Worker). Concretamente, sólo se va a actualizar el campo IncidenceList del mismo.

Otras consideraciones:

  • Se indica que el intervalo de tratamiento se va a restringir a aquellas incidencias que se reportan dentro del documento entre las fechas Start y End: 01/10/2012 y 02/01/2100 (esta fecha representa indefinido en BOLD). Las incidencias que incluya el documento fuera de este intervalo se van a ignorar.
  • El proceso de importación tratará de forma “especial” las incidencias con códigos EX, EV y IT en los nodos Incidence , ya que considerará que la información respecto de estos códigos es total respecto del intervalo de importación para estas incidencias. Por tanto, el proceso va a eliminar del empleado o empleada todas las incidencias de este tipo antes de empezar y únicamente lo actualizará con la información del documento de entrada.
  • El atributo ITEndException asociado con la incidencia de código IT indica que en caso de solapamiento o conflicto entre los datos sobre incidencias con este código presentes en el documento de importación y los datos en BOLD, se respetarán los datos en BOLD y tan solo se indicará un aviso. Por ejemplo: si en BOLD aparece una incidencia IT en el intervalo de sincronización y no aparece en el documento de importación no se eliminará. Si en el documento XML aparece una incidencia IT que solapa con otra ya existente en BOLD se dará un aviso sin modificar la de BOLD.
  • Atributo KeepWPData (en nodos CustomParams): si vale 1 indica que, en caso de solapes, se deben conservar siempre los datos que tenga en BOLD. La única excepción es si el código de incidencia es el mismo y la fecha de inicio también. En este caso se cambiará la fecha de fin que exista en WorkPlanner por la que venga indicada en el documento que se está importando.

Versión cliente Windows

Para realizar la importación de estos documentos, desde el cliente Windows, debemos ir al menú Integración > Importar incidencias de empleados

Importación vía Excel

Para importar datos a BOLD vía Excel, clicar en el menú Utilidades y seleccionar la opción Importar datos por Excel.

A partir del formulario generado, seleccionar el tipo de datos que se quieren cargar mediante el selector de Importación de documentos,

y, a continuación, clicar en Descargar plantilla para obtener el Excel de carga en donde se cumplimentarán los datos a importar a BOLD en la pestaña correspondiente.

Una vez guardado el Excel cumplimentado, clicar en Seleccionar archivo para proceder a su subida al formulario. Automáticamente en el apartado Documento se visualizarán los datos del Excel, como se muestra en el siguiente ejemplo:

Para realizar una simulación de la carga de datos, se debe clicar en , mientras que si se está segura de la correcta importación de datos entonces, directamente, debe clicar en .

Finalmente, en el apartado Resultados se puede comprobar el estado de la importación.

Identificar objeto a actualizar

En el caso que el dato a cargar o actualizar no estuviera en la plantilla Excel se debe tener en cuenta que el formato de este fichero es básico para su funcionamiento , siendo fundamentales los nombres de las columnas a importar y el tipo de datos que contiene.
Para propiedades de tipo numérico o cadena de texto, el nombre de la columna ha de ser el correspondiente al nombre interno de la clase de objeto que se está tratando de importar. Por ejemplo, la propiedad “Nombre completo” de la persona empleada debe importarse mediante una columna en el excel que se llame FullName. La lista de clases y sus propiedades se pueden consultar en el artículo listado de clases y atributos.

Para que el sistema detecte sobre qué objeto se desea aplicar la importación de Excel (en caso de que éste no sea un nuevo objeto) es necesario proporcionar una columna clave. Las columnas que se pueden utilizar como clave son: identificador interno (ID), código (Name), descripción (Description) y código externo (ExtCode).

El formulario de importación a través del excel, permite escoger el tipo de identificación que se desea utilizar.

Sufijos y nombres especiales para las columnas

– Propiedades con valor y unidad

Los atributos que sean de tipo propiedad “boldProperty” necesitan la columna con el valor correspondiente, más otra columna indicando el nombre de la unidad en la que se expresa ese valor. Esta columna adicional ha de tener el mismo nombre que la propiedad añadiendo el sufijo _U.
Ejemplo: Si deseamos importar el atributo Coste del objeto contrato, necesitaremos dos columnas para este atributo: Cost donde indicaremos el valor de coste para cada contrato y Cost_U donde pondremos el valor eur para indicar que la propiedad está en euros. En el siguiente artículo podemos encontrar el identificador de cada tipo de propiedad tipos de propiedades.

– Propiedades de tipo RefObj (referencias a otros objetos)

Para asignar valores de tipo referencia, se puede utilizar el valor numérico correspondiente con el ID del objeto referenciado. También mediante el nombre correspondiente con el código y añadiendo el sufijo _Ref al nombre de la columna en el Excel. O, también mediante el nombre correspondiente al Código externo y añadiendo el sufijo _Ext al nombre de la columna en el Excel

– Propiedades de tipo enumerado

Para asignar valores de tipo enumerado, se puede utilizar su valor numérico, en cuyo caso no es necesario añadir ningún sufijo especial al nombre de la columna en el excel. También se puede hacer referencia a los valores mediante el nombre del enumerado correspondiente. Si se desea utilizar este tipo de importación, el nombre de la columna ha de contener el sufijo _Enum .

– Propiedades de tipo color

Para asignar valores de tipo color TColor se tiene que convertir del formato RGB a decimal. Ejemplo: el funcionamiento es, si R=67, G=A2 y B=12 todos en hexadecimal, construyes el número hexadecimal: 12A267. Utilizando la calculadora lo conviertes a decimal y el valor obtenido es el que hay que importar.

– Propiedades especiales

Algunos tipos de propiedades, no figuran en el artículo listado de clases y atributos, pues son parametrizables y diferentes en cada instalación. Estas propiedades pueden ser:

  • Propiedades automáticas de sistema: El nombre de la columna ha de ser el nombre interno del atributo, precedido por SystemProps__. Ejemplo: SystemProps__FechaAlta
  • En caso de propiedades anidadas bajo un Nodo, hay que separar la propiedad del Nodo mediante un punto. Ejemplo para contratos con varias necesidades preferentes con un ciclo asociado a cada una de ellas sería: SystemProps__SpecialScheduleByPreferentNeed.ScheduleRefByPrefNeed_Ref SystemProps__SpecialScheduleByPreferentNeed.ScheduleRefByPrefNeed2_Ref


Nota: para importar SystemProps tipo double negativas el formato de la celda Excel ha de ser de tipo texto y el valor ha de estar en el formato 99.99, con un punto para separar los decimales.

  • Propiedades automáticas personalizadas: El nombre de la columna ha de ser el nombre interno del atributo, precedido por CustomProps__. Ejemplo: CustomProps__FechaAlta
  • Custom Properties (CP). Para importar CustomProperties, el nombre de la columna a importar será CustomProperties y en cada fila escribiremos una expresión del tipo:<CustomProperties><PropBoolean KeyName=”ControlExterno”>0</PropBoolean></CustomProperties> donde el nombre de la propiedad a importar sería ControlExterno y el valor en este caso sería 0. Podemos importar más de una CP a la vez sólo hay que tener precaución de marcar en el cuadro de diálogo de importación la opción de No borrar propiedades porque con cada carga se borrarían las anteriores.

– Importación de Formularios de permisos

Para importar formularios de permisos además del código/nombre o ID hay que indicarle los siguientes campos, SubClassType (5), LinkedClass (39), CustomProps__CaseID, CustomProps__SubType (0)

– Propiedades especiales de contratos y necesidades

Las propiedades del contrato ciclo y ciclo de guardia (CYCLEREF e Id_DutySeqSchedule respectivamente) pueden definirse de forma directa con la definición del ciclo horario correspondiente utilizando las propiedades: CycleCompactDef y DutyCycleCompactDef respectivamente. Esta utilidad te permite definir ciclos horarios directamente sin necesidad de cargar previamente su definición con una importación de horarios semana.

El Excel de ejemplo , sería el siguiente:

NameCycleCompactDefScheduleCycleTypeStartPositionCycleDutyCycleCompactDefStartPositionDutyCycle
000001_2014-01-01LXV 10-22 # MJS 22-10 # L-J 8-14:30;16-18 V 8-1512D 8-22 ###3
000002_2016-04-22LXV 14-22 # # L-J 8-14:30;16-18 V 8-15110

El primer registro asociaría como ciclo ordinario un ciclo de tres semanas donde la primera trabajaría los lunes, miércoles y viernes de 10 a 22, la segunda los martes, jueves y sábado de 22 a 10 y la tercera de lunes a jueves de 8 a 14:30 y de 16 a 18 y los viernes de 8 a 15. Por otra parte el ciclo de guardia sería de 4 semanas, donde la primera indicaría que se trabaja el domingo de 8 a 22 y las tres semanas siguientes serían nulas. Recordar que es necesario incluir (si el contrato es nuevo o en las versiones anteriores no se había indicado ya) el parámetro de ScheduleCycleType.

Para aquellos casos en los que se ha definido ciclo de asignación por necesidad, también es factible asignar esos ciclos a través de una definición compacta. Los nombres de las propiedades de estos ciclos son los siguientes: FirstNeedCycleCompactDef, SecondNeedCycleCompactDef, ThirdNeedCycleCompactDef,DutyNeedCycleCompactDef

Versión cliente Windows

Desde el menú Integración, visible en la pantalla principal, se pueden importar datos en WorkPlanner desde un fichero Excel.

Cambio de turno

El cambio de turno (tambien llamado cambio de guardia) es un tipo de acción que tiene como objetivo el intercambio parcial o total de una jornada de trabajo entre dos personas empleadas, marcando dicho intercambio con incidencias que indiquen la “falta o ausencia” en el empleado o empleada que solicita el cambio y el trabajo en la persona empleada que la soporta.

Cómo realizar un Cambio de guardia

Para llevar a cabo este procedimiento la forma adecuada será:

  • Seleccionar el día/horario para la empleada o empleado que solicita el cambio de guardia y clicar botón izquierdo,
  • Clicar el icono de la rueda dentada y, a continuación, seleccionar la opción Cambio de turno.
  • Buscar la personal empleada con quien se desea hacer el intercambio escribiendo el nombre o código de ésta en Selecciona empleado

Opcionalmente, también se puede informar del día para la devolución del intercambio, si se selecciona Mismo día o, en caso de ser otra fecha, Otro día retorno e informando del día en cuestión en Día a devolver.

Cómo se visualiza en el Gantt

Tras la confirmación del cambio, la visualización en el diagrama de Gantt mostrará tanto los cambios de horarios en las jornadas implicadas como las incidencias asociadas a las mismas.

Nota: El color y nombre de las incidencias son configurables.

Opciones de configuración

ATENCIÓN: El siguiente contenido es de uso avanzado y su utilización puede ocasionar daños irreparables en la configuración del sistema

Para que la opción de cambio de turno funcione correctamente, en el PlannerConfig dentro de la pestaña Intercambios , se deben configurar las incidencias que marcan el trabajo como guardia en el campo Marca a indicar la presencia y la falta de guardia (o, ausencia) en el campo Falta a poner en la ausencia.

Opcionalmente, se pueden realizar los siguientes controles sobre intercambios con día de retorno:

También, se puede controlar la posibilidad de permitir intercambios que solapen ciertos minutos sus horarios modificando el valor nulo “0” por el deseado.

Versión cliente Windows

A continuación, se muestra cómo se visualiza esta acción en el entorno del cliente windows ya que la idea y procedimiento es el mismo.

Cómo acceder al informe:

Cómo seleccionar el tipo de intercambio y el empleado como sustituto:

Informe de necesidades

El informe de necesidades nos da la información detallada sobre la asignación de personas empleadas a las diferentes necesidades planificadas. Este informe, por tanto, permite saber qué persona o personas se han ocupado de cubrir unas determinadas necesidades y cuánto tiempo.

Cada fila o registro del informe, se corresponde con una asignación o un déficit de necesidad entre las columnas Fecha de inicio y Fecha de fin.

El nombre interno de este tipo de informes es: NeedDetailedResult.

Columnas disponibles

  • Plan: Identifica el escenario de planificación asociado al informe.
  • Necesidad: Es la necesidad asociada a la asignación o al déficit de la fila.
  • Contrato asoc.: En el caso de que la fila sea de tipo Asignada, contiene información del contrato de la persona empleada que realiza la asignación.
  • Tipo de actividad: Enumerado que puede tomar dos valores.
    • Asignada: Indica que la fila asociada contiene datos acerca de la asignación de una persona empleada a una necesidad.
    • Déficit: Indica que la fila asociada contiene datos acerca de un intervalo no cubierto de una necesidad.
  • Fecha de inicio: La fecha de inicio del informe
  • Fecha de fin: la fecha de fin del informe
  • Duración: Indica la duración de la asignación o déficit relacionado con la fila.
  • Nivel: Indica el número de personas asignadas o de déficit sobre las que informa la fila asociada.
  • Carga: Es el resultado de multiplicar la duración de la asignación o el déficit por el número de personas (Nivel). Nos ofrece el total de horas asignadas o de déficit informadas en la fila.
  • Actividad: Actividad asociada a la necesidad.
  • Prioridad: Prioridad asociada al par Categoría profesional del contrato y Actividad de la necesidad.
  • Área de planificación: Área de planificación asociada a la necesidad.
  • Empleado: Nombre de la persona empleada asignada a la necesidad. Esta columna solo tendrá valores cuando el tipo de actividad sea Asignada.
  • Área del trabajador: Es el área de planificación del contrato asociado a la asignación. Esta columna solo tendrá valores cuando el tipo de actividad sea Asignada.

Cómo obtener el informe

Para obtener el informe ir al menú Informes y seleccionar Informe de necesidades

Ejemplo:

Versión cliente Windows

A continuación, se muestra cómo se visualiza esta acción en el entorno del cliente windows ya que la idea y procedimiento es el mismo.

Añadir descanso

El objetivo es poder introducir de una manera rápida desde el Gantt una pausa entre dos marcajes inesperados (éstos nos indicarán el inicio y fin de la pausa) para, precisamente, evitar que éstos se traten como marcajes inesperados.

La pausa será introducida en el sistema como una incidencia.

Añadir descanso

  • Seleccionar la “caja” en la que queremos añadir la pausa (también podemos seleccionar todo un día, y manteniendo clicado el CTRL podemos seleccionar varios).
  • Hacer click con el botón derecho y seleccionar la opción Marcajes – Añadir descanso.

Nota: Pulsar F5 en caso de que no se haya refrescado correctamente y aún se vean los marcajes inesperados una vez introducida la incidencia.

Eliminar descanso

Seguir el mismo procedimiento empleado para Eliminar incidencia.

Asignar necesidad

Asignar necesidad es una opción que permite a la persona usuaria definir en que actividad (necesidad) ocupa su tiempo una empleada en una jornada concreta. Es posible asignar más de una necesidad en un día, mientras estas asignaciones no solapen entre sí.

Este cambio se debe realizar desde el Gantt y está disponible como menú contextual en las tareas (“cajas”) sin asignar de las personas empleadas.

Asignar necesidad

Para acceder a la opción “Asignar necesidad” clicar con el botón derecho del ratón sobre la tarea sin asignar que se desea ocupar y seleccionar en el menú la opción “Asignar/Liberar” y después la opción “Asignar necesidad”.
Esta opción lanzará una consulta al servidor que analizará las necesidades existentes en el sistema, aptas para la empleada seleccionada (en función de la categoría profesional de la misma) y que requieren de personal en la franja seleccionada.
En esta lista, se muestran primero aquellas necesidades que tienen déficit (están sin cubrir) en el intervalo seleccionado (aparecen con un signo menos entre paréntesis (-) a la izquierda del código). A continuación, aparecen las ya cubiertas, por si se quisiera realizar un refuerzo sobre ellas.

Asignar necesidad por cubrir

Análoga a la opción anterior, filtra las necesidades a mostrar incluyendo únicamente aquellas que tienen déficit en el intervalo seleccionado.

Marcar como refuerzo

Si la opción escogida es una necesidad que no presenta déficit, se está generando un refuerzo. La acción debe completarse aplicando una incidencia/marca sobre la franja en cuestión de alguna de las incidencias clasificadas bajo el nodo Refuerzo definidas en el maestro de incidencias. Esta marca permitirá identificar en el sistema que dicha asignación se realiza a modo de refuerzo, permitiendo así un sobredotación sobre ella.

Configuración de la acción para el cliente web

Para poder disponer de esta acción el cliente web es necesario activar la siguiente acción en el fichero de configuración: Act_AssignNeed_Web.

Si se desea activar la opción de poder seleccionar la asignación de necesidades que no tengan déficit, es necesario añadir también en la configuración la siguiente BoldAction: Act_AllowAssignNeedType_Web.

Filtraje de filas en cualquier informe propias del sistema

Definir una vista

Una vista compartida es un caso particular de vista que se encuentra disponible para todas las personas usuarias. Cuando se accede a un listado o informe, tendremos disponibles las vistas personales con los nombres que le hayamos asignado a cada una de ellas. Además de estas, dispondremos también de las vistas que se encuentran compartidas. Podemos identificarlas porque estas últimas vendrán siempre seguidas de la palabra (Remoto).

Las vistas compartidas se encuentran bloqueadas, por lo que ninguna persona usuaria (ni siquiera la creadora) podrá modificarla mientras figure como vista remota. Si se desea alterar una vista de este tipo, se ha de dejar de compartir la vista, modificarla, y si se desea, volver a compartirla.

Compartir una vista

Para compartir una vista los pasos a seguir son:

  • Seleccionar una vista que no se encuentre compartida.
  • Abrir el editor genérico de vistas.
  • Marcar el check Compartir
  • Pulsar el botón Aceptar

Es importante pulsar el botón aceptar al terminar la operación, de otra forma la vista no acabará por compartirse. Si todo el proceso finaliza correctamente, veremos que al nombre de la vista se le ha añadido el sufijo (Remoto).

Las personas usuarias recargan las vistas compartidas cada vez que se conectan, por lo que una usuaria que ya se encontrase trabajando con la aplicación no la verá hasta que reinicie su sesión.

Modificar una vista compartida

Las vistas compartidas, no se pueden modificar directamente. Deben :

1.- Descompartirse ( Abrir la vista, quitar el check de “Compartir” y darle a Aceptar)

2.- Volver a abrir la vista, y modificar lo que se necesite (añadir columnas, filtros etc)

3.- PASO IMPORTANTE: Pulsar aceptar para guardar el contenido de la vista en modo NO COMPARTIDO.

4.- Compartir vista como se explica en la sección anterior. Es importante realizar este paso de forma independiente, sin modificar en el mismo paso en que se comparte la vista la definición de la misma.

Eliminar una vista

El procedimiento para que una vista deje de ser compartida es muy similar al que figura en el apartado compartir vistas:

  • Seleccionar una vista que se encuentre compartida.
  • Abrir el editor genérico de vistas.
  • Desmarcar el check Compartir
  • Pulsar el botón Aceptar

Si todo ha ido bien, la vista debería perder su sufijo (Remoto) y pasar a ser editable. Con respecto a los usuarios conectados, sucede lo mismo que al compartir nuevas vistas. Los cambios no tendrán efecto en los clientes hasta que son reiniciados.

Opciones de filtro en campos de tipo fecha

Filtrado de fechas: Es posible usar las siguientes palabras reservadas en el editor de filtros para construir vistas sobre campos de tipo fecha:

  • HOY ó TODAY: Fecha actual. Es posible usar HOY +/- un número determinado. Por ejemplo HOY + 7, para filtrar por valores que hagan referencia a una fecha dentro de 7 días.
  • AYER ó YESTERDAY: Fecha de ayer. Equivalente a usar HOY-1
  • MAÑANA ó TOMORROW: Fecha de mañana. Equivalente a usar HOY+1
  • INICIO_SEMANA ó START_OF_WEEK: Fecha del lunes de la semana en curso.
  • FIN_SEMANA ó END_OF_WEEK: Fecha del domingo de la semana en curso.
  • INICIO_MES ó START_OF_MONTH: Inicio del mes en curso.
  • FIN_MES ó END_OF_MONTH: Fin del mes en curso
Un ejemplo de filtro que mostraría los objetos modificados desde ayer.

Vistas temporales

Las vistas, se pueden alterar de forma sencilla utilizando el editor de filtros o mediante opciones como Mostrar sólo filas con el valor actual, No mostrar filas con el valor actual o Activar suma de filas. También se pueden utilizar los auto-filtros para agregar condiciones por columnas.

Cuando modificamos un filtro mediante cualquiera de estas opciones el comportamiento puede ser:

  • Se genera una vista temporal (el cambio no se guardará, y en el siguiente refresco volveremos a tener la vista tal y como estaba antes de realizar el cambio). Visualmente notaremos que estamos trabajando con una vista temporal porque su nombre habrá cambiado automáticamente, añadiéndose como prefijo al anterior nombre un símbolo “*”. Esto sólo ocurrirá cuando el filtro se encuentre bloqueado o compartido.

Por ejemplo, la vista de la imagen “Calendarios LMS” pasará a llamarse “*Calendarios LMS” al efectuar un cambio sobre la misma (pues se encuentra bloqueada).

  • Se guarda el cambio. Éste es el comportamiento por defecto. El nombre de la vista se mantiene y se agrega a su definición la nueva opción aplicada (ya sea un nuevo elemento de filtrado, un cambio en la ordenación, en la visibilidad de las columnas… etc).

Si se desea modificar una vista bloqueada, se ha de realizar el cambio desde el editor de filtros o desbloqueándola previamente.

Administración

ATENCIÓN: El siguiente contenido es de uso avanzado y su utilización puede ocasionar daños irreparables en la configuración del sistema

El fichero donde se encuentran las vistas personales almacenadas es la carpeta ClientData, perteneciente al directorio de instalación del módulo servidor. Normalmente se encuentra en Global Planning Solutions\WorkPlanner\Server\Servers\WorkPlanner\ClientData\users\UsuarioN\wpclient.xml

Filtraje de filas en cualquier informe propias del sistema

ATENCIÓN: El siguiente contenido es de uso avanzado y su utilización puede ocasionar daños irreparables en la configuración del sistema

En este apartado se quiere indicar cómo filtrar las filas que aparezcan directamente del informe. Es decir, podemos poner un peaje para evitar que ciertas filas aparezcan directamente en el informe.

Para ello, debemos ubicar el informe, y tener claro el filtro a realizar.

El filtro a realizar debe ser de tipo boolean. Aquí tenemos un ejemplo:

Aquí nos fijamos en que se declara un ExpressionFilter y se acompaña con ExtAttribute. En el ExtAttribute existe una expresión que analiza si debe visualizar un atributo.

      <Class Name="ClockControl">

		  <ExpressionFilter>
                <Expression><![CDATA[isVisibleRow]]></Expression>
		  </ExpressionFilter>


<ExtAttribute Name="isVisibleRow" ShowName="Ausencia marcajes visible" Description="Retorna el derecho a ver las ausencias de marcaje" Type="bool" Default="true" Visible="true">
				<Expression>
				<![CDATA[
				IfElse(Year(DtTimeStamp) < 2000 AND !IsInvalid(IdSchedulePlan),
				       IfElse(TimeOf(DtTimeStampPrev) > IdSchedulePlan.StartHour AND TimeOf(DtTimeStampPrev) < (IdSchedulePlan.StartHour+IdSchedulePlan.Duration),
					          false,
							  true),true
				      )
                ]]>
                </Expression>
            </ExtAttribute>

            <ExtAttribute Definition="IdCW.Worker"/>
            <ExtAttribute Definition="IdCW.Worker.FullName" Name="FullName" ShowName="Nombre completo" Description="Nombre y apellidos del empleado"/>
            <ExtAttribute Definition="IdCW.PlanArea.Name" Name="PlanArea" ShowName="Area" Description="Area del empleado"/>
            <ExtAttribute Definition="IdCW.ProfessionalCategory.Name" Name="ProfesionalCategory" ShowName="Categoría" Description="Categoría del empleado"/>
            <ExtAttribute Name="CodWorker" ShowName="Código del empleado" Description="" Type="string" Default="" Visible="true">
                <Expression><![CDATA[IdCW.Worker.Name]]></Expression>
            </ExtAttribute>
            <ExtAttribute Name="CodTerm" ShowName="Nombre Terminal" Description="" Type="string" Default="" Visible="true">
                <Expression>
                <![CDATA[
                TerminalName(Terminal)
                ]]>
                </Expression>
            </ExtAttribute>
			<ExtAttribute ShowName="Horario asignado" Name="HorarioASignadoDiario" Description="H. Planificado Entrada-Salida" Type="string" Default="">
				<Expression>
					<![CDATA[
					IfElse (IsInvalid(IdSchedulePlan), "",
					        IdSchedulePlan.Description
					)
]]>
				</Expression>
			</ExtAttribute>
            <ExtAttribute Name="OrigenMarca" ShowName="Tipo marcaje" Description="Indica si el marcaje proviene de un reloj, de la app, de la web o si ha sido realizado manualmente en la aplicación" Type="string" Default="" Visible="true">
                <Expression>
                <![CDATA[
                IfElse(DtTimeStamp<DateTime("1899-12-31T12:00:00"),"",
                IfElse(Terminal == -2,
                       "App",
                       IfElse(Terminal == -3,
                              "Web",
                              IfElse(TypeString == "Normal",
                                     "Reloj",
                                     "Manual")))
                      )
  
                ]]>
                </Expression>
            </ExtAttribute>
			<ExtAttribute Name="strLinkGeolocalizacion" ShowName="Link localizacion" Description="Retorna el link de la geolocalización del marcaje, si estab disponible" Type="string" Default="" Visible="true">
				<Expression>
				<![CDATA[
				IfElse(Terminal <= -2,
					   ReplaceStr(GetClockGeoLocalizationData(IdCW.Worker.ID, DtTimeStamp),">Geolocalizacion","target=\"_blank\">Geolocalizacion"),
					   ""
					  )

                ]]>
                </Expression>
            </ExtAttribute>
			
			<!-- GPS-9715 Ocultacion ausencia marcajes en horarios partidos. I.e; 15:00 se echa de menos un marcaje -->
			
        </Class>