Trowel Academy
Acciones

#Partes de trabajo

La API pública permite listar, consultar, crear, actualizar, validar, rechazar y eliminar partes de trabajo. No incluye exportaciones ni operaciones masivas.

#Scopes

  • daily-reports:read permite consultar partes, empleados, tipos de hora, compras, descompuestos estimados, campos personalizados y medios.
  • daily-reports:write permite crear, actualizar, cambiar el estado, eliminar y subir medios.
  • daily-reports:costs:read añade costPerHour y totalCost a las respuestas. Sin este scope, las propiedades no aparecen.

all:read incluye la lectura de costes. all:write incluye las mutaciones.

#Operaciones y filtros

GET /api/public/v1/daily-reports
GET /api/public/v1/daily-reports/{id}
POST /api/public/v1/daily-reports
PUT /api/public/v1/daily-reports/{id}
PUT /api/public/v1/daily-reports/{id}/state
DELETE /api/public/v1/daily-reports/{id}

El listado admite from, to, projectId, clientId, employeeId, purchaseId, workType, state, numberingLineId, number, operatingCost, hourTypeIds y modifiedSince, además de los parámetros comunes de paginación. Si informas number, el filtro numberingLineId no se aplica.

Para crear o actualizar se envían employeeId, date, projectId, timeInHours, hourTypeId, workType y los demás campos del parte. El alta devuelve 201; la actualización devuelve la ficha resultante y el borrado responde 204.

#Empleados y tipos de hora

Usa GET /api/public/v1/daily-reports/employees para obtener los empleados del tenant. El identificador público es employeeId, un GUID distinto del identificador numérico interno. El listado devuelve empleados activos por defecto y admite el filtro active.

Consulta GET /api/public/v1/daily-reports/hour-types y envía el campo id elegido como hourTypeId. La respuesta también incluye systemId como dato informativo: 1 Normal, 2 Extra, 3 Nocturno, 4 Sábado y 5 Festivo.

Para aceptar un parte debe existir una asignación activa entre el empleado, el tipo de hora y la fecha indicados. Si no existe, la API devuelve Errors:PublicApi:DailyReportHourTypeConfigurationInvalid.

#Numeración

La numeración aplica esta prioridad:

  1. number informado manualmente.
  2. numberingLineId de una serie activa con scope=daily-report.
  3. Serie predeterminada de partes.

Consultar GET /api/public/v1/numbering-lines?scope=daily-report no reserva números. La reserva se hace al guardar el parte.

#Estados

Los valores admitidos son pending, validated y rejected. Un alta siempre empieza en pending.

PUT /api/public/v1/daily-reports/{id}/state responde 204. Si el parte ya tiene el estado solicitado, no añade otra entrada al historial.

#Campos personalizados y medios

GET /api/public/v1/daily-reports/custom-fields devuelve las definiciones de solo lectura. Los valores se envían en customFields al crear o actualizar el parte.

Las imágenes y firmas se suben antes mediante POST /api/public/v1/daily-report-media como multipart/form-data. Se admiten JPEG, PNG y WebP hasta 50 MB. La respuesta devuelve el id que se envía como documentId en el valor personalizado. La descarga usa GET /api/public/v1/daily-report-media/{id} y comprueba el tenant.

#Catálogos vinculados

  • GET /api/public/v1/daily-reports/purchases?projectId={projectId} devuelve compras seleccionables.
  • GET /api/public/v1/daily-reports/purchases/{purchaseId}/estimated-batches devuelve descompuestos estimados.

Los estados y tipos de trabajo no tienen catálogo. Los tipos de trabajo se envían como byMeasurement o byAdministration.

#Errores propios

El campo code del error permite distinguir estos casos sin depender del texto del mensaje:

  • Errors:PublicApi:DailyReportEmployeeNotFound: el empleado no existe, no está activo o no puede usarse en ese proyecto con la configuración actual.
  • Errors:PublicApi:DailyReportHourTypeConfigurationInvalid: no existe una asignación activa para el hourTypeId, el empleado y la fecha indicados.
  • ProjectNotFound, Errors:PublicApi:DailyReportPurchaseNotFound, Errors:PublicApi:DailyReportEstimatedBatchNotFound y NumberingLineNotFound: una relación indicada no existe dentro del tenant.
  • Errors:PublicApi:DailyReportProjectClosed: el proyecto está cerrado.
  • Errors:PublicApi:DailyReportNumberAlreadyExists: el número manual ya está en uso.
  • Errors:PublicApi:DailyReportInvalidState y Errors:PublicApi:DailyReportInvalidWorkType: el enumerado no es válido.
  • Errors:PublicApi:DailyReportCustomFieldInvalid y Errors:PublicApi:DailyReportMediaInvalid: el campo, el documento, el formato o el tamaño no son válidos.
  • Errors:PublicApi:DailyReportNotFound: el parte no existe dentro del tenant.
⌕Esc

Escribe para buscar en toda la Academy.