Este documento detalla el uso de variables en la plataforma Buk para la creación dinámica de documentos, facilitando la automatización y personalización de contratos, anexos, certificados y finiquitos.
1. Requisitos y Estructura
Para utilizar variables en las plantillas de documentos, considera lo siguiente:
- 
Módulos Requeridos: Es indispensable contar con los módulos de Firma Digital y Gestión Documental. Puedes solicitar la activación de la configuración "Habilitar plantillas personalizables" al equipo de Soporte y Atención al Cliente (SAC) una vez que tengas estos módulos. 
- 
Formato de Variables: Todas las variables deben estar siempre encerradas entre dobles llaves {{y}}. Por ejemplo:{{empleado.nombre}}.
2. ¿Qué es una Variable?
Una variable es un contenedor que almacena un valor específico y representa información relevante en un documento. Estas variables contienen datos como fechas, nombres, direcciones, o identificadores, permitiendo que la información se actualice y personalice de forma sencilla.
3. Variables Disponibles
A continuación, se listan las categorías de variables disponibles para la gestión documental, con ejemplos de su uso:
3.1. Variables Generales
Estas variables proporcionan información dinámica y general:
- 
Día pago de sueldos: {{dia_pago_sueldos}}
- 
Fecha de hoy (dinámica): {{fecha_de_hoy}}
- 
Fecha y hora actual: {{fecha_y_hora_actual}}
- 
Fecha primer día del mes actual: {{fecha_primer_dia_mes}}
- 
Inicio del mes abierto: {{inicio_mes_abierto}}
- 
Fin del mes abierto: {{fin_mes_abierto}}
- 
Fecha primer día del mes siguiente: {{fecha_primer_dia_mes_siguiente}}
- 
Fecha dos meses después de hoy: {{fecha_dos_meses_despues_de_fecha_actual}}
- 
Fecha tres meses después de hoy: {{fecha_tres_meses_despues_de_fecha_actual}}
- 
Usuario que genera el documento: {{documento_generado_por}}(quien presiona "generar documento")
3.2. Variables para Firmas
Para incluir datos de los firmantes en el documento:
- 
Primer Firmante: {{firma.primer_firmante.nombre}}
- 
Segundo Firmante: {{firma.segundo_firmante.nombre}}
- 
Nombre completo de los firmantes (que no son el colaborador) que necesitan firmar el documento. 
3.3. Variables para Empresa
Datos de la empresa:
- 
Nombre Empresa: {{empresa.nombre}}
- 
RUT Empresa: {{empresa.rut}}
- 
Giro: {{empresa.giro}}
- 
Email Empresa: {{empresa.email_empresa}}
- 
Logo URL: {{empresa.logo}}(usar con el filtroimagen)
- 
Dirección: {{empresa.direccion}}
- 
Comuna: {{empresa.comuna}}
- 
Ciudad: {{empresa.ciudad}}
- 
Nombre Representante: {{empresa.representante.nombre}}
- 
RUT Representante: {{empresa.representante.rut}}
- 
Dirección Representante: {{empresa.representante.direccion}}
- 
Nacionalidad Representante: {{empresa.representante.nacionalidad}}
- 
Nombre Representante Secundario: {{empresa.representante_secundario.nombre}}
- 
RUT Representante Secundario: {{empresa.representante_secundario.rut}}
- 
Dirección Representante Secundario: {{empresa.representante_secundario.direccion}}
- 
Nacionalidad Representante Secundario: {{empresa.representante_secundario.nacionalidad}}
3.4. Variables para Empleado
Información detallada del empleado:
- 
Datos Personales: nombre,apellido,segundo_apellido,nombre_completo,sexo,rut,rut_limpio(sin puntos ni guión),codigo_ficha,estado_civil,estado_civil_con_genero(Ej: Soltera),nacionalidad,profesion,fecha_nacimiento,edad,telefono_particular,telefono_oficina,universidad,titulo.
- 
Datos Bancarios: cuenta_corriente,banco,tipo_cuenta.
- 
Dirección: numero_calle,calle,direccion,direccion_completa,region_empleado,comuna,ciudad.
- 
Contactos: correo_electronico(institucional),correo_personal.
- 
Previsión y Salud: fondo_cotizacion(AFP/IPS),institucion_salud(Isapre/Fonasa).
- 
Vacaciones: saldo_vacaciones_legales,saldo_vacaciones_progresivas,vacaciones_legales_proporcionales,vacaciones_progresivas_proporcionales,vacaciones_legales_pendientes,vacaciones_progresivas_pendientes,fecha_reconocimiento_antiguedad.
- 
Datos Laborales: empleado.obra,fecha_ingreso_compania,fecha_ultimo_movimiento,fecha_termino_trabajo,tipo_contrato,periodicidad(Jornada Laboral),tipo_jornada,annos_servicio,fecha_termino_trabajo_anterior,fecha_vencimiento_contrato,fecha_vencimiento_contrato_2,area(División),departamento(Área),sub_area,direccion_trabajo,comuna_trabajo,ciudad_trabajo,region_trabajo,region_zona_extrema_trabajo,comuna_zona_extrema_trabajo,nombre_del_cargo,descripcion_del_cargo,horas_semanales,sueldo(Sueldo Base),sueldo_liquido_teorico,forma_pago,centro_de_costo,dias_trabajo,comuna_trabajo,cargo_supervisor,localidad,cargo_anterior,sueldo_base_anterior.
3.5. Variables para Supervisor
Información del supervisor del empleado:
- 
Nombre: {{supervisor.nombre}}
- 
Apellido: {{supervisor.apellido}}
- 
Nombre Completo: {{supervisor.nombre_completo}}
- 
Rut Supervisor: {{supervisor.rut}}
3.6. Atributos Personalizados (Colecciones)
Estas variables son colecciones y requieren una iteración (usando la estructura {%for%}) para acceder a sus elementos.
Estructura general para iterar:
{%for [elemento_singular] in [coleccion]%}
  Propiedad: {{[elemento_singular].[propiedad]}}
{%endfor%}
Colecciones disponibles:
- 
Horas Extras: {{empleado.horas_extras}}- 
Propiedades: horas,aprobada,tipo,proporcion.
 
