Reloj Control : Manual Técnico Synclock

Reloj Control : Manual Técnico Synclock



Nombre API

ApiRecLockv2

Documentación Synclock

Para consumir todos los servicios de la API es necesario conocer la siguiente información de responsabilidad del área TI de su empresa:
  1.  La URL base donde fue instalada la API.
  2. Todos los servicios de la API requieren de un token que debe ser agregado en el header de la petición. El nombre de este token es: X-Token. El valor de este header, debe ser configurado en el archivo “appsettings.json”, parámetro “token”.
  1. Para aquellos servicios en los que se consume información, se entregaran como máximo 50 registros o lo que indique el parámetro: registros_x_lote del archivo “appsettings.json”.

A continuación, se detallan todos los servicios de la API:

/api/AltasPersonal (método GET)

Obtiene altas de personal y posteriores modificaciones en datos claves de la ficha de personal de WinPer.
El máximo de registros que se pueden obtener por cada llamada es de 50 registros o lo que indique el parámetro registros_x_lote del sitio.
La condición para obtener estos registros es que se encuentren en el estado PENDIENTE.
Una vez enviado los registros son cambiados a ENPROCESO.

Filtros:

rutEmpresa (opcional), parte numérica del rut de la empresa del trabajador
codEmpresa (opcional), código de la empresa del trabajador
codPlanta (opcional), código de planta del trabajador
codSucursal (opcional), código de la sucursal del trabajador
tipoTrabajador (opcional), tipo de trabajador
formaPago (opcional), forma de pago del trabajador

Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
404 (Bad request), se da cuando no existen registros que enviar
500 (Internal Error), se da cuando existe un problema a nivel del api
200 (OK), se da cuando todo estuvo bien. En este caso el resultado que entrega el api es la siguiente:

{

      "coderr": 0,

      "msgerr": "",

      "total_lote": 50,

      "total_trabajadores": 91,

      "trabajadores": [

           {

            "nro_trabajador": "17",

            "dv_trabajador": "5",

            "rut_trabajador": "17777777",

            "dv_rut_trabajador": "1",

            "nombre": "Matias Ignacio",

            "ape_paterno_trabaj": "Lopez",

            "ape_materno_trabaj": "Jara",

            "fec_nacimiento": "1995-08-05T00:00:00",

            "fec_ini_contrato": "2020-06-08T00:00:00",

            "fec_fin_contr_vige": "2024-01-01T00:00:00",

            "cod_sexo": "M",

            "casilla_e_mail": "innovasoft@innovasoft.cl",

            "correo_personal": "",

            "codigo_tipo_contra": "1",

            "direccion": "AV. Bicentenario 1, Depto 81E",

            "cod_comuna": "13132",

            "fono": "",

            "fono2": "",

            "tarjeta_control": "17",

            "cod_centro_costo": "7",

            "centro_costo": "Abogados y Procuradores",

            "cod_area_perten": "0",

            "area_perten": "No Definida",

            "cod_cargo": "16",

            "cargo_trabajador": "Egresado",

            "cod_jornada": "22",

            "jornada": "ART 22",

            "cod_unidad_adminis": "0",

            "unidad_administrat": "No definida",

            "convenio": "0",

            "nombre_convenio": "No Sindicalizado",

            "cod_sindicato": "0",

            "sindicato": "No Sindicalizado",

            "cod_lugar_pago": "0",

            "lugar_pago": "No definida",

            "cod_sucursal": "0",

            "sucursal": "Casa Matriz",

            "cod_tipo_trabajado": "G",

            "tipo_trabajador": "Nivel General",

            "cod_forma_pago": "D",

            "forma_pago": "Deposito Banco",

            "tipo_contabilizaci":"N",

             "cod_lugprestacion":"0",


             "lugar_prestacion":"No Definido",

            "rut_empresa": "76644630,

            "dv_rut_empresa": "2",

            "cod_empresa": "21",

            "cod_planta": "1",

            "codmov": "D" ,

            "cod_vigen_trabajad": "N",

            "fecha_novig": "2024-01-01T00:00:00",

            "motivo_novig": "CAMBIO DE EMPRESA/PLANTA" ,               

           },

           {

               ……

            }

      ]

}

/api/AltasPersonal (método PUT)

Deja en estado TRAPASADA todas las altas enviadas. Debe ser llamada después de cada solicitud de altas (GET).

Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
500 (Internal Error), se da cuando existe un problema a nivel del api.
200 (OK), se da cuando las altas enviadas se dejaron en TRASPASADO.
 

