Saltar a contenido

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