- 
- 
Bonos: {{empleado.bonos}}- 
Propiedades: nombre,monto,codigo,monto_calculado.
- 
Totales: {{empleado.total_bonos}}
 
- 
- 
Informativos: {{empleado.informativos}}- 
Propiedades: nombre,monto,codigo,monto_calculado.
- 
Totales: {{empleado.total_informativos}}
 
- 
- 
No Imponibles: {{empleado.no_imponibles}}- 
Propiedades: nombre,monto.
- 
Totales: {{empleado.total_no_imponibles}}
 
- 
- 
Descuentos: {{empleado.descuentos}}- 
Propiedades: nombre,monto.
- 
Totales: {{empleado.total_descuentos}}
 
- 
- 
Cargas: {{empleado.cargas}}- 
Propiedades: nombre,rut,rut_limpio,sexo,relacion,fecha_nacimiento,expiration_date,tipo_carga.
- 
Totales: {{empleado.total_cargas}}
 
- 
- 
Centros de Costo: {{empleado.centro_costos}}- 
Propiedades: codigo.
 
- 
- 
Sub Áreas Superiores: {{empleado.sub_areas_superiores}}- 
Propiedades: nombre,nivel.
 
- 
- 
Ausencias: {{empleado.ausencias}}- 
Propiedades: nombre,codigo,dias_tomados,justificacion,estado,inicio_ausencia,termino_ausencia,inicio_aplicacion_ausencia,termino_aplicacion_ausencia.
- 
Totales: {{empleado.total_ausencias}}
 
- 
- 
Licencias: {{empleado.licencias}}- 
Propiedades: nombre,codigo,dias_tomados,justificacion,estado,inicio_licencia,termino_licencia,inicio_aplicacion_licencia,termino_aplicacion_licencia.
- 
Totales: {{empleado.total_licencias}}
 