/api/LicenciasMedYFeriados (método GET)

Obtiene las licencias médicas y comprobantes de feriados ingresados en WinPer.
El máximo de registros que se pueden obtener por cada llamada es de 50 registros o lo que indique el parámetro registros_x_lote del sitio.
La condición para obtener estos registros es que se encuentren en el estado PENDIENTE.
Una vez enviado los registros son cambiados a ENPROCESO.

Filtros:

rutEmpresa (opcional), parte numérica del rut de la empresa del trabajador.
codEmpresa (opcional), código de la empresa del trabajador.
codPlanta (opcional), código de planta del trabajador.
codSucursal (opcional), código de la sucursal del trabajador.
tipoTrabajador (opcional), tipo de trabajador.
formaPago (opcional), forma de pago del trabajador.

Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
404 (Bad request), se da cuando no existen registros que enviar.
500 (Internal Error), se da cuando existe un problema a nivel del api.
200 (OK), se da cuando todo estuvo bien. En este caso el resultado que entrega el api es la siguiente:


{

      "coderr": 0,

      "msgerr": "",

      "total_lote": 50,

      "total_trabajadores": 91,

      "trabajadores": [

           {

            "nro_trabajador": "17",

            "dv_trabajador": "5",

            "rut_trabajador": "17777777",

            "dv_rut_trabajador": "1",

            "codigo_justificacion""F0050",

            "nro_licencia""0",

            "serie_licencia""",

            "correl_feriados""2",

            " fecha_inicio ": "2020-06-13T00:00:00",

            " fecha_termino ": "2020-06-15T00:00:00",

            "cantidad": 2.00000,

            "unidad_medida": "DIAS",

              "hora_inicio": "2024-05-15T09:00:00",

           "hora_termino": "2024-05-15T13:30:00",

           "reposo_licencia""0",

           "reposo_parcial": "",

            "cod_tipo_licencia""",

            "rut_empresa": "76644630,

            "dv_empresa": "2",

            "cod_movimiento": "I"                

            "cod_empresa": "21",

            "cod_planta": "1",

            "id_registro": "50",

 
           },

           {

               ……

            }

      ]

}


/api/LicenciasMedYFeriados (método PUT)

Deja en estado TRAPASADA todas las licencias y ausencias enviadas. Debe ser llamada después de cada solicitud de licencias y ausencias (GET)

Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
500 (Internal Error), se da cuando existe un problema a nivel del api.
200 (OK), se da cuando las solicitudes de licencias y ausencias se dejaron en TRASPASADA.

 /api/Permisos (método GET)

Obtiene cualquier tipo de permiso o ausencia ingresada en WinPer y que debe ser puesta a disposición del reloj para ser consumida por éste.
El máximo de registros que se pueden obtener por cada llamada es de 50 registros o lo que indique el parámetro registros_x_lote del sitio.
La condición para obtener estos registros es que se encuentren en el estado PENDIENTE.
Una vez enviado los registros son cambiados a ENPROCESO.

Filtros:

rutEmpresa (opcional), parte numérica del rut de la empresa del trabajador.
codEmpresa (opcional), código de la empresa del trabajador.
codPlanta (opcional), código de planta del trabajador.
codSucursal (opcional), código de la sucursal del trabajador.
tipoTrabajador (opcional), tipo de trabajador.
formaPago (opcional), forma de pago del trabajador.

Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
404 (Bad request), se da cuando no existen registros que enviar.
500 (Internal Error), se da cuando existe un problema a nivel del api.
200 (OK), se da cuando todo estuvo bien. En este caso el resultado que entrega el api es la siguiente:


{

      "coderr": 0,

      "msgerr": "",

      "total_lote": 50,

      "total_trabajadores": 91,

      "trabajadores": [

           {

            "nro_trabajador": "17",

            "dv_trabajador": "5",

            "rut_trabajador": "17777777",

            "dv_rut_trabajador": "1",

            “codigo_Permiso”: "PCGSMinutos"

            " fecha_inicio ": "2023-08-04T00:00:00",

            " fecha_termino ": "2023-08-04T00:00:00",

            "cantidad": 330.00000,

              "unidad_medida": "MIN",

           "hora_inicio": "2023-08-04T09:00:00",

           "hora_termino": "2023-08-04T14:30:00",

           "reposo_licencia": "0",

          "reposo_parcial":  "",

          "cod_tipo_licencia": "",
          "rut_empresa": "76644630",

           "dv_empresa": "2",

           "cod_movimiento": "I"                

            "cod_empresa": "21",

            "cod_planta": "1",

            "id_registro": "35,

           },

           {

               ……

            }

      ]

}


