Ir al contenido principal

Solicitud de Licencias(Solicitar solicitud de licencia (1)) - [store]

🧾 Descripción

Crea una Solicitud de Licencias para un empleado, validando previamente:

  • Tipo de licencia permitido

  • Fechas y rangos máximos establecidos por normativa interna

  • Archivos obligatorios según el tipo de licencia

  • Que el empleado no tenga otra solicitud en borrador

El servicio registra en el ERP un nuevo documento "Solicitud de Licencias" si cumple todas las reglas definidas.


🚀 Endpoint

POST /solicitud-licencias/store


📥 Request Body – Parámetros

Campo Tipo Obligatorio Descripción
empleado string ID del empleado
tip_licencia string Tipo de licencia (validado contra $this->tipos_licencias)
fecha_ini date Fecha de inicio de la licencia
fecha_fin date Fecha fin de la licencia
declaracion_jurada file/url depende Obligatorio si tip_licencia = "Familiar Enfermo"
hoja_hospitalizacion file/url depende Obligatorio si tip_licencia = "Familiar Enfermo"
uci file/url depende Obligatorio si tip_licencia = "Familiar Enfermo"
acta_nacimiento file/url depende Obligatorio si tip_licencia = "Paternidad"
acta_defuncion file/url depende Obligatorio si tip_licencia = "Licencia Por Luto"

🧠 Flujo del Servicio (resumen real)

  1. Validación de campos obligatorios

    • Verifica empleado, tipo de licencia válido, fecha_ini y fecha_fin.

  2. Cálculo de días de licencia


    $dias = (new DateTime(fecha_ini))->diff(new DateTime(fecha_fin))->days;
  3. Validaciones específicas por tipo de licencia

    Tipo de licencia Requisitos Máximo días
    Familiar Enfermo declaracion_jurada, hoja_hospitalizacion, uci 7
    Paternidad acta_nacimiento 10
    Licencia Por Luto acta_defuncion 5
    Licencia sin goce 30
  4. Validación: El empleado no debe tener una solicitud en borrador

    GET Solicitud de Licencias filters: [["id_empleado","=",empleado],["docstatus","=",0]]
  5. Construcción del body para enviar al ERP

    • Incluye campos adicionales dependiendo del tipo de licencia.

  6. Creación de la solicitud

    POST resource/Solicitud de Licencias
  7. Retorno de respuesta estándar


📤 Response 200 – Ejemplo exitoso

{ "valor": true, "msn": "Solicitud de licencias enviada", "data": [] }

(El campo data retorna el borrador encontrado, si existía.)


⚠️ Posibles Errores

1. Falta de parámetros

{ "valor": false, "msn": "Envie el empleado" }

2. Tipo de licencia inválido

{ "valor": false, "msn": "Envie el tipo de licencia válido" }

3. Fechas incompletas

{ "valor": false, "msn": "Envie la fecha de inicio" }

4. Exceso de días permitidos

{ "valor": false, "msn": "El rango de fecha no debe sobrepasar los 7 dias" }

5. Documentación obligatoria faltante

{ "valor": false, "msn": "Suba su hoja de hospitalizacion" }

6. Solicitud duplicada en borrador

{ "valor": true, "msn": "No se puede crear, Ya tiene una solicitud en borrador" }

7. Error al registrar en ERP

{ "valor": false, "msn": "Ocurrió un error al crear la Solicitud de Licencias", "error": { ... } }

🗃 Lógica en Pseudocódigo

if empleado vacío → error if tipo no permitido → error if fechas vacías → error dias = fecha_fin - fecha_ini switch tipo_licencia: Familiar Enfermo: validar documentos validar dias <= 7 Paternidad: validar acta_nacimiento validar dias <= 10 Luto: validar acta_defuncion validar dias <= 5 Licencia sin goce: validar dias <= 30 buscar borradores: GET Solicitud de Licencias where empleado & docstatus=0 si existe → error body = { empleado, tipo, fechas, documentos } crear solicitud: POST Solicitud de Licencias si ERP responde error → retornar error retornar éxito


📚 Estructuras usadas

Solicitud de Licencias (POST)

Campos enviados:

{ "id_empleado": "string", "tip_licencia": "string", "fecha_ini": "YYYY-mm-dd", "fecha_fin": "YYYY-mm-dd", "declaracion_jurada": "url (opcional)", "hoja_hospitalizacion": "url (opcional)", "uci": "url (optional)", "acta_nacimiento": "url (optional)", "acta_defuncion": "url (optional)" }