Ir al contenido principal

Intento de Marcación (1) - [intentMarca]

🧾 Descripción

Registra y actualiza los intentos de marcación que realiza un empleado en una agencia durante el día.
Este servicio controla cuántas veces un colaborador intenta marcar asistencia, creando o actualizando un registro diario en el ERP.

Se basa en el Doctype:

  • Intento de marcacion

Y utiliza los campos:

  • empleado

  • agencia

  • intento

  • creacion (fecha del intento)


🚀 Endpoint

POST /intent-marca

El servicio recibe datos desde el body mediante Request.


📥 Request Body

{ "empleado": "EMP-0001", "agencia": "AG-001", "intento": 1 }

Campos requeridos:

Campo Tipo Obligatorio Descripción
empleado string Código del empleado
agencia string Agencia en la que intenta marcar
intento int Intento actual enviado desde la app

🔐 Seguridad

Utiliza autenticación interna del ERP a través de:

  • dbErp() para consultas SQL

  • ServiceErp() para creación y actualización de documentos en el ERP

Requiere credenciales internas del sistema.


🧠 Flujo del Servicio (resumen real)

  1. Valida que existan los parámetros obligatorios: empleado, agencia e intento.
    Si falta alguno → retorna error.

  2. Determina la fecha actual (Y-m-d).
    Este valor se usa para registrar un intento por día.

  3. Consulta si el empleado ya tiene un registro de Intento de marcacion para el día actual:


    tpr.empleado = empleado AND tpr.creacion = fecha_actual
  4. Si existe un registro previo:

    • Se suma el intento nuevo al intento existente:


      intento_total = intento_enviado + intento_existente
    • Se actualiza el Doctype:


      PUT resource/Intento de marcacion/{name}
  5. Si NO existe un registro previo:

    • Se crea un nuevo documento Intento de marcacion:


      POST resource/Intento de marcacion
  6. Devuelve la respuesta directa del ERP.


📤 Response 200 – Ejemplo (actualizado)

✔ Caso actualización

{ "valor": true, "msn": "Actualizado correctamente", "data": { "name": "INT-MAR-00045", "empleado": "EMP-0001", "agencia": "AG-001", "intento": 3, "creacion": "2025-02-10" } }

✔ Caso creación

{ "valor": true, "msn": "Creado correctamente", "data": { "name": "INT-MAR-00046", "empleado": "EMP-0001", "agencia": "AG-001", "intento": 1, "creacion": "2025-02-10" } }

❗ Posibles Errores

1. Falta de parámetros requeridos

{ "valor": false, "msn": "No se encontró al empleado" }

2. Error en la consulta DB → dbErp

{ "valor": false, "msn": "Error al consultar ERP", "data": [] }

3. Error en creación o actualización en ERP

{ "valor": false, "msn": "Error al registrar intento", "data": { ...respuesta ERP... } }

📚 Doctype utilizado

Intento de marcacion

Campos usados:

{ "empleado": "string", "agencia": "string", "intento": "int", "creacion": "date" }

🗃 Lógica en pseudo-código

employee = request.empleado agencia = request.agencia intento = request.intento fecha = hoy (Y-m-d) if falta algún parámetro: return error consulta = GET Intento de marcacion where empleado = employee and creacion = fecha if existe_registro: nuevo_intento = intento + registro.intento PUT Intento de marcacion/{name} con { empleado, agencia, intento: nuevo_intento, creacion } else: POST Intento de marcacion con { empleado, agencia, intento, creacion } return respuesta