iDynamics Working Hours - Desarrolladores
Eventos de personalización
En estos momentos la aplicación incluye eventos de personalización relacionados con la generación de los movimientos de trabajo de empleado, todos ellos localizados en la codeunit IDPWHR Employee Entry Mgt.
OnBeforeGenerateEntry
procedure OnBeforeGenerateEntry(var Employee: Record Employee; var Date: Date; var EmployeeEntry: Record "IDPWHR Employee Entry"; var Handled: Boolean)
begin
end;
Este evento se ejecuta antes de intentar generar las entradas para un empleado y fecha. El método recibe dichos parámetros, un registro de movimiento de trabajo de empleado (sin inicializar) y un parámetro Handled.
Esto permite reemplazar, por completo, la lógica de generación de movimientos de la aplicación. Para ello, será necesario suscribirse al evento, modificar el valor de Handled para que sea verdadero, y asignar a la variable EmployeeEntry el registro creado (si procede).
iDynamics Working Hours utiliza la variable EmployeeEntry únicamente para pasársela al evento OnAfterGenerateEntry, por compatibilidad con otras extensiones que pudieran estar suscritas a dicho evento.
OnAfterGenerateEntry
procedure OnAfterGenerateEntry(var Employee: Record Employee; var Date: Date; var EmployeeEntry: Record "IDPWHR Employee Entry")
begin
end;
Este evento se lanza tras generar un movimiento de trabajo de empleado, para una fecha y empleado en particular. El evento recibe estos dos parámetros, junto al movimiento creado.
OnBeforeDeleteEmployeeEntry
procedure OnBeforeDeleteEmployeeEntry(var EmployeeEntry: Record "IDPWHR Employee Entry"; var Handled: Boolean)
begin
end;
Por omisión, la aplicación no permite eliminar movimientos de empleado si están bloqueados. Aunque los movimientos pueden desbloquearse en cualquier momento, puede que en algún momento queramos lanzar un proceso que se salte este control (ej. un proceso de limpieza que elimine los registros con una antigüedad superior a N años). Para ello, el proceso puede suscribirse a este evento (usando un suscriptor manual) y asignar el parámetro Handled a verdadero.
Integración con otros sistemas
Para clientes que cuenten con un sistema de control de acceso por hardware, o que quieran integrar cualquier otra solución de control de presencia con iDynamics Working Hours, la aplicación publica un servicio web, tanto por SOAP como por OData (REST), que permite automatizar el alta del reporte de horas.
Por omisión, el servicio SOAP se encontrará disponible en la URL:
https://api.businesscentral.dynamics.com/v1.0/WS/{Empresa}/Page/IDPWHR_ActivityLine
Y el servicio OData en la URL:
https://api.businesscentral.dynamics.com/v1.0/ODataV4/Company('{Empresa}')/IDPWHR_ActivityLine
El servicio permite enviar, bien mediante un XML usando SOAP, o bien mediante un objeto JSON usando la API REST (OData), los siguientes datos:
- EmployeeNumber. El número (ID) del empleado en Business Central.
- Date. La fecha para la que se está enviando el registro.
- LineNumber. Este parámetro se espera a 0; será el servidor quien lo asigne al recibir el registro.
- StartTime. La hora de inicio del registro que se está enviando.
- EndTime. La hora de fin.
- Type. Uno de los siguientes: "Ordinary Hours", "Extra Hours", "Overtime" o "Absence".
- AbsenceType. Cuando se esté enviando una ausencia, indicará el código del tipo asociado.
- Comments. Opcionalmente, comentarios asociados a la entrada.
Todos estos datos se corresponden al detalle por horas (las líneas) de un registro de reporte diario. Dado que estas líneas de detalle requieren un registro de cabecera con la fecha y la hora, si no existe se crea automáticamente al recibir un registro de detalle.