/api/ Permisos (método PUT)

Deja en estado TRAPASADA todos los tipos de permiso o ausencia enviadas. Debe ser llamada después de cada solicitud de tipo de permiso o ausencia (GET)

Salida
401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
500 (Internal Error), se da cuando existe un problema a nivel del api.
200 (OK), se da cuando las solicitudes de permisos o ausencias se dejaron en TRASPASADA.

 

/api/Ausencias (método POST)

Permite enviar desde el reloj cualquier tipo de ausencia que registre el reloj y que deben ser informadas a WinPer, como, por ejemplo, las faltas, fallas, o atrasos.

Recibe como parámetro en el BODY los siguientes campos:


{

  "nro_trabajador": { 

      "numero": 17777777,

      "dv": "3"

  },

  "rut_trabajador": { 

      "numero": 17777777,

      "dv": "3"

  },

  "codigo_ausencia": "TARD",

  "fecha_inicio": "2022-12-15T19:50:26.524Z",

  "fecha_termino": "2022-12-15T19:50:26.524Z",

  "cantidad": 4,

  "rut_empresa": {

      "numero": 76644630,

      "dv": "2"

  },

  "empresa": {

      "codigo": 9

  },

  "planta": {

      "codigo": 1

  },

  "cod_movimiento": "I"

}


Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
404 (Bad request), se da cuando vienen datos incorrectos en el Body.
500 (Internal Error), se da cuando existe un problema a nivel del api.
201 (Created), se da cuando fueron recepcionados correctamente los datos desde el reloj control.
 

/api/Sobretiempos (método POST)

Permite enviar desde el reloj cualquier tipo de sobretiempo que calcule el reloj y que deben ser informadas a WinPer, como por ejemplo, horas extras al 50%, 100%, etc.

Recibe como parámetro en el BODY los siguientes campos:


{

    "nro_trabajador": {

        "numero": 17777777,

        "dv": "3"

    },

    "rut_trabajador": {

        "numero": 17777777,

        "dv": "3"

    },

    "codigo_sobretiempo": "HH60",

    "fecha_inicio": "2022-05-06",

    "fecha_termino": "2022-05-06",

    "cantidad": 3.1415,

    "rut_empresa": {

        "numero": 76644630,

        "dv": "2"

    },

    "empresa": {

        "codigo": 9

    },

    "planta": {

        "codigo": 1

    },

    "cod_movimiento": "I"

}


Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
404 (Bad request), se da cuando vienen datos incorrectos en el Body.
500 (Internal Error), se da cuando existe un problema a nivel del api.
201 (Created), se da cuando fueron recepcionados correctamente los datos desde el reloj control.

/api/Sobretiempos Evt (método POST)

Permite enviar desde el reloj cualquier tipo de sobretiempo que calcule el reloj y que deben ser informadas a WinPer, como por ejemplo, horas extras al 50%, 100%, etc.

Recibe como parámetro en el BODY los siguientes campos:


{

    "nro_trabajador": {

        "numero": 17777777,

        "dv": "3"

    },

    "rut_trabajador": {

        "numero": 17777777,

        "dv": "3"

    },

    "codigo_sobretiempo_evt_bt": "HH60",

    "fecha_turno": "2022-05-06",

    "nro_turno": "2",

    "cantidad": 15,

    "rut_empresa": {

        "numero": 88056400,

        "dv": "5"

    },

    "empresa": {

        "codigo": 1

    },

    "planta": {

        "codigo": 3

    },

    "cod_movimiento": "D"

}


Salida

401 (No autorizado), se da cuando al llamar el api no se le entrega el token de seguridad que permite la ejecución del api.
404 (Bad request), se da cuando vienen datos incorrectos en el Body.
500 (Internal Error), se da cuando existe un problema a nivel del api.
201 (Created), se da cuando fueron recepcionados correctamente los datos desde el reloj control.



Activación Funcionalidad

Componentes para activar funcionalidad

reclock.exe
reasis60.exe
referi60.exe
relice60.exe
remper60.exe
alt6_sql_reclock_001 al 008.sql

