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 sí ID del empleado tip_licencia string sí Tipo de licencia (validado contra $this->tipos_licencias ) fecha_ini date sí Fecha de inicio de la licencia fecha_fin date sí 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) Validación de campos obligatorios Verifica empleado, tipo de licencia válido, fecha_ini y fecha_fin. Cálculo de días de licencia $dias = ( new DateTime (fecha_ini))-> diff ( new DateTime (fecha_fin))->days; 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 Validación: El empleado no debe tener una solicitud en borrador GET Solicitud de Licencias filters : [[ "id_empleado" , "=" ,empleado], [ "docstatus" , "=" ,0]] Construcción del body para enviar al ERP Incluye campos adicionales dependiendo del tipo de licencia. Creación de la solicitud POST resource/Solicitud de Licencias 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)" }