{#- SPDX-License-Identifier: Apache-2.0 SPDX-FileCopyrightText: 2025 - 2026 BMO Soluciones, S.A. -#} {% extends "base.html" %} {% macro fmt_money(value) -%} {%- if value is not none and value != '' -%} {{ "{:,.2f}".format(value|float) }} {%- else -%} N/A {%- endif -%} {%- endmacro %} {% macro fmt_pct(value) -%} {%- if value is not none and value != '' -%} {{ "{:,.2f}".format(value|float) }}% {%- else -%} N/A {%- endif -%} {%- endmacro %} {% macro fmt_int(value) -%} {%- if value is not none and value != '' -%} {{ "{:,}".format(value|int) }} {%- else -%} N/A {%- endif -%} {%- endmacro %} {% block content %} {% set resumen = comparacion_payload.get('resumen', {}) if comparacion_payload else {} %} {% set distribucion = resumen.get('distribucion', {}) if resumen else {} %} {% set alertas = comparacion_payload.get('alertas', {}) if comparacion_payload else {} %} {% set rojas = alertas.get('rojas', {}) if alertas else {} %} {% set amarillas = alertas.get('amarillas', {}) if alertas else {} %} {% set impacto = comparacion_payload.get('impacto_empleados', {}) if comparacion_payload else {} %} {% set concentracion = comparacion_payload.get('concentracion_impacto', {}) if comparacion_payload else {} %} {% set ratios = comparacion_payload.get('ratios', {}) if comparacion_payload else {} %} {% set flujo = comparacion_payload.get('flujo_caja', {}) if comparacion_payload else {} %} {% set calidad = comparacion_payload.get('calidad', {}) if comparacion_payload else {} %} {% set estructurales = comparacion_payload.get('cambios_estructurales', {}) if comparacion_payload else {} %} {% set segmentacion = comparacion_payload.get('segmentacion', {}) if comparacion_payload else {} %} {% set seg_departamentos = segmentacion.get('departamentos', []) if segmentacion else [] %} {% set seg_contrato = segmentacion.get('tipo_contrato', []) if segmentacion else [] %} {% set bucket_variacion = comparacion_payload.get('bucket_variacion_neto', []) if comparacion_payload else [] %} {% set indice = comparacion_payload.get('indice_estabilidad', {}) if comparacion_payload else {} %} {% set empleados = comparacion_payload.get('empleados', {}) if comparacion_payload else {} %} {% set conceptos = comparacion_payload.get('conceptos', {}) if comparacion_payload else {} %} {% set radar_top = conceptos.get('radar_top', []) if conceptos else [] %} {% set componentes = comparacion_payload.get('componentes_planilla', {}) if comparacion_payload else {} %} {% set vacaciones = comparacion_payload.get('vacaciones', {}) if comparacion_payload else {} %} {% set reglas_vacaciones = vacaciones.get('reglas', []) if vacaciones else [] %}
| Departamento | Empleados | Δ Neto | %Δ |
|---|---|---|---|
| {{ item.departamento or 'Sin datos' }} | {{ fmt_int(item.empleados) }} | {{ fmt_money(item.variacion_total_neto) }} | {{ fmt_pct(item.variacion_pct) }} |
| Sin datos | |||
| Tipo | Empleados | Δ Neto | %Δ |
|---|---|---|---|
| {{ item.tipo or 'Sin datos' }} | {{ fmt_int(item.empleados) }} | {{ fmt_money(item.variacion_total_neto) }} | {{ fmt_pct(item.variacion_pct) }} |
| Sin datos | |||
| Empleado | Neto base | Neto actual | Δ | %Δ | Driver principal | Severidad |
|---|---|---|---|---|---|---|
| {{ item.empleado_codigo }} - {{ item.nombre }} | {{ fmt_money(item.neto_base) }} | {{ fmt_money(item.neto_actual) }} | {{ fmt_money(item.variacion_neto) }} | {{ fmt_pct(item.variacion_neto_pct) }} | {{ item.driver or 'Sin datos' }} | {{ item.severidad or 'N/A' }} |
| Sin datos | ||||||
Percepciones configuradas: {{ componentes.get('percepciones', [])|join(', ') if componentes.get('percepciones') else 'Sin datos' }}
Deducciones configuradas: {{ componentes.get('deducciones', [])|join(', ') if componentes.get('deducciones') else 'Sin datos' }}
Prestaciones configuradas: {{ componentes.get('prestaciones', [])|join(', ') if componentes.get('prestaciones') else 'Sin datos' }}
Reglas de cálculo: {{ componentes.get('reglas_calculo', [])|join(', ') if componentes.get('reglas_calculo') else 'Sin datos' }}
| Tipo | Código | Monto base | Monto actual | Δ | %Δ | # Emp. base | # Emp. actual |
|---|---|---|---|---|---|---|---|
| {{ item.tipo }} | {{ item.codigo }} | {{ fmt_money(item.monto_base) }} | {{ fmt_money(item.monto_actual) }} | {{ fmt_money(item.variacion) }} | {{ fmt_pct(item.variacion_pct) }} | {{ fmt_int(item.empleados_base) }} | {{ fmt_int(item.empleados_actual) }} |
| Sin datos | |||||||
Reglas de vacaciones comparadas: {{ fmt_int(vacaciones.get('total_reglas')) }}