Files
MBS/PROYECTO/addir/adprmt017_desvinculacion_LEEME.md
T

35 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADPRMT017 – Desvinculación por Acción de Personal (2026-10-05)
Objetivo: el indicador de **Rotación** (mes a mes y por causa). La desactivación del empleado ahora se hace **solo** por la acción de personal.
## Antes
- **noprmt016** ("Activar/Desactivar") ponía `adtb00003.status_t = 'D'` sin fecha ni causa.
- En **noprmt003** RRHH escribía a mano la `fecha_salida` y el motivo en `observacion` (texto libre: "DESAHUCIO", "RENUNCIA 30/03/2026"...).
- En adprmt017 el movimiento 4 DESVINCULAR (`tipo_mov = 'CANCELAR'`) solo grababa `adtb00020`. El código esperaba `'TERMINO'`, que no existe, y además ese bloque estaba fuera de la transacción.
## Ahora
| Programa | Cambio |
|---|---|
| adprmt017 | DESVINCULAR (tipo CANCELAR, DESVINCULAR o TERMINO) abre la ventana `adfmwd018`: fecha de salida, causa (catálogo), si es recontratable y un detalle. Dentro de la misma transacción: inserta en `adtb00062` y actualiza `adtb00003` (`status_t='D'`, `fecha_salida`, y el motivo al **inicio** de `observacion`, conservando lo que ya había detrás). Si el empleado ya está en D, no deja continuar. |
| adprmt017 (eLiminar) | Anular una desvinculación nueva anula `adtb00062` y **reactiva** al empleado (status NULL, fecha_salida NULL) si no tiene otra salida vigente. Las acciones viejas, sin detalle, no reactivan a nadie. |
| noprmt016 | Se quitó la opción **Desactivar**. Se dejó **Activar** (para reingresos). |
| noprmt003 | `fecha_salida` salió de las 2 UPDATE activas y en `nofmmt003.4fd` quedó `noEntry` (compilar en GST). `observacion` sigue editable. |
## Tablas y vista (ya creadas en .40.8 / marmotech)
- `adtb00061` causas: 1 Renuncia, 2 Abandono, 3 Dimisión (V); 4 Desahucio, 5 Despido, 6 Cierre de operación, 7 Fin de contrato/temporada, 8 No superó prueba (I); 9 Mutuo acuerdo, 10 Pensión, 11 Fallecimiento, 12 Traslado dentro del grupo (`cuenta_rotacion = 'N'`), 99 Otra (O).
- `adtb00062` detalle: guarda una foto del departamento, el puesto, `tipo_empleado` (NORMAL/TEMPORERO) y la fecha de ingreso al momento de la salida.
- `vw_rotacion_mensual`: por mes, departamento y tipo de empleado: plantilla al inicio, ingresos, salidas, salidas que cuentan para rotación, voluntarias, involuntarias, otras y % de rotación. Usa un CTE recursivo desde 2022, que llega al límite de 100 meses en 2030.
## Histórico (pendiente de aprobación)
`adprmt017_desvinculacion_historico.sql` clasifica las salidas desde 2022 leyendo `observacion`. Vista previa (con rollback): 686 salidas → Desahucio 342, Renuncia 127, Abandono 31, Cierre 8, Fallecimiento 7, Traslado 3, Fin de contrato 2, Prueba 1, Pensión 1, **Otra 164** (sin texto o sin causa reconocible). Para deshacer: `DELETE FROM adtb00062 WHERE origen='H'`.
## Temporeros
Solo 2 empleados tienen `tipo_empleado = 'TEMPORERO'`. Para medir la entrada y salida de temporeros, RRHH tiene que marcarlos en la maestra (noprmt003). La vista ya los separa.
## Backups
- `addir\backup_adprmt017_20261005\`: original y `adprmt017_con_capacitacion.4gl`, que es la versión intermedia.
- `nodir\backup_noprmt003_016_20261005\`: noprmt003, noprmt016, sus formas y binarios.
## Despliegue
Copiar a `PROYECTO\bin` (todo compilado con 3.20): `adprmt017.42m`, `adfmwd017.42f`, `adfmwd018.42f`, `noprmt003.42m`, `noprmt016.42m`, y el `nofmmt003.42f` que se genere en GST.