35 lines
3.1 KiB
Markdown
35 lines
3.1 KiB
Markdown
# ADPRMT017 – Movimientos de Capacitación (2026-10-05)
|
||
|
||
Pedido de RRHH: indicador **Horas de Capacitación**. Por cada colaborador se registran las capacitaciones **requeridas** con sus horas y luego las **tomadas**, que cubren a las requeridas.
|
||
|
||
## Backup
|
||
`addir\backup_adprmt017_20261005\` contiene adprmt017.4gl, .rdd, adfmmt017.4fd/.per y los binarios que estaban en `addir\bin` y `PROYECTO\bin`.
|
||
Para volver atrás: copiar `adprmt017.4gl` del backup sobre el actual, recompilar y desplegar. Las tablas nuevas no afectan a nadie si no se usan.
|
||
|
||
## Qué se agregó
|
||
| Pieza | Detalle |
|
||
|---|---|
|
||
| `adtb00009` | 2 movimientos nuevos: `CAPACITACION REQUERIDA`, `CAPACITACION TOMADA` (cod_mto = MAX+1) |
|
||
| `adtb00059` | Catálogo de capacitaciones: nombre, tipo de evento (1 Seminario, 2 Curso, 3 Taller, 4 Conferencia, igual que adtb00022) y horas estándar |
|
||
| `adtb00060` | Detalle por empleado, ligado a `adtb00020.num_trx`. `tipo_reg` R/T; una T apunta a la R que cubre (`id_requerida`) |
|
||
| `vw_capacitacion_empleado` | Por empleado: requeridas con sus horas tomadas y pendientes, más las tomadas que no tienen requerida (para BI y Excel) |
|
||
| `adfmwd017.per` | Ventana nueva de capacitación. Se abre igual que la de vacaciones, después del puesto |
|
||
| `adprmt017.4gl` | Captura (`capacitacion('A')`), consulta (`'C'`), grabado dentro de la misma transacción y anulación junto con la acción |
|
||
|
||
## Flujo
|
||
1. **Nuevo**, elegir el movimiento *CAPACITACION REQUERIDA* y la ficha. Se abre la ventana: escoger la capacitación del catálogo (o usar el botón **Nuevo curso**). Las horas se toman del catálogo y se pueden editar.
|
||
2. Cuando la persona toma el curso: **Nuevo**, elegir *CAPACITACION TOMADA* y en **Requerida a cubrir** escoger la pendiente. Se llena el curso y las horas pendientes; luego se ponen las fechas, las horas reales, la institución y el costo.
|
||
3. El recuadro **Resumen del empleado** muestra el total de horas requeridas, tomadas y pendientes.
|
||
4. **eLiminar** (anular) la acción también anula su detalle de capacitación.
|
||
|
||
## Despliegue (pendiente)
|
||
1. Correr `adprmt017_capacitacion.sql` en marmotech (la sintaxis se validó en .40.8 con NOEXEC; no se ejecutó nada).
|
||
2. Compilar la forma y el programa. Ambos compilan limpio en 3.20.14 y en fgl602:
|
||
`fglform adfmwd017.per` → `adfmwd017.42f`; `fglcomp adprmt017.4gl` → `adprmt017.42m`.
|
||
3. Copiar `adprmt017.42m` y `adfmwd017.42f` a `PROYECTO\bin`.
|
||
4. No hace falta tocar `adfmmt017.4fd` ni regenerar smarmotech.sch: las tablas nuevas se usan con SQL dinámico.
|
||
|
||
## Notas
|
||
- **adprmt019 (Adiestramientos)** no se tocó. Usa `adtb00022`, que solo tiene 2 registros, no guarda horas ni distingue requerida de tomada, y tiene **usuario y clave en claro** en el MAIN (`kpolanco`). Además las acciones del menú están cruzadas: *nuevo* llama a la búsqueda y *buscar* llama a la captura. Se puede retirar o migrar después.
|
||
- Para **Rotación**: el movimiento 4 DESVINCULAR tiene `tipo_mov = 'CANCELAR'`, pero adprmt017 marca `status_t='T'` solo si es `'TERMINO'`. Por eso las desvinculaciones no marcan al empleado como terminado y además no guardan la causa. Hay que revisarlo antes de automatizar la rotación.
|