Julio de 2026

Descansos separados del fichaje, inicio de sesión y almacén clave-valor por webhook, consumo de la API por clave y consultas rápidas desde el SDK.

Lo más destacado del mes: el control horario separa los descansos del fichaje, y las apps externas pueden gestionar sesiones de usuario por webhook.

RRHH

  • Descansos separados del fichaje. En el control horario, los descansos son una capa propia, con su historial. No se pueden abrir dos a la vez y se cierran solos al llegar a su tope.
  • Turnos y fichajes, por minutos. La cobertura de un turno se calcula por los minutos en que coinciden el plan y los fichajes. Fichar ya no modifica el turno.
  • Las ausencias mandan. Una ausencia laboral se refleja al momento en los turnos, al crearla, al editarla y al borrarla.

Para desarrolladores

  • Sesiones y cuentas por webhook. iniciarsesion, sesion, cerrarsesion, crearcuenta, activarcuenta, recuperarpass y cambiarpass funcionan en modo webhook. Así una app externa gestiona sus propios usuarios.
  • Almacén clave-valor. getkv y setkv guardan y leen valores sin sesión de usuario.
  • Consumo de la API por clave. La sección Uso API cuenta las peticiones por minuto. Cada respuesta trae el consumo reciente de tu clave en las cabeceras X-Dinaup-Requests-10s a X-Dinaup-Requests-6h, y cuánto tardó en X-Dinaup-Duration-Ms.
  • Contar y sumar sin un informe. QuickQueryRunner hace CountAsync y SumAsync sobre una sección, con filtros.
  • Descansos desde el SDK. Break_StatusAsync, Break_StartAsync y Break_StopAsync.
  • MyDinaup más completo. La biblioteca generada documenta los scripts, los documentos dinámicos y las reglas de cada campo. Regenerarla da siempre los mismos nombres.
  • Informes que toleran columnas ausentes. Con TolerateMissingColumns, un informe al que le falta una columna no falla.
  • S3 dice qué falla. SaludAsync explica por qué no responde un bucket, y BytesUploadThrowAsync lanza el error de la subida.
  • iaquery devuelve hasta 30.000 filas por página.

Cambios que rompen

  • En el código generado, el campo TipoDeFactura pasa a TipoDeVenta, TipoDeCompra o TipoDeOperacion, según la sección.
  • TimesheetClockResponse pierde OpenedShiftTypeID y ContinuityWithNextShift, porque fichar ya no modifica el turno.
  • LoadAllRowsAsync lanza InvalidOperationException si llega a maxRows con filas pendientes. Antes devolvía una lista cortada.
  • Logs.BeginMeasure pierde el parámetro labelKey.

En esta página