Instalación en IIS.

Antes de instalar en el IIS debe instalar ASP.NET Core Runtime 6.0.11 Hosting bundle en el servidor donde se encuentra el IIS. Este paquete lo puede descargar desde la url:

https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-6.0.11-windows-hosting-bundle-installer

Se requerirá reiniciar el servidor.

(Si el servidor IIS ya lo tiene instalado olvide este paso.)

 1- A continuación, descomprima el zip enviado por Innovasoft en el directorio donde instalará el sitio.

Edite el archivo appsettings.json y en la entrada MyConnectionString coloque el string de conexión encriptado. El string de conexión ármelo con la semilla que se indica en la entrada seed.

 2- Abra el administrador de sitios del IIS y cree el sitio RecLock2.0


 3- Para probar que la Api haya quedado correctamente instalada, debe ejecutar dos servicios para este efecto: 


El token que verifica estos servicios será el que se coloque en el archivo appsettings.json, propiedad "tokensistema". Si no existe esta tag en el .json, favor agregue ese tag en forma temporal y después de comprobar que el api opere correctamente lo puede eliminar. En tokensistema pruebe colocar cualquier valor (ejemplo: sistema). Al invocar el api HolaMundo o TestBd, el api chequeará que ese token sea pasado en el header de la petición cuya key debe ser: X-TokenSistema y el valor puesto en esa key sea el que se colocó en tokensistema. En el caso de HolaMundo le mostrará también la versión de la Api.



Para probar estas apis puede utilizar Soap-UI o bien PostMan. HolaMundo testea si está llegando al api TestBD testea si el api está llegando a la Base de Datos que se configuro en appsettings.json. 

Mapeo de la API

1- Descripción Datos a Consumir (GET): 

/api/AltasPersonal Mediante este método es posible consumir las altas de personal y posteriores modificaciones en datos claves de la ficha de personal de WinPer. Método válido para trabajadores NO eventuales y Eventuales.


















** Desactivación: cod_mov=D, cod_vigen_trabajad=N, fecha_novig=“una fecha x” y motivo_novig “cualquiera distinto de “CAMBIO DE EMPRESA/PLANTA” y “CIERRE MENSUAL” significa que el trabajador fue desactivado por el usuario de WinPer en la empresa / planta que se informa. Puede o no tener informado el campo fec_fin_contr_vige (fecha término de contrato).  Este caso siempre tiene fecha_novig. Motivo_novig es opcional en caso de la desactivación, depende si el usuario escribió o no un motivo de desactivación.      
Los parámetros de filtrado son rutEmpresa, codEmpresa, codPlanta, codSucursal, tipoTrabajador, formaPago.

2- Descripción Datos a Consumir (GET): /api/LicenciasMedYFeriados 

Mediante este método es posible consumir las licencias médicas y comprobantes de feriados ingresados en WinPer. Método válido sólo para trabajadores NO eventuales.



Los parámetros de filtrado son rutEmpresa, codEmpresa, codPlanta, codSucusal, tipoTrajador, formaPago.

3- Descripción Datos a Consumir (GET): /api/Permisos 

Mediante este método es posible consumir cualquier tipo de permiso o ausencia ingresada en WinPer y que debe ser puesta a disposición del reloj para ser consumida por éste. Método válido sólo para trabajadores NO eventuales.


Los parámetros de filtrado son rutEmpresa, codEmpresa, codPlanta, codSucursal, tipoTrabajador, formaPago.

4- Descripción Datos Proveer (POST): /api/Ausencias 

Mediante la invocación de este método es posible enviar desde el reloj cualquier tipo de ausencia que registre el reloj y que deben ser informadas a WinPer, como, por ejemplo, las faltas, fallas o atrasos. Método válido sólo para trabajadores NO eventuales.


Los datos recibidos quedan en la tabla transitoria clock_estructura.

5- Descripción Datos Proveer (POST): /api/Sobretiempos 

Mediante la invocación de este método es posible enviar desde el reloj cualquier tipo de sobretiempo que calcule el reloj y que deben ser informadas a WinPer, como, por ejemplo, horas extras al 50% o 100%. Método válido sólo para trabajadores NO eventuales.


Los datos recibidos quedan en la tabla transitoria clock_estructura.

Proyecto Postman 

Un ejemplo de llamadas desde postman se encuentra en RecLock 2.0.postman_collection.json. Esta colección la puede importar desde Postman como archivo.