- 
- 
Permisos: {{empleado.permisos}}- 
Propiedades: nombre,codigo,dias_tomados,justificacion,estado,inicio_permiso,termino_permiso,inicio_aplicacion_permiso,termino_aplicacion_permiso,goce_sueldo(Con Pago?).
- 
Totales: {{empleado.total_permisos}}
 
- 
- 
Haberes: {{empleado.total_items_haberes}}(suma de bonos y no imponibles).
4. Estructuras de Control
Las plantillas permiten usar lógica condicional (if) y bucles (for) para un control más avanzado.
4.1. Estructura if
Permite evaluar el valor de una variable y mostrar contenido condicionalmente.
Ejemplo:
{%if empleado.nombre == "Pedro"%}
  El empleado es Pedro.
{%endif%}
4.2. Estructura for
Se utiliza para iterar sobre colecciones de elementos, como bonos o descuentos.
Ejemplo (Bonos):
{%for bono in empleado.bonos%}
  Nombre: {{bono.nombre}} Monto: {{bono.monto}}
{%endfor%}
Ejemplo (Permisos con condición):
{%for permiso in empleado.permisos%}
  {%if permiso.nombre == "Permiso"%}
    Inicio del permiso: {{permiso.inicio_permiso}}
  {%endif%}
{%endfor%}
5. Filtros
Los filtros transforman el valor de las variables para presentarlas en un formato diferente. Se aplican usando el símbolo |.
- 
palabras: Convierte números o fechas a su versión en palabras.- 
Ejemplo: {{sueldo | palabras}}
 
- 
- 
imagen: Despliega una imagen a partir de su URL.- 
Ejemplo: {{empresa.logo | imagen: "200", "200"}}(ancho, alto en píxeles)
 
- 
- 
formato_fecha: Muestra una fecha en un formato específico.- 
Ejemplo: {{empleado.fecha_ingreso_compania | formato_fecha: "dd/mm/yyyy"}}(resultado:01/01/2023)
- 
Formatos: yyyy(año),mm(mes),dd(día),hh(hora),MM(minutos),ss(segundos).
- 
Separadores: '/','-',' '.
 
- 
- 
detalle_fecha: Obtiene el día, mes o año de una fecha.- 
Ejemplo: {{fecha_de_hoy | detalle_fecha: "A"}}(para año)
- 
Elementos: "A"(año),"M"(mes),"D"(día).
 
- 
- 
fecha_en_palabras: Muestra la fecha escrita en palabras.- 
Ejemplo: {{fecha_de_hoy | fecha_en_palabras: "%A %d de %B de %Y"}}(resultado:Lunes 04 de septiembre de 2023)
- 
Formatos: %A(Nombre del día),%d(Número del día),%b(3 letras del mes),%B(Nombre del mes),%Y(Año 4 dígitos),%y(Año 2 dígitos).
 
- 
- 
fecha_n_meses_al_futuro: Muestra la fecha "01/mm/yyyy" N meses en el futuro.- 
Ejemplo: {{fecha_de_hoy | fecha_n_meses_al_futuro: "3"}}
 
- 
- 
remove_zero: Elimina el.0de un número.- 
Ejemplo: {{empleado.horas_semanales | remove_zero}}
 
- 
- 
monto_con_formato: Muestra un monto con formato monetario (ej:$ ###.###).- 
Ejemplo: {{empleado.total_descuentos_ultima_liquidacion | monto_con_formato}}(resultado:$ 500.000)
 
- 
- 
monto_con_decimales_a_palabras: Convierte un número con decimales a palabras (decimales como fracción x/100).- 
Ejemplo: {{empleado.sueldo | monto_con_decimales_a_palabras}}
 
- 
- 
convertir_a_mayusculas: Transforma el texto a mayúsculas.- 
Ejemplo: {{empleado.nombre_completo | convertir_a_mayusculas}}
 
- 
6. Operadores
Puedes usar los siguientes operadores en las estructuras condicionales (if):
- 
==(Igual a)
- 
!=(Distinto a)
- 
greater_than(Mayor que)
- 
less_than(Menor que)
- 
greater_or_equal_than(Mayor o igual que)
- 
less_or_equal_than(Menor o Igual que)
- 
or(O)
- 
and(Y)