Bloqueos: Empleado, contrato y datos maestros¶
Catálogo histórico; no es el comportamiento vigente completo
Mensajes extraídos de 4073760e, no errores provocados en el build actual. La línea de origen solo corresponde a ese árbol. Para el corte 067ec7a21cf049451cd349ae473e872883f98e77, prevalecen las guías actualizadas por cambio integrado y sus recuperaciones. No usar una frase histórica de “no implementado” para negar una capacidad incorporada después (FSP, F220, conector nominal o asistentes).
Ficha de verificación
Catalogo generado el 2026-08-17 por lectura del arbol congelado 4073760e880a de dev-fase3 en xdiegob/PayrollBPS. Cada fila corresponde a un raise real localizado en el código, con su archivo y linea. No hay mensajes redactados para esta wiki.
Bloqueos al dar de alta o modificar personas, contratos, catálogos, parámetros normativos y conceptos de nómina.
327 mensajes en 56 modelos. Pegue el texto del mensaje en el buscador para llegar directamente a su fila.
Como leer una fila
Cuando aparece dice en qué momento se dispara: al pulsar un botón, al crear, al modificar o por una validación automática. Origen es el archivo y la línea exactos del árbol congelado, para que cualquiera pueda comprobar el texto sin creerle a esta wiki. Las llaves {} marcan dónde el sistema inserta un valor concreto (un nombre, una fecha, un importe).
bps.accion.evento¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Solo los roles funcionales BPS registran eventos de acciones. | Al crear (create) |
Permiso insuficiente | models/plan_acciones.py:494 |
| Un evento de acciones siempre inicia en borrador. | Al crear (create) |
Validación | models/plan_acciones.py:498 |
| El plan del evento es obligatorio. | Al crear (create) |
Validación | models/plan_acciones.py:501 |
| La referencia del evento debe ser única dentro del plan. | Al crear (create) |
Validación | models/plan_acciones.py:507 |
| El estado del evento solo cambia por la confirmación gobernada. | Al modificar (write) |
Operación no permitida | models/plan_acciones.py:519 |
| El evento confirmado es inmutable. Registre otro evento gobernado para corregir una nueva causación. | Al modificar (write) |
Operación no permitida | models/plan_acciones.py:522 |
| Los eventos confirmados no se eliminan; son trazas HU-002. | Al eliminar (unlink) |
Operación no permitida | models/plan_acciones.py:532 |
| El evento debe conservar la compañía y el empleado del plan. | Validación automática (_check_plan_coherente) |
Validación | models/plan_acciones.py:539 |
| La cantidad del evento debe ser mayor que cero. | Validación automática (_check_valoracion) |
Validación | models/plan_acciones.py:545 |
| El valor de mercado o fiscal debe ser mayor que cero. | Validación automática (_check_valoracion) |
Validación | models/plan_acciones.py:547 |
| El precio pagado no puede ser negativo. | Validación automática (_check_valoracion) |
Validación | models/plan_acciones.py:549 |
| La fuente de valoración es obligatoria; HU-130 no inventa precios. | Validación automática (_check_valoracion) |
Validación | models/plan_acciones.py:551 |
| Solo los roles funcionales BPS confirman eventos de acciones. | Botón o acción (action_confirmar) |
Permiso insuficiente | models/plan_acciones.py:590 |
| Un evento solo puede confirmarse una vez desde borrador. | Botón o acción (action_confirmar) |
Operación no permitida | models/plan_acciones.py:592 |
| El plan debe estar vigente antes de confirmar un evento. | Botón o acción (action_confirmar) |
Operación no permitida | models/plan_acciones.py:594 |
bps.actualizacion.clave.publica¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La fecha 'válida hasta' no puede ser anterior a 'válida desde'. | Validación automática (_check_orden_vigencia) |
Validación | models/actualizacion_clave.py:61 |
| La clave pública no es un PEM válido. | Validación automática (_check_clave_publica) |
Validación | models/actualizacion_clave.py:96 |
| La clave pública debe ser Ed25519. | Validación automática (_check_clave_publica) |
Validación | models/actualizacion_clave.py:100 |
| El motivo de alta de la clave es obligatorio (HU-002). | Al crear (create) |
Validación | models/actualizacion_clave.py:108 |
| Una clave revocada debe tener un motivo de revocación. | Validación automática (_check_motivo_revocacion) |
Validación | models/actualizacion_clave.py:134 |
| El identificador y el material de una clave no se modifican. Cree una clave nueva si necesita otro material. | Al modificar (write) |
Operación no permitida | models/actualizacion_clave.py:143 |
| El motivo de la clave no se reescribe directamente; se actualiza con cada cambio auditado. | Al modificar (write) |
Operación no permitida | models/actualizacion_clave.py:151 |
| Una clave revocada no puede reactivarse. Cree una clave nueva. | Al modificar (write) |
Operación no permitida | models/actualizacion_clave.py:160 |
| No se puede cambiar la vigencia de una clave ya utilizada por paquetes. Cree una clave nueva. | Al modificar (write) |
Operación no permitida | models/actualizacion_clave.py:171 |
| Cambiar el estado, la vigencia o el motivo de revocación de una clave exige un motivo. | Al modificar (write) |
Operación no permitida | models/actualizacion_clave.py:182 |
| Las claves de verificación no se eliminan: revóquelas para conservar la trazabilidad. | Al eliminar (unlink) |
Operación no permitida | models/actualizacion_clave.py:215 |
bps.actualizacion.clave.revocar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo de revocación es obligatorio. | Botón o acción (action_aplicar) |
Validación | models/actualizacion_clave.py:259 |
bps.actualizacion.control¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La secuencia de control solo la actualiza la aplicación de un paquete. | Al modificar (write) |
Operación no permitida | models/actualizacion_paquete.py:914 |
| El control de actualización normativa no se elimina. | Al eliminar (unlink) |
Operación no permitida | models/actualizacion_paquete.py:922 |
bps.actualizacion.importar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Seleccione el archivo del paquete. | Botón o acción (action_importar) |
Operación no permitida | wizards/importar_paquete.py:21 |
bps.actualizacion.linea¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Las líneas de un paquete solo se crean al importar el paquete. | Al crear (create) |
Operación no permitida | models/actualizacion_paquete.py:759 |
| El contenido importado de una línea es inmutable. | Al modificar (write) |
Operación no permitida | models/actualizacion_paquete.py:766 |
| Las decisiones y el estado de aplicación de una línea solo cambian por las acciones del paquete. | Al modificar (write) |
Operación no permitida | models/actualizacion_paquete.py:770 |
| Las líneas de un paquete no se eliminan por separado. | Al eliminar (unlink) |
Operación no permitida | models/actualizacion_paquete.py:778 |
bps.actualizacion.paquete¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Los paquetes normativos solo se crean al importar un archivo firmado y verificado. | Al crear (create) |
Operación no permitida | models/actualizacion_paquete.py:169 |
| El contenido firmado de un paquete es inmutable. | Al modificar (write) |
Operación no permitida | models/actualizacion_paquete.py:178 |
| El estado y la trazabilidad de un paquete solo cambian por sus acciones (revisar, consolidar, aplicar). | Al modificar (write) |
Operación no permitida | models/actualizacion_paquete.py:184 |
| Los paquetes normativos no se eliminan: conservan la trazabilidad de qué se propuso y qué se decidió. | Al eliminar (unlink) |
Operación no permitida | models/actualizacion_paquete.py:192 |
| Solo se decide sobre un paquete propuesto o en revisión. | Operación (decidir_linea) |
Operación no permitida | models/actualizacion_paquete.py:427 |
| La línea no pertenece a este paquete. | Operación (decidir_linea) |
Operación no permitida | models/actualizacion_paquete.py:431 |
| Otro proceso está decidiendo este paquete. Espere y reintente. | Botón o acción (action_consolidar) |
Operación no permitida | models/actualizacion_paquete.py:443 |
| El paquete no está en revisión. | Botón o acción (action_consolidar) |
Operación no permitida | models/actualizacion_paquete.py:448 |
| Hay líneas sin decidir: apruebe o rechace cada una. | Botón o acción (action_consolidar) |
Operación no permitida | models/actualizacion_paquete.py:450 |
| Otro proceso está aplicando este paquete. Espere y reintente. | Botón o acción (action_aplicar) |
Operación no permitida | models/actualizacion_paquete.py:485 |
| Solo se aplica un paquete aprobado o parcialmente aprobado. | Botón o acción (action_aplicar) |
Operación no permitida | models/actualizacion_paquete.py:490 |
| Otra aplicación está en curso. Espere y reintente. | Botón o acción (action_aplicar) |
Operación no permitida | models/actualizacion_paquete.py:502 |
| El paquete no declara un simulacro sintetico no productivo firmado. | Botón o acción (action_abrir_crear_simulacro) |
Operación no permitida | models/actualizacion_paquete.py:680 |
| Solo la persona que importo el paquete puede iniciar su checklist. | Botón o acción (action_abrir_crear_simulacro) |
Permiso insuficiente | models/actualizacion_paquete.py:684 |
bps.actualizacion.rechazar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo del rechazo es obligatorio. | Botón o acción (action_aplicar) |
Validación | wizards/decidir_linea.py:23 |
bps.actualizacion.simulacro.anual¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La fuente declarada del simulacro es obligatoria. | Validación automática (_check_fuente_declarada) |
Validación | models/actualizacion_simulacro.py:103 |
| El checklist solo se crea desde el asistente del paquete firmado. | Al crear (create) |
Operación no permitida | models/actualizacion_simulacro.py:110 |
| La evidencia del simulacro es inmutable y solo cambia por sus acciones gobernadas. | Al modificar (write) |
Operación no permitida | models/actualizacion_simulacro.py:117 |
| Solo se actualizan estados y evidencias mediante acciones gobernadas. | Al modificar (write) |
Operación no permitida | models/actualizacion_simulacro.py:122 |
| Los checklists de simulacro no se eliminan: conservan evidencia. | Al eliminar (unlink) |
Operación no permitida | models/actualizacion_simulacro.py:129 |
| Solo la persona que importó el paquete puede crear su checklist. | Operación (crear_desde_paquete) |
Permiso insuficiente | models/actualizacion_simulacro.py:145 |
| El paquete no es un simulacro firmado, sintético y no productivo. | Operación (crear_desde_paquete) |
Validación | models/actualizacion_simulacro.py:149 |
| La compañía elegida no está habilitada para la persona importadora. | Operación (crear_desde_paquete) |
Permiso insuficiente | models/actualizacion_simulacro.py:153 |
| La fuente declarada es obligatoria. | Operación (crear_desde_paquete) |
Validación | models/actualizacion_simulacro.py:157 |
| El paquete ya tiene un checklist anual de simulacro. | Operación (crear_desde_paquete) |
Operación no permitida | models/actualizacion_simulacro.py:160 |
| La evidencia del paquete ya está restringida a otra compañía. | Operación (crear_desde_paquete) |
Operación no permitida | models/actualizacion_simulacro.py:162 |
| No se encontró la clave pública usada por el paquete. | Operación (crear_desde_paquete) |
Operación no permitida | models/actualizacion_simulacro.py:169 |
| El checklist ya fue revisado. | Botón o acción (action_abrir_revision) |
Operación no permitida | models/actualizacion_simulacro.py:210 |
| La observación de revisión es obligatoria. | Operación (registrar_revision) |
Validación | models/actualizacion_simulacro.py:226 |
| Primero registre la revisión independiente. | Botón o acción (action_abrir_verificacion) |
Operación no permitida | models/actualizacion_simulacro.py:244 |
| La verificación posterior exige que el paquete esté aplicado. | Botón o acción (action_abrir_verificacion) |
Operación no permitida | models/actualizacion_simulacro.py:246 |
| La verificación exige un checklist revisado y un paquete aplicado. | Operación (registrar_verificacion) |
Operación no permitida | models/actualizacion_simulacro.py:262 |
| El resultado de verificación no es válido. | Operación (registrar_verificacion) |
Validación | models/actualizacion_simulacro.py:266 |
| La evidencia de verificación es obligatoria. | Operación (registrar_verificacion) |
Validación | models/actualizacion_simulacro.py:268 |
bps.actualizacion.simulacro.crear.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La compañía elegida no está habilitada. | Botón o acción (action_crear) |
Permiso insuficiente | wizards/actualizacion_simulacro.py:28 |
| La fuente declarada es obligatoria. | Botón o acción (action_crear) |
Validación | wizards/actualizacion_simulacro.py:30 |
bps.administradora¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo de alta es obligatorio para crear la administradora. | Al crear (create) |
Validación | models/administradora.py:110 |
| El motivo solo puede actualizarse junto con un cambio del catálogo. | Al modificar (write) |
Operación no permitida | models/administradora.py:132 |
| Todo cambio del catálogo exige un motivo. Use la acción 'Actualizar catálogo'. | Al modificar (write) |
Operación no permitida | models/administradora.py:140 |
| Otro usuario está actualizando alguna de estas administradoras. Espere y vuelva a intentarlo. | Al modificar (write) |
Operación no permitida | models/administradora.py:150 |
| Las administradoras no se eliminan. Desactívelas para conservar la trazabilidad. | Al eliminar (unlink) |
Operación no permitida | models/administradora.py:207 |
| Las administradoras no se duplican. Cree un registro nuevo con su fuente y motivo de alta. | Operación (copy) |
Operación no permitida | models/administradora.py:216 |
bps.administradora.actualizar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo del cambio es obligatorio. | Botón o acción (action_aplicar) |
Validación | models/administradora.py:391 |
| Otro usuario está actualizando esta administradora. Espere y vuelva a abrir el asistente. | Botón o acción (action_aplicar) |
Operación no permitida | models/administradora.py:395 |
| La administradora fue modificada después de abrir este asistente. Ciérrelo y vuelva a abrirlo para trabajar con la versión vigente. | Botón o acción (action_aplicar) |
Operación no permitida | models/administradora.py:403 |
bps.alerta.log¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El log de alertas solo lo alimenta el motor de alertas. | Al crear (create) |
Operación no permitida | models/alerta_log.py:77 |
| El log de alertas es inmutable. | Al modificar (write) |
Operación no permitida | models/alerta_log.py:85 |
| El log de alertas no puede eliminarse. | Al eliminar (unlink) |
Operación no permitida | models/alerta_log.py:89 |
bps.auditoria.override¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El log de auditoría solo se alimenta por la API interna de registro de overrides. | Al crear (create) |
Operación no permitida | models/auditoria_override.py:90 |
| Los registros del log de auditoría son inmutables; no pueden modificarse. Registre un nuevo override si corresponde. | Al modificar (write) |
Operación no permitida | models/auditoria_override.py:98 |
| Los registros del log de auditoría no pueden eliminarse. | Al eliminar (unlink) |
Operación no permitida | models/auditoria_override.py:107 |
bps.auxilio.transporte¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Los días laborados no pueden ser negativos. | Operación (calcular) |
Operación no permitida | models/auxilio_transporte.py:88 |
bps.beneficio.niif.categoria¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La fecha 'vigente hasta' no puede ser anterior a 'vigente desde'. | Validación automática (_check_orden_fechas) |
Validación | models/beneficio_niif.py:56 |
bps.calculo.regla40¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El cálculo de la regla del 40% solo se crea mediante el motor (método calcular), no por creación directa. | Al crear (create) |
Operación no permitida | models/regla_40.py:183 |
| La traza del cálculo de la regla del 40% es inmutable: para recalcular, ejecute el motor de nuevo. | Al modificar (write) |
Operación no permitida | models/regla_40.py:190 |
| Las trazas del cálculo de la regla del 40% no se eliminan. | Al eliminar (unlink) |
Operación no permitida | models/regla_40.py:197 |
| El período es obligatorio para calcular. | Operación (calcular) |
Operación no permitida | models/regla_40.py:295 |
| Una línea no puede ser a la vez concepto clasificado y prestación causada: entregue una sola referencia. | Operación (calcular) |
Operación no permitida | models/regla_40.py:309 |
| Hay un monto sin concepto clasificado: el cálculo del 40% se bloquea hasta clasificar todos los conceptos. | Operación (calcular) |
Operación no permitida | models/regla_40.py:324 |
| El concepto '{}' exige comprobante de gasto y el cálculo no declara trabajador: sin trabajador no hay soporte que contrastar. | Operación (calcular) |
Operación no permitida | models/regla_40.py:346 |
bps.calculo.regla40.linea¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Una línea del cálculo del 40% no puede referenciar a la vez un concepto y una prestación. | Validación automática (_check_clasificacion_unica) |
Validación | models/regla_40.py:459 |
| Toda línea del cálculo del 40% debe referenciar un concepto clasificado o una prestación causada por M06. | Validación automática (_check_clasificacion_unica) |
Validación | models/regla_40.py:464 |
| Las líneas del cálculo del 40% solo se crean por el motor. | Al crear (create) |
Operación no permitida | models/regla_40.py:472 |
| Las líneas del cálculo del 40% son inmutables. | Al modificar (write) |
Operación no permitida | models/regla_40.py:478 |
| Las líneas del cálculo del 40% no se eliminan. | Al eliminar (unlink) |
Operación no permitida | models/regla_40.py:484 |
bps.catalogo.clave¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El código de la clave '{}' no puede cambiarse porque ya está en uso por uno o más catálogos. Cree una clave nueva si necesita otro código. | Al modificar (write) |
Operación no permitida | models/catalogo_vigencia.py:144 |
| La clave '{}' no respeta la convención estructural (snake_case minúsculo, sin espacios). | Validación automática (_check_codigo) |
Validación | models/catalogo_vigencia.py:157 |
bps.catalogo.vigencia¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El valor de texto es obligatorio cuando el tipo de valor es 'texto'. | Validación automática (_check_valor) |
Validación | models/catalogo_vigencia.py:555 |
bps.catalogo.vigencia.actualizar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo del cambio es obligatorio. | Botón o acción (action_aplicar) |
Validación | models/catalogo_vigencia.py:641 |
| Otro usuario está actualizando este catálogo. Espere y vuelva a abrir el asistente. | Botón o acción (action_aplicar) |
Operación no permitida | models/catalogo_vigencia.py:645 |
| El catálogo fue modificado después de abrir este asistente. Ciérrelo y vuelva a abrirlo para trabajar con la versión vigente. | Botón o acción (action_aplicar) |
Operación no permitida | models/catalogo_vigencia.py:651 |
bps.catalogo.vigencia.mixin¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| No existe la clave de catálogo '{}'. | Operación (get_vigente) |
Operación no permitida | models/catalogo_vigencia.py:275 |
| No hay vigencia del catálogo para la clave indicada en {}. | Operación (get_vigente) |
Operación no permitida | models/catalogo_vigencia.py:285 |
| El motivo de alta es obligatorio (auditoría HU-002). | Al crear (create) |
Validación | models/catalogo_vigencia.py:335 |
| El motivo no puede modificarse sin un cambio funcional auditable del catálogo. | Al modificar (write) |
Operación no permitida | models/catalogo_vigencia.py:362 |
| Todo cambio funcional de un catálogo con vigencia exige un motivo. Use la acción 'Actualizar catálogo'. | Al modificar (write) |
Operación no permitida | models/catalogo_vigencia.py:373 |
| Otro usuario está actualizando este catálogo. Espere y vuelva a intentarlo. | Al modificar (write) |
Operación no permitida | models/catalogo_vigencia.py:380 |
| Los catálogos con vigencia no se eliminan. Cierre la vigencia con su fecha hasta o cree una nueva vigencia con su motivo. | Al eliminar (unlink) |
Operación no permitida | models/catalogo_vigencia.py:435 |
bps.compensacion.beneficio¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El monto mensual del beneficio debe ser mayor que cero. | Validación automática (_check_monto_positivo) |
Validación | models/compensacion_paquete.py:852 |
| Un concepto salarial no puede pactarse como beneficio del paquete: es retribución directa del servicio (art. 127 CST). | Validación automática (_check_concepto_no_salarial) |
Validación | models/compensacion_paquete.py:860 |
| El pacto '{}' pertenece a otro trabajador: un pacto individual no habilita beneficios de terceros (HU-015). | Validación automática (_check_pacto_del_empleado) |
Validación | models/compensacion_paquete.py:872 |
| No se agregan beneficios a un paquete activado: use 'Reconfigurar' sobre el paquete vigente. | Al crear (create) |
Operación no permitida | models/compensacion_paquete.py:905 |
| Los beneficios de un paquete activado no se modifican en silencio: use 'Reconfigurar' sobre el paquete vigente. | Al modificar (write) |
Operación no permitida | models/compensacion_paquete.py:916 |
| Los beneficios de un paquete activado no se eliminan: la composición pactada es historia auditable. | Al eliminar (unlink) |
Operación no permitida | models/compensacion_paquete.py:928 |
bps.compensacion.control¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El control mensual de compensación flexible solo se crea mediante el método evaluar, no por creación directa. | Al crear (create) |
Operación no permitida | models/compensacion_control.py:174 |
| El control mensual es una traza inmutable: para actualizarlo, ejecute de nuevo la evaluación del período. | Al modificar (write) |
Operación no permitida | models/compensacion_control.py:184 |
| Los controles mensuales de compensación flexible no se eliminan: son el soporte probatorio del período. | Al eliminar (unlink) |
Operación no permitida | models/compensacion_control.py:191 |
| El paquete debe activarse antes de ejecutar el control mensual (la validación de estructura es previa). | Operación (evaluar) |
Operación no permitida | models/compensacion_control.py:277 |
| El período {} no está dentro de la vigencia del paquete ({} — {}). | Operación (evaluar) |
Operación no permitida | models/compensacion_control.py:284 |
| El umbral interno ({}) debe ser MÁS CONSERVADOR que el factor del límite del 40%% vigente ({}): corrija el catálogo '{}'. | Operación (evaluar) |
Operación no permitida | models/compensacion_control.py:313 |
| {} no tiene un paquete de compensación flexible activado que cubra {}. | Operación (evaluar_empleado) |
Operación no permitida | models/compensacion_control.py:370 |
bps.compensacion.paquete¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo de alta del paquete es obligatorio (auditoría HU-002). | Al crear (create) |
Validación | models/compensacion_paquete.py:243 |
| El paquete '{}' está cerrado: su historia es inmutable. Los ajustes se hacen sobre el paquete vigente mediante reconfiguración. | Al modificar (write) |
Operación no permitida | models/compensacion_paquete.py:269 |
| El paquete '{}' está vigente: su estructura (dinero, fechas, titular, estado) no se modifica en silencio. Use 'Reconfigurar' para crear la nueva versión con fecha efectiva y auditoría, o 'Cerrar' para terminarlo. | Al modificar (write) |
Operación no permitida | models/compensacion_paquete.py:277 |
| El estado del paquete solo cambia por sus acciones (activar, cerrar): la activación ejecuta la validación BLOQUEANTE de estructura. | Al modificar (write) |
Operación no permitida | models/compensacion_paquete.py:285 |
| Un paquete activado no se elimina: conserva la historia de la compensación pactada (auditoría HU-002). Ciérrelo o reconfigúrelo. | Al eliminar (unlink) |
Operación no permitida | models/compensacion_paquete.py:297 |
| La compañía del paquete debe ser la del empleado ({}). | Validación automática (_check_company_coherente) |
Validación | models/compensacion_paquete.py:312 |
| La versión de contrato no corresponde al empleado del paquete. | Validación automática (_check_company_coherente) |
Validación | models/compensacion_paquete.py:321 |
| La compañía del paquete debe coincidir con la de la versión de contrato. | Validación automática (_check_company_coherente) |
Validación | models/compensacion_paquete.py:327 |
| Un paquete no puede declararse como su propio anterior. | Validación automática (_check_paquete_anterior_mismo_titular) |
Validación | models/compensacion_paquete.py:345 |
| El paquete anterior debe ser del mismo trabajador: un paquete no puede enlazar el de otro empleado ({}). | Validación automática (_check_paquete_anterior_mismo_titular) |
Validación | models/compensacion_paquete.py:349 |
| El paquete anterior debe ser de la misma compañía que este paquete. | Validación automática (_check_paquete_anterior_mismo_titular) |
Validación | models/compensacion_paquete.py:355 |
| La fecha 'vigente hasta' no puede ser anterior a 'vigente desde'. | Validación automática (_check_orden_fechas) |
Validación | models/compensacion_paquete.py:365 |
| El componente en dinero del paquete debe ser mayor que cero. | Validación automática (_check_dinero_positivo) |
Validación | models/compensacion_paquete.py:374 |
| Solo un paquete en borrador puede activarse. | Botón o acción (action_activar) |
Operación no permitida | models/compensacion_paquete.py:534 |
| La activación exige el motivo (auditoría HU-002). | Botón o acción (action_activar) |
Operación no permitida | models/compensacion_paquete.py:538 |
| El paquete anterior pertenece a otro trabajador ({}): la reconfiguración no puede cerrar el paquete de un tercero. | Botón o acción (action_activar) |
Operación no permitida | models/compensacion_paquete.py:549 |
| El paquete anterior pertenece a otra compañía: la reconfiguración no puede cruzar compañías. | Botón o acción (action_activar) |
Operación no permitida | models/compensacion_paquete.py:556 |
| La fecha efectiva debe ser posterior al inicio del paquete anterior ({}). | Botón o acción (action_activar) |
Operación no permitida | models/compensacion_paquete.py:562 |
| Solo un paquete vigente se reconfigura. Los borradores se editan directamente y los cerrados son historia inmutable. | Botón o acción (action_reconfigurar) |
Operación no permitida | models/compensacion_paquete.py:600 |
| Los paquetes no se duplican: use 'Reconfigurar' sobre el vigente o cree uno nuevo con su motivo. | Operación (copy) |
Operación no permitida | models/compensacion_paquete.py:630 |
| Solo un paquete vigente puede cerrarse. | Botón o acción (action_cerrar) |
Operación no permitida | models/compensacion_paquete.py:641 |
bps.comprobante.gasto¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Los comprobantes de gasto no se eliminan: son la evidencia de que el reembolso repuso un gasto real. Recházalos con motivo. | Al eliminar (unlink) |
Operación no permitida | models/comprobante_gasto.py:130 |
| El comprobante '{}' no tiene soporte adjunto: un reembolso contra soporte exige el documento, no su descripcion. | Validación automática (_check_soporte_adjunto) |
Validación | models/comprobante_gasto.py:139 |
| La compania del comprobante debe ser la del trabajador ({}). | Validación automática (_check_coherencia) |
Validación | models/comprobante_gasto.py:149 |
| El concepto '{}' no es un concepto de reembolso contra soporte: no acepta comprobantes de gasto. | Validación automática (_check_coherencia) |
Validación | models/comprobante_gasto.py:153 |
| Rechazar un comprobante exige un motivo. | Botón o acción (action_rechazar) |
Operación no permitida | models/comprobante_gasto.py:163 |
| PENDIENTE_SOPORTE_REEMBOLSO: el concepto '{}' reembolsa {} al trabajador {} en {}, pero solo hay {} soportados por comprobantes de gasto. Un reembolso sin soporte no se trata como no salarial: registre el comprobante o corrija el pago. | Operación (validar_reembolso) |
Operación no permitida | models/comprobante_gasto.py:192 |
bps.concepto¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Lo que retribuye directamente el servicio es salario (art. 127 CST): el concepto '{}' no puede marcarse como no salarial. | Validación automática (_check_coherencia) |
Validación | models/concepto.py:179 |
| Una retribución directa del servicio (art. 127 CST) integra todas las bases salariales (IBC, prestaciones, parafiscales). El concepto '{}' no puede excluirse de una base e incluirse en otra, salvo excepción legal marcada. | Validación automática (_check_coherencia) |
Validación | models/concepto.py:190 |
| Un concepto no salarial por naturaleza (art. 128 CST) no integra el IBC ni los parafiscales: revise '{}'. | Validación automática (_check_coherencia) |
Validación | models/concepto.py:202 |
| Un concepto no salarial pactado no suma directamente al IBC: el exceso sobre el 40%% lo integra el motor de la regla del 40%% (art. 30 Ley 1393/2010). Revise '{}'. | Validación automática (_check_coherencia) |
Validación | models/concepto.py:210 |
| El concepto '{}' se usó en nóminas confirmadas: su clasificación no se modifica directamente. Registre una nueva versión (con fecha y motivo) para conservar la verdad histórica. | Al modificar (write) |
Operación no permitida | models/concepto.py:270 |
| La fecha es obligatoria para ubicar la versión vigente del concepto. | Operación (get_version_vigente) |
Operación no permitida | models/concepto.py:333 |
bps.concepto.version¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La fecha de fin de una versión no puede ser anterior a su fecha de inicio. | Validación automática (_check_fechas) |
Validación | models/concepto_version.py:139 |
| Las versiones de concepto no se crean directamente: se generan al dar de alta el concepto o al registrar una nueva versión. | Al crear (create) |
Operación no permitida | models/concepto_version.py:148 |
| Las versiones de concepto son inmutables. Registre una nueva versión para reflejar un cambio de clasificación. | Al modificar (write) |
Operación no permitida | models/concepto_version.py:159 |
| Las versiones de concepto no se eliminan: conservan la verdad histórica del cálculo. | Al eliminar (unlink) |
Operación no permitida | models/concepto_version.py:167 |
bps.configuracion.periodo¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| No se puede liquidar: falta configuración obligatoria del período. Cree la configuración indicada y vuelva a intentarlo. {} | Operación (validar_configuracion_periodo) |
Operación no permitida | models/configuracion_periodo.py:87 |
bps.dane.mixin¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| «{}» pertenece a {} y no a Colombia: el código DANE solo existe para la división territorial colombiana (numerales 5.4.2 y 5.4.3 del anexo). No se puede asignar aquí. | Validación automática (_check_bps_codigo_dane) |
Validación | models/ubicacion_dane.py:107 |
| El código DANE de «{}» debe contener solo dígitos: se recibió «{}». | Validación automática (_check_bps_codigo_dane) |
Validación | models/ubicacion_dane.py:116 |
| El código DANE de «{}» debe tener exactamente {} dígitos, incluidos los ceros a la izquierda: se recibió «{}» ({} dígitos). | Validación automática (_check_bps_codigo_dane) |
Validación | models/ubicacion_dane.py:122 |
| El código DANE de «{}» exige declarar su fuente oficial: un código sin fuente no es un dato gobernado. | Validación automática (_check_bps_codigo_dane) |
Validación | models/ubicacion_dane.py:130 |
| El código DANE de «{}» exige la fecha en que se verificó contra su fuente oficial. | Validación automática (_check_bps_codigo_dane) |
Validación | models/ubicacion_dane.py:136 |
bps.dian.codigo¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La fecha final de vigencia no puede ser anterior a la inicial. | Validación automática (_check_vigencia) |
Validación | models/dian_codigo.py:163 |
| El código origen l10n_co solo corresponde a la tabla TipoDocumento del anexo DIAN. | Validación automática (_check_crosswalk_l10n_co) |
Validación | models/dian_codigo.py:181 |
| La clave l10n_co «{}» ya cruza con el código DIAN «{}» en esta versión del anexo. | Validación automática (_check_crosswalk_l10n_co) |
Validación | models/dian_codigo.py:198 |
| Cada hora extra o recargo debe declarar el elemento XSD y el porcentaje numérico publicados por la DIAN. | Validación automática (_check_hora_extra_recargo_xsd) |
Validación | models/dian_codigo.py:211 |
| Los códigos del anexo técnico no se eliminan: los documentos ya emitidos los referencian. Cierre su vigencia o desactívelos. | Al eliminar (unlink) |
Operación no permitida | models/dian_codigo.py:218 |
| Los códigos del anexo técnico no se duplican: son una transcripción de una tabla oficial, no un registro editable. | Operación (copy) |
Operación no permitida | models/dian_codigo.py:226 |
bps.dian.maestros¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Faltan maestros DIAN obligatorios. Cárguelos y vuelva a intentarlo; no se puede continuar con valores supuestos. {} | Operación (validar) |
Operación no permitida | models/dian_maestros.py:191 |
| No se puede resolver la clasificación DIAN del contrato: faltan maestros. {} | Operación (datos_clasificacion) |
Operación no permitida | models/dian_maestros.py:255 |
| PENDIENTE_MAPEO_TIPO_DOCUMENTO_DSNE: el trabajador no tiene una clave l10n_co resoluble para TipoDocumento ({}). | Operación (datos_tipo_documento) |
Operación no permitida | models/dian_maestros.py:286 |
| INTEGRIDAD_CROSSWALK_TIPO_DOCUMENTO_DSNE: la clave l10n_co «{}» tiene {} equivalencias vigentes en la tabla 5.2.1. | Operación (datos_tipo_documento) |
Operación no permitida | models/dian_maestros.py:300 |
| PENDIENTE_MAPEO_TIPO_DOCUMENTO_DSNE: el tipo l10n_co «{}» ({}) no tiene equivalencia vigente en la tabla 5.2.1. {} | Operación (datos_tipo_documento) |
Operación no permitida | models/dian_maestros.py:311 |
| PENDIENTE_MAPEO_TIPO_DOCUMENTO_DSNE: el tipo l10n_co «{}» ({}) no tiene equivalencia oficial confirmada en la tabla 5.2.1; cárguela mediante una actualización del catálogo, no la aproxime. | Operación (datos_tipo_documento) |
Operación no permitida | models/dian_maestros.py:317 |
| PENDIENTE_CODIGO_CATALOGO_DSNE: «{}» no existe en la tabla DIAN «{}» fuenteada; no se emite un valor libre. | Operación (codigo_vigente) |
Operación no permitida | models/dian_maestros.py:341 |
| INTEGRIDAD_CODIGO_CATALOGO_DSNE: el código «{}» de la tabla DIAN «{}» tiene {} filas vigentes; corrija sus vigencias antes de emitir. | Operación (codigo_vigente) |
Operación no permitida | models/dian_maestros.py:352 |
| PENDIENTE_CODIGO_CATALOGO_DSNE: {} | Operación (codigo_vigente) |
Operación no permitida | models/dian_maestros.py:361 |
bps.elegibilidad¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El empleado '{}' no está apto para nómina. Faltan: {} | Operación (validar_para_calculo) |
Operación no permitida | models/elegibilidad.py:175 |
bps.habitualidad.revision¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Las revisiones de habitualidad solo las crea el detector (no por creación directa). | Al crear (create) |
Operación no permitida | models/habitualidad.py:167 |
| El contenido de una revisión de habitualidad es inmutable. | Al modificar (write) |
Operación no permitida | models/habitualidad.py:175 |
| La decisión de una revisión solo se registra con la acción 'Decidir' (con motivo). | Al modificar (write) |
Operación no permitida | models/habitualidad.py:179 |
| Las revisiones de habitualidad no se eliminan: conservan la trazabilidad del riesgo y de la decisión. | Al eliminar (unlink) |
Operación no permitida | models/habitualidad.py:187 |
| Decisión no válida. | Operación (registrar_decision) |
Operación no permitida | models/habitualidad.py:200 |
| La decisión de la revisión exige un motivo. | Operación (registrar_decision) |
Validación | models/habitualidad.py:203 |
| El empleado y el concepto son obligatorios. | Operación (evaluar) |
Operación no permitida | models/habitualidad.py:249 |
| Entregue la historia como períodos O como pagos con monto, no ambas a la vez. | Operación (evaluar) |
Operación no permitida | models/habitualidad.py:251 |
| Cada pago de la historia debe traer su período (fecha). | Operación (evaluar) |
Operación no permitida | models/habitualidad.py:266 |
| Cada pago de la historia debe traer un monto numérico no negativo. | Operación (evaluar) |
Operación no permitida | models/habitualidad.py:272 |
bps.instrumento.colectivo¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El instrumento colectivo debe tener el documento de soporte (texto de la convención, pacto o laudo). | Validación automática (_check_documento) |
Validación | models/instrumento_colectivo.py:197 |
| El motivo de alta es obligatorio (auditoría HU-002). | Al crear (create) |
Validación | models/instrumento_colectivo.py:206 |
| Los instrumentos colectivos no se eliminan. Archívelos para conservar la trazabilidad de la cobertura. | Al eliminar (unlink) |
Operación no permitida | models/instrumento_colectivo.py:224 |
| Los instrumentos colectivos no se duplican. Cree uno nuevo con su fuente y motivo de alta. | Operación (copy) |
Operación no permitida | models/instrumento_colectivo.py:231 |
| Indique la clave de catálogo (HU-009) que guarda el mínimo convencional en dinero del instrumento '{}'. | Validación automática (_check_minimo_dinero_clave) |
Validación | models/instrumento_minimo_convencional.py:51 |
bps.jornada.vigencia¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La jornada legal solo admite la clave canónica '{}'. | Validación automática (_check_clave_nacional) |
Validación | models/jornada_vigencia.py:82 |
| Las horas semanales deben ser mayores que cero. | Validación automática (_check_valores) |
Validación | models/jornada_vigencia.py:91 |
| El divisor mensual debe ser mayor que cero. | Validación automática (_check_valores) |
Validación | models/jornada_vigencia.py:95 |
| La fuente es obligatoria y no puede quedar vacía. | Validación automática (_check_fuente) |
Validación | models/jornada_vigencia.py:104 |
| No hay jornada legal parametrizada para {}. El producto soporta consultas desde el 01-ene-2025; antes de esa fecha no se aplica un valor por defecto. | Operación (get_jornada_vigente) |
Operación no permitida | models/jornada_vigencia.py:125 |
bps.jornada.vigencia.actualizar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo del cambio es obligatorio. | Botón o acción (action_aplicar) |
Validación | models/jornada_vigencia.py:191 |
| Otro usuario está actualizando esta jornada. Espere y vuelva a abrir el asistente. | Botón o acción (action_aplicar) |
Operación no permitida | models/jornada_vigencia.py:195 |
| La jornada fue modificada después de abrir este asistente. Ciérrelo y vuelva a abrirlo para trabajar con la versión vigente. | Botón o acción (action_aplicar) |
Operación no permitida | models/jornada_vigencia.py:201 |
bps.pacto.exclusion¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La compañía del pacto debe ser la del empleado ({}). | Validación automática (_check_company_coherente) |
Validación | models/pacto_exclusion.py:102 |
| La versión de contrato no corresponde al empleado del pacto. | Validación automática (_check_company_coherente) |
Validación | models/pacto_exclusion.py:110 |
| La compañía del pacto debe coincidir con la de la versión de contrato. | Validación automática (_check_company_coherente) |
Validación | models/pacto_exclusion.py:115 |
| La fecha 'vigente hasta' no puede ser anterior a 'vigente desde'. | Validación automática (_check_orden_fechas) |
Validación | models/pacto_exclusion.py:206 |
| Un pacto genérico (sin rubros concretos) es de alto riesgo y exige aprobación legal registrada. | Validación automática (_check_generico_requiere_aprobacion) |
Validación | models/pacto_exclusion.py:216 |
bps.parametro.anual¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo de alta es obligatorio para crear los parámetros del año. | Al crear (create) |
Validación | models/parametro_anual.py:358 |
| El motivo solo puede actualizarse junto con un cambio de parámetros. | Al modificar (write) |
Operación no permitida | models/parametro_anual.py:380 |
| Todo cambio de parámetros exige un motivo. Use la acción 'Actualizar parámetros'. | Al modificar (write) |
Operación no permitida | models/parametro_anual.py:388 |
| Otro usuario está actualizando estos parámetros. Espere y vuelva a intentarlo. | Al modificar (write) |
Operación no permitida | models/parametro_anual.py:398 |
| Los parámetros anuales no se eliminan. Corrija el registro del año con su motivo y fuente. | Al eliminar (unlink) |
Operación no permitida | models/parametro_anual.py:453 |
| Los parámetros anuales no se duplican. Cree el año nuevo con su fuente y motivo de alta. | Operación (copy) |
Operación no permitida | models/parametro_anual.py:462 |
bps.parametro.anual.actualizar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo del cambio es obligatorio. | Botón o acción (action_aplicar) |
Validación | models/parametro_anual.py:593 |
| Otro usuario está actualizando estos parámetros. Espere y vuelva a abrir el asistente. | Botón o acción (action_aplicar) |
Operación no permitida | models/parametro_anual.py:597 |
| Los parámetros fueron modificados después de abrir este asistente. Ciérrelo y vuelva a abrirlo para trabajar con la versión vigente. | Botón o acción (action_aplicar) |
Operación no permitida | models/parametro_anual.py:605 |
bps.plan.acciones¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Solo el administrador de nómina registra planes de acciones. | Al crear (create) |
Permiso insuficiente | models/plan_acciones.py:203 |
| Un plan de acciones siempre inicia en borrador. | Al crear (create) |
Validación | models/plan_acciones.py:206 |
| El motivo de alta del plan es obligatorio (auditoría HU-002). | Al crear (create) |
Validación | models/plan_acciones.py:209 |
| El plan cerrado es inmutable; conserve su historia. | Al modificar (write) |
Operación no permitida | models/plan_acciones.py:227 |
| El plan vigente no se edita directamente. Cierre el plan y registre el instrumento que corresponda con nueva trazabilidad. | Al modificar (write) |
Operación no permitida | models/plan_acciones.py:229 |
| El estado del plan solo cambia por sus acciones gobernadas. | Al modificar (write) |
Operación no permitida | models/plan_acciones.py:234 |
| Un plan activado o con eventos no se elimina; conserva la historia de compensación y auditoría HU-002. | Al eliminar (unlink) |
Operación no permitida | models/plan_acciones.py:242 |
| La compañía del plan debe ser la del empleado. | Validación automática (_check_company_coherente) |
Validación | models/plan_acciones.py:252 |
| La empresa local otorgante debe coincidir con el empleador local del plan; una matriz extranjera se registra en el tipo correspondiente. | Validación automática (_check_company_coherente) |
Validación | models/plan_acciones.py:255 |
| Un plan local exige su empresa otorgante local y no admite una matriz extranjera en el mismo registro. | Validación automática (_check_otorgante) |
Validación | models/plan_acciones.py:265 |
| Un plan de matriz extranjera exige identificar la matriz y no puede apuntar a una compañía local. | Validación automática (_check_otorgante) |
Validación | models/plan_acciones.py:270 |
| La cantidad otorgada debe ser mayor que cero. | Validación automática (_check_cantidades) |
Validación | models/plan_acciones.py:279 |
| El precio de ejercicio no puede ser negativo. | Validación automática (_check_cantidades) |
Validación | models/plan_acciones.py:281 |
| Una RSU no tiene precio de ejercicio; use cero. | Validación automática (_check_cantidades) |
Validación | models/plan_acciones.py:283 |
| El fin de vesting no puede ser anterior a su inicio. | Validación automática (_check_vesting) |
Validación | models/plan_acciones.py:290 |
| El concepto de especie debe estar marcado como híbrido — revisión fiscal (alto riesgo). | Validación automática (_check_concepto_hibrido) |
Validación | models/plan_acciones.py:297 |
| HU-130 no asigna ni reporta código DSNE: el concepto híbrido debe permanecer sin mapeo hasta el Bloque 12. | Validación automática (_check_concepto_hibrido) |
Validación | models/plan_acciones.py:302 |
| El concepto de especie debe estar habilitado para la base de retención; los límites los aplica M07. | Validación automática (_check_concepto_hibrido) |
Validación | models/plan_acciones.py:307 |
| Solo el administrador BPS registra decisiones de zona gris. | Botón o acción (action_registrar_decision_ibc) |
Permiso insuficiente | models/plan_acciones.py:336 |
| Escriba la decisión humana sobre IBC antes de registrarla. | Botón o acción (action_registrar_decision_ibc) |
Operación no permitida | models/plan_acciones.py:338 |
| La exclusión IBC exige describir el soporte documentado. | Botón o acción (action_registrar_decision_ibc) |
Operación no permitida | models/plan_acciones.py:341 |
| Solo el administrador BPS activa planes de acciones. | Botón o acción (action_activar) |
Permiso insuficiente | models/plan_acciones.py:360 |
| Solo un plan en borrador puede activarse. | Botón o acción (action_activar) |
Operación no permitida | models/plan_acciones.py:362 |
| Solo el administrador BPS cierra planes de acciones. | Botón o acción (action_cerrar) |
Permiso insuficiente | models/plan_acciones.py:376 |
| Solo un plan vigente puede cerrarse. | Botón o acción (action_cerrar) |
Operación no permitida | models/plan_acciones.py:378 |
bps.recibo.clasificacion¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La clasificación del recibo solo se crea al confirmar el recibo, nunca de forma directa. | Al crear (create) |
Operación no permitida | models/recibo_clasificacion.py:112 |
| La clasificación del recibo es inmutable: refleja cómo se liquidó. | Al modificar (write) |
Operación no permitida | models/recibo_clasificacion.py:119 |
| La clasificación del recibo no se elimina (evidencia probatoria). | Al eliminar (unlink) |
Operación no permitida | models/recibo_clasificacion.py:125 |
bps.regla40.reporte.ugpp¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El reporte UGPP de la regla del 40%% solo se crea mediante su servicio (generar). | Al crear (create) |
Operación no permitida | models/regla40_reporte.py:104 |
| El reporte UGPP de la regla del 40%% es inmutable: para otro corte, genere un reporte nuevo. | Al modificar (write) |
Operación no permitida | models/regla40_reporte.py:111 |
| Los reportes UGPP de la regla del 40%% no se eliminan (evidencia de gestión). | Al eliminar (unlink) |
Operación no permitida | models/regla40_reporte.py:118 |
| El rango de períodos del reporte es inválido. | Operación (generar) |
Operación no permitida | models/regla40_reporte.py:137 |
| El umbral de riesgo extremo de {} ({}) no es una proporción válida: configure un valor mayor que 0 y hasta 1 (p. ej. 0,5 para el 50%%). | Operación (generar) |
Operación no permitida | models/regla40_reporte.py:145 |
| No hay cálculos de la regla del 40%% con empleado en {} entre {} y {}: ejecute el motor antes de generar el reporte (no se reporta sobre vacío). | Operación (generar) |
Operación no permitida | models/regla40_reporte.py:161 |
bps.regla40.reporte.ugpp.linea¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Las líneas del reporte UGPP solo se crean por su servicio. | Al crear (create) |
Operación no permitida | models/regla40_reporte.py:303 |
| Las líneas del reporte UGPP son inmutables. | Al modificar (write) |
Operación no permitida | models/regla40_reporte.py:309 |
| Las líneas del reporte UGPP no se eliminan. | Al eliminar (unlink) |
Operación no permitida | models/regla40_reporte.py:313 |
bps.snapshot¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Los snapshots solo se crean en la confirmación del recibo, nunca de forma directa. | Al crear (create) |
Operación no permitida | models/snapshot.py:88 |
| Los snapshots son inmutables; no pueden modificarse. | Al modificar (write) |
Operación no permitida | models/snapshot.py:109 |
| Los snapshots no pueden eliminarse. | Al eliminar (unlink) |
Operación no permitida | models/snapshot.py:116 |
bps.trabajo.casa.periodo¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La fecha hasta no puede ser anterior a la fecha desde. | Validación automática (_check_fechas) |
Validación | models/trabajo_casa_periodo.py:178 |
| La habilitación dura {} días y supera el tope parametrizado ({} días). Renueve por períodos o formalice otra modalidad. | Validación automática (_check_fechas) |
Validación | models/trabajo_casa_periodo.py:191 |
| Indique el detalle del motivo cuando selecciona 'Otro'. | Validación automática (_check_motivo_detalle) |
Validación | models/trabajo_casa_periodo.py:202 |
| El motivo del registro es obligatorio (auditoría HU-002). | Al crear (create) |
Validación | models/trabajo_casa_periodo.py:210 |
| Las habilitaciones de trabajo en casa no se eliminan. Archívelas para conservar la trazabilidad. | Al eliminar (unlink) |
Operación no permitida | models/trabajo_casa_periodo.py:228 |
bps.ubicacion.dian¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El departamento «{}» no pertenece al país «{}». | Validación automática (_check_coherencia_geografica) |
Validación | models/ubicacion_dian.py:272 |
| El municipio «{}» no pertenece al departamento «{}». | Validación automática (_check_coherencia_geografica) |
Validación | models/ubicacion_dian.py:279 |
| El idioma debe ser un código ISO 639-1 de dos letras minúsculas (numeral 5.3.1 del anexo). Se recibió «{}». | Validación automática (_check_idioma) |
Validación | models/ubicacion_dian.py:291 |
| Las ubicaciones DIAN no se eliminan: los documentos ya emitidos las referencian. Desactívelas para conservar la trazabilidad. | Al eliminar (unlink) |
Operación no permitida | models/ubicacion_dian.py:332 |
bps.umbral.gobernado¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| No existe la clave de umbral '{}'. | Operación (get_vigente_compania) |
Operación no permitida | models/umbral_gobernado.py:148 |
| La compañía {} no tiene configurado el umbral '{}' vigente para {}. Configúrelo (con vigencia y motivo) antes de continuar: no se asume ningún valor. | Operación (get_vigente_compania) |
Operación no permitida | models/umbral_gobernado.py:159 |
bps.umbral.gobernado.actualizar.wizard¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El motivo del cambio es obligatorio. | Botón o acción (action_aplicar) |
Operación no permitida | models/umbral_gobernado.py:242 |
| El umbral fue modificado después de abrir este asistente. Ciérrelo y vuelva a abrirlo para trabajar con la versión vigente. | Botón o acción (action_aplicar) |
Operación no permitida | models/umbral_gobernado.py:245 |
bps.viatico.pago¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El monto del viático debe ser mayor que cero. | Validación automática (_check_montos) |
Validación | models/viatico.py:135 |
| Las porciones del viático no pueden ser negativas. | Validación automática (_check_montos) |
Validación | models/viatico.py:140 |
| La suma de las porciones discriminadas supera el monto del pago. | Validación automática (_check_montos) |
Validación | models/viatico.py:148 |
| El viático accidental no constituye salario en ningún caso (art. 130 CST): no se discrimina por finalidad. | Validación automática (_check_montos) |
Validación | models/viatico.py:155 |
| La compañía del viático debe ser la del empleado. | Validación automática (_check_compania) |
Validación | models/viatico.py:165 |
| El viático permanente de {} ({}) tiene {} sin discriminar: el monto no discriminado no se consume en bases. Discrimine manutención/alojamiento (salario) y transporte/representación (no salario) — art. 130 CST, C-081/96 — antes de liquidar. | Operación (componentes_para_bases) |
Operación no permitida | models/viatico.py:235 |
| El empleado y el concepto son obligatorios. | Operación (evaluar_riesgo) |
Operación no permitida | models/viatico.py:281 |
hr.employee¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La administradora seleccionada no corresponde a ARL. | Validación automática (_check_bps_arl_aprendiz) |
Validación | models/aprendizaje.py:152 |
| La administradora '{}' no corresponde al tipo esperado '{}'. | Validación automática (_check_bps_tipos_administradoras) |
Validación | models/hr_employee.py:239 |
| Debe indicar el origen de la autorizacion de tratamiento. | Validación automática (_check_bps_autorizacion_origen) |
Validación | models/hr_employee.py:252 |
hr.payslip¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| Otro usuario está confirmando alguno de estos recibos en este momento. Espere a que termine y vuelva a intentarlo. | Botón o acción (action_payslip_done) |
Operación no permitida | models/hr_payslip.py:124 |
hr.salary.rule¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La regla BPS '{}' debe referenciar un concepto BPS: la regla calcula, el concepto clasifica (HU-019 CA-4). | Validación automática (_check_bps_gestionada) |
Validación | models/hr_salary_rule.py:58 |
| La regla BPS '{}' debe indicar el motor BPS que realiza el cálculo. | Validación automática (_check_bps_gestionada) |
Validación | models/hr_salary_rule.py:64 |
| La regla BPS '{}' debe delegar en un motor (tipo de monto 'Código Python'): la lógica normativa no vive en la fórmula (HU-019 CA-2). | Validación automática (_check_bps_gestionada) |
Validación | models/hr_salary_rule.py:71 |
hr.version¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El contrato de aprendizaje exige modalidad y fase vigentes. | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:107 |
| La formación dual exige indicar el año de formación vigente. | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:109 |
| El contrato de aprendizaje exige fechas de inicio, fin y vigencia de fase. | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:111 |
| La vigencia de fase no puede ser anterior al inicio del contrato. | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:113 |
| El contrato de aprendizaje supera la duración máxima parametrizada ({} meses). | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:116 |
| Faltan parámetros anuales para validar el apoyo de sostenimiento. | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:120 |
| El apoyo de sostenimiento ({}) es inferior al mínimo vigente para la fase/modalidad ({}). | Validación automática (_check_bps_aprendizaje_nucleo) |
Validación | models/aprendizaje.py:123 |
| La decisión humana frente a desnaturalización exige fundamento trazable. | Validación automática (_check_bps_aprendizaje_decision) |
Validación | models/aprendizaje.py:130 |
| El salario integral exige un salario mayor que cero (art. 132 CST). | Validación automática (_check_bps_salario_integral) |
Validación | models/hr_version.py:175 |
| No hay parámetros anuales para {}: no se puede validar el salario integral. Configure los parámetros del año. | Validación automática (_check_bps_salario_integral) |
Validación | models/hr_version.py:182 |
| El salario integral ({}) no puede ser inferior al mínimo legal del año {} ({} = 10 SMMLV + factor prestacional; art. 132 CST). | Validación automática (_check_bps_salario_integral) |
Validación | models/hr_version.py:187 |
| El régimen público o especial está fuera del alcance de la v1.0 (solo empleador privado bajo CST, D-1). No se puede registrar el contrato con este régimen. | Validación automática (_check_bps_regimen_empleador) |
Validación | models/hr_version_contrato.py:267 |
| El contrato a término fijo exige fecha de terminación (art. 46 CST). Sin fecha fin se entiende indefinido: use ese tipo o registre la fecha fin. | Validación automática (_check_contrato_fijo) |
Validación | models/hr_version_contrato.py:294 |
| El contrato a término fijo debe constar por escrito (art. 46 CST): adjunte el soporte escrito del contrato. | Validación automática (_check_contrato_fijo) |
Validación | models/hr_version_contrato.py:300 |
| El contrato por obra o labor debe asociarse a una obra o proyecto identificable. | Validación automática (_check_contrato_obra) |
Validación | models/hr_version_contrato.py:310 |
| El contrato ocasional/accidental/transitorio exige fecha de inicio y de terminación. | Validación automática (_check_contrato_ocasional) |
Validación | models/hr_version_contrato.py:323 |
| El contrato ocasional exige marcar que la labor es distinta a las actividades normales de la empresa. | Validación automática (_check_contrato_ocasional) |
Validación | models/hr_version_contrato.py:328 |
| El tope de duración del contrato ocasional no está parametrizado (pendiente de fuente oficial). Cargue el catálogo '{}' con su fuente antes de registrar contratos ocasionales. | Validación automática (_check_contrato_ocasional) |
Validación | models/hr_version_contrato.py:334 |
| El contrato ocasional dura {} días y supera el tope parametrizado ({} días): use otro tipo de contrato. | Validación automática (_check_contrato_ocasional) |
Validación | models/hr_version_contrato.py:342 |
| El subtipo de teletrabajo solo aplica cuando la modalidad es teletrabajo. | Validación automática (_check_bps_modalidad_trabajo) |
Validación | models/hr_version_contrato.py:357 |
| El teletrabajo exige indicar su subtipo (autónomo, suplementario o móvil, Ley 1221/2008). | Validación automática (_check_bps_modalidad_trabajo) |
Validación | models/hr_version_contrato.py:362 |
| El teletrabajo y el trabajo remoto exigen soporte documental (acuerdo/otrosí): adjúntelo para guardar la modalidad. | Validación automática (_check_bps_modalidad_trabajo) |
Validación | models/hr_version_contrato.py:370 |
| El teletrabajo y el trabajo remoto exigen registrar el lugar o lugares de prestación. | Validación automática (_check_bps_modalidad_trabajo) |
Validación | models/hr_version_contrato.py:376 |
| «{}» no pertenece a la tabla «{}» del anexo: no puede usarse en el campo «{}». | Validación automática (_check_bps_dian_codigos) |
Validación | models/hr_version_dian.py:249 |
| No se puede usar ese código en «{}». {} | Validación automática (_check_bps_dian_codigos) |
Validación | models/hr_version_dian.py:260 |
| El lugar de trabajo «{}» pertenece a la compañía «{}» y no puede usarse en un contrato de «{}». | Validación automática (_check_bps_ubicacion_trabajo) |
Validación | models/hr_version_dian.py:272 |
| El lugar de trabajo «{}» está incompleto para la DIAN. {} | Validación automática (_check_bps_ubicacion_trabajo) |
Validación | models/hr_version_dian.py:281 |
| No se puede guardar el contrato laboral de {}: faltan los datos mínimos {}. El alta de un vínculo laboral exige tipo de contrato, fecha de inicio, salario, jornada y lugar de trabajo. | Validación automática (_check_bps_alta_completa) |
Validación | models/hr_version_minimos.py:137 |
| El salario ({}) es inferior al mínimo legal de la jornada pactada ({}). Con {} horas semanales sobre una jornada legal de {}, el mínimo es la parte proporcional del SMMLV del año ({}), art. 145 CST. Para registrarlo hay que ajustar la jornada a tiempo parcial y sus horas. | Validación automática (_check_bps_salario_minimo_jornada) |
Validación | models/hr_version_minimos.py:274 |
| Registre el motivo de exclusión del instrumento colectivo (p. ej. cargo de dirección, confianza y manejo). | Validación automática (_check_exclusion_motivo) |
Validación | models/instrumento_colectivo.py:312 |
| El instrumento colectivo '{}' pertenece a otra compañía y no puede asociarse a este contrato. | Validación automática (_check_instrumento_company) |
Validación | models/instrumento_colectivo.py:322 |
res.city¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| El municipio «{}» tiene código DANE pero no tiene departamento: la DIAN exige los dos y el código del municipio debe empezar por el del departamento. | Validación automática (_check_bps_codigo_dane_municipio) |
Validación | models/ubicacion_dane.py:191 |
| El departamento «{}» todavía no tiene código DANE: cárguelo antes que el municipio «{}», porque el código del municipio debe empezar por el del departamento y sin él no se puede comprobar. | Validación automática (_check_bps_codigo_dane_municipio) |
Validación | models/ubicacion_dane.py:199 |
| El municipio «{}» tiene código DANE {}, que no corresponde al departamento «{}» (código {}). Las dos primeras posiciones del municipio deben ser el código del departamento (numeral 5.4.3 del anexo). | Validación automática (_check_bps_codigo_dane_municipio) |
Validación | models/ubicacion_dane.py:207 |
res.company¶
| Mensaje | Cuando aparece | Tipo | Origen |
|---|---|---|---|
| La ubicación «{}» no está completa como lugar de generación del XML. {} | Validación automática (_check_bps_ubicaciones_dian) |
Validación | models/res_company.py:84 |
| La ubicación «{}» no está completa como domicilio del empleador. {} | Validación automática (_check_bps_ubicaciones_dian) |
Validación | models/res_company.py:93 |
| La ubicación «{}» pertenece a la compañía «{}» y no puede usarse en «{}». | Validación automática (_check_ubicacion_propia) |
Validación | models/res_company.py:103 |
| «{}» pertenece a la tabla «{}» del anexo, no a la de periodo de nómina (5.5.1). | Validación automática (_check_bps_dian_periodo_nomina) |
Validación | models/res_company.py:126 |
| No se puede fijar ese periodo de nómina por defecto. {} | Validación automática (_check_bps_dian_periodo_nomina) |
Validación | models/res_company.py:136 |