Crear Marcación (1) - [crear]
🧾 Descripción
Registra una marcación de entrada o salida para un empleado, validando previamente:
-
Datos obligatorios del request.
-
Duplicidad de marcaciones.
-
Estado del empleado (Activo / PreActivo).
-
Horario asignado (tardanza y horas extra).
-
Reglas especiales según modalidad (offline / online).
-
Registro simultáneo en:
-
ERP (Employee Checkin)
-
Base de datos interna (tabla marcaciones)
-
Es uno de los servicios centrales del módulo de asistencia.
🚀 Endpoint
POST /marcaciones/store
Este servicio sí recibe parámetros en el request.
📥 Request Body (Campos usados)
Campos relevantes
| Campo | Tipo | Descripción |
|---|---|---|
| empleado | string | ID del empleado |
| image | string | URL base64 o imagen enviada |
| fecha_asistencia | date | Fecha de la marcación |
| type | string | “entrada” o “salida” |
| passport_number | string | Documento del empleado |
| coordinates | string | Lat/Lon opcional |
| isOfline | int | 1 si se marcó offline |
🔐 Seguridad
El servicio requiere:
-
Token válido via middleware Laravel.
-
Acceso interno al ERP mediante
general->insertERPNew()ygeneral->dbErp().
🧠 Flujo del Servicio (resumen real)
1. Validación de campos
Se ejecuta verifyFields($request) y si falla, retorna de inmediato.
2. Prevención de fechas inválidas
Si la marcación es online y la fecha es mayor al día actual → rechaza.
3. Validación de duplicidad
Se construye:
Luego: validateDuplicateDialing()
Si ya existe marcación → error.
4. Obtención del turno del empleado
Consulta ERP:
-
Hora de inicio (
start_time) -
Hora de salida (
end_time) -
Datos básicos del empleado
Si es “entrada” → valida que pase de PreActivo → Activo.
5. Cálculo de tardanza u horas extra
-
Si el empleado marca entrada más de 5 min tarde → genera tardanza
"HH:MM". -
Si marca salida con +60 minutos → horas extra.
6. Registro en ERP
Crea documento:
Employee Checkin
7. Registro en base de datos interna
Inserta en tabla marcaciones:
8. Generación de asistencia
Si la marcación es salida, ejecuta: storeAttendance($request)
y devuelve datos adicionales.
No hay comentarios para mostrar
No hay comentarios para mostrar