# Verifica los documentos descargados (1, 2) - [verifyDownloadedDocuments]

## **Descripción**

*Este servicio valida si un empleado ha completado la **descarga obligatoria de documentos institucionales** dentro del aplicativo.*  
*Además, verifica si el empleado ha registrado previamente sus documentos de ingreso (elección de banco, declaración de AFP/ONP, etc.).*

*El proceso consulta tanto **ERPNext** como **la base de datos MySQL2** para construir un resumen de los documentos descargados y determinar si el empleado tiene **todos los documentos obligatorios** descargados.*

---

## **Parámetros**

<div class="_tableContainer_1rjym_1" id="bkmrk-par%C3%A1metro-tipo-descr"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1009" data-start="857"><thead data-end="891" data-start="857"><tr data-end="891" data-start="857"><th data-col-size="sm" data-end="869" data-start="857">Parámetro</th><th data-col-size="sm" data-end="876" data-start="869">Tipo</th><th data-col-size="md" data-end="891" data-start="876">Descripción</th></tr></thead><tbody data-end="1009" data-start="926"><tr data-end="1009" data-start="926"><td data-col-size="sm" data-end="940" data-start="926">`$employee`</td><td data-col-size="sm" data-end="949" data-start="940">string</td><td data-col-size="md" data-end="1009" data-start="949">Código del empleado (Employee.name) que se va a validar.</td></tr></tbody></table>

</div></div>---

## **Proceso general**

1. **Validación inicial de datos del empleado**
    
    
    - Realiza una consulta a ERPNext para obtener los campos:
        
        
        - `eleccion_banco`
        - `afiliado_fondo_pensiones`
        - `elección_fondo_pensiones`
    - Si el empleado no existe, devuelve un error.
2. **Validación de documentos de ingreso**
    
    
    - Antes de validar documentos descargados, se comprueba que el empleado ya **subió sus documentos de ingreso**.
    - Si falta alguno de estos:
        
        
        - Elección de banco
        - Si está afiliado o no al fondo de pensiones
        - Selección AFP u ONP
        
        → Se retorna:  
        **"Primero suba los documentos de ingreso"**
3. **Obtención del historial de descargas**
    
    
    - Consulta la tabla <span style="color: rgb(224, 62, 45);">**`historial_procesos_app`**</span> en MySQL2.
    - Se recuperan registros para los procesos:
        
        
        - descargaContratoTrabajo
        - descargaReglamentoInternoTrabajo
        - descargaRecomentacionesSST
        - descargaConvenioDescuento
        - descargaDeclaracionJuradaDomicilio
        - descargadeclaracionJuradaSNPSPP
        - descargaPoliticasSalariales
        - registroEPP
        - descargaPETSAlmacenamiento
        - descargaPETSManipulacion
        - descargaMOF
        - descargaPoliticasDescuentosPorDanios
4. **Construcción del resumen por empleado**
    
    
    - Cada documento es asignado como:
        
        
        - `1` → descargado
        - `0` → pendiente
5. **Validación del 100% de documentos**
    
    
    - Si todos los procesos están registrados → <span style="color: rgb(224, 62, 45);">**`total_documentos = true`**</span>
    - Si falta alguno → <span style="color: rgb(224, 62, 45);">**`total_documentos = false`**</span>
6. **Validación adicional: Cambio de modalidad**
    
    
    - Si el empleado tiene alguna "Solicitud de Cambio de Modalidad" aprobada (`docstatus != 2`), se considera **descargado automáticamente el contrato de trabajo**.
7. **Retorno final del estado del empleado**

---

## **Respuesta exitosa**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-true%2C-%22da"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>    <span class="hljs-attr">"empleado"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"EMP-001"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaContratoTrabajo"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaReglamentoInternoTrabajo"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaRecomendacionesSST"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaConvenioDescuento"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaDeclaracionJuradaDomicilio"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaDeclaracionJuradaSNPSPP"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaPoliticasSalariales"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"registroEPP"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaPETSAlmacenamiento"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaPETSManipulacion"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaMOF"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"descargaPoliticasDescuentosPorDanios"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"total_documentos"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span>  <span class="hljs-punctuation">}</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>---

## **Posibles respuestas con error**

### ● Empleado no encontrado

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-false%2C-%22m"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Empleado sin datos"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### ● Documentos de ingreso no completados

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-false%2C-%22m-1"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span> <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Primero suba los documentos de ingreso"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>