Skip to content

Documentación Completa de Funciones del Sistema de Plantillas de Kuenta ​

Este documento proporciona una referencia exhaustiva de todas las funciones disponibles en el sistema de plantillas de Kuenta, detallando su sintaxis, uso, disponibilidad por servicio y ejemplos prácticos.

Índice ​

  1. Funciones Nativas de Go Templates
  2. Funciones Específicas de Kuenta
  3. Funciones de Sprig
  4. Funciones Específicas por Servicio

Funciones Nativas de Go Templates ​

Estas funciones están disponibles en todos los servicios de plantillas de Kuenta, ya que son parte de la implementación estándar de Go Templates.

FunciónDescripciónEjemplo
if...else...endCondicionales
{{ if eq .Value 1 }}Uno{{ else }}Otro{{ end }}
range...endIteración sobre colecciones
{{ range .Items }}{{ .Name }}{{ end }}
with...endEstablece contexto
{{ with .User }}{{ .Name }}{{ end }}
eqIgualdad
{{ if eq .Status "active" }}Activo{{ end }}
neDesigualdad
{{ if ne .Status "active" }}No activo{{ end }}
ltMenor que
{{ if lt .Value 10 }}Menor a 10{{ end }}
leMenor o igual que
{{ if le .Value 10 }}Menor o igual a 10{{ end }}
gtMayor que
{{ if gt .Value 10 }}Mayor a 10{{ end }}
geMayor o igual que
{{ if ge .Value 10 }}Mayor o igual a 10{{ end }}
andOperador lógico AND
{{ if and .Value (gt .Count 5) }}...{{ end }}
orOperador lógico OR
{{ if or .Value .Default }}...{{ end }}
notNegación lógica
{{ if not .Disabled }}Habilitado{{ end }}
printConcatena e imprime
{{ print "Valor: " .Value }}
printfImprime con formato
{{ printf "%.2f" .Value }}
lenLongitud de array/slice/map/string
{{ if gt (len .Items) 0 }}...{{ end }}
indexAcceso por índice
{{ index .Array 0 }}

Funciones Específicas de Kuenta ​

Estas funciones son implementadas específicamente por Kuenta y están disponibles a través de domain.Funcs().

Formateo de Valores ​

FunciónDescripciónDisponibilidadEjemplo
currencyFormatea valor como monedaTodos los servicios
{{ currency .Credit.Amount }} → $1,000,000
currencyEntityFormatea como moneda según config. de entidadDocumentos, PDF
{{ currencyEntity .Value }} → $1,000,000
currencyCreditFormatea como moneda según config. de créditoDocumentos, Webhooks
{{ currencyCredit .Value .Credit }} → $1,000,000
currencyNotRoundedFormatea como moneda sin redondearDocumentos, Webhooks
{{ currencyNotRounded .Value }} → $1,000,000.50
percentageFormatea como porcentajeTodos los servicios
{{ percentage .Credit.Rate }} → 12.50%

Manipulación de Fechas ​

FunciónDescripciónDisponibilidadEjemplo
dateFormatea fecha (día/mes/año)Todos los servicios
{{ date .Credit.CreatedAt }} → 15/enero/2023
localDateFormatea fecha con zona horaria localTodos los servicios
{{ localDate .Credit.CreatedAt }} → 15/enero/2023
dateAAAAMMDDFormatea fecha en formato AAAAMMDDTodos los servicios
{{ dateAAAAMMDD .Credit.CreatedAt }} → 20230115

Acceso a Datos ​

FunciónDescripciónDisponibilidadEjemplo
commonDataAcceso a campos comunes de perfilTodos los servicios
{{ commonData .Profile "Name" }} → Juan Pérez o Empresa S.A.
customFieldsAcceso a campos personalizadosDocumentos, Webhooks
{{ customFields .Object.CustomFields "campo1" }}
referencesFormatea referencias de perfilDocumentos, Webhooks
{{ references .Profile.References }}
legalNestedAcceso a datos anidados de entidades legalesDocumentos, Webhooks
{{ legalNested .Profile.Legal.Representatives }}
allReferencesCombina referencias personales/familiares/comercialesDocumentos, Webhooks
{{ allReferences .PeReferences .FamReferences .ComReferences }}
dataXtsAcceso a datos de fuentes externasDocumentos, Webhooks
{{ dataXts .Sources "VALOR1" }}

Operaciones Matemáticas ​

FunciónDescripciónDisponibilidadEjemplo
divideDivisión de enterosTodos los servicios
{{ divide 10 2 }} → 5
decimalAddSuma de decimalesTodos los servicios
{{ decimalAdd .Value1 .Value2 }}
decimalSubResta de decimalesTodos los servicios
{{ decimalSub .Value1 .Value2 }}

Manipulación de Colecciones ​

FunciónDescripciónDisponibilidadEjemplo
installmentsProcesa cuotas de créditoDocumentos, Webhooks
{{ installments .Credit.Installments "1" "Payment" }}
scoreAciertaObtiene puntaje AciertaDocumentos, Webhooks
{{ scoreAcierta .Credit.Analysis }}
checkNutVerifica NUTDocumentos, Webhooks
{{ checkNut .Credit }}
frecuencyUnitMuestra unidad de frecuenciaDocumentos, Webhooks
{{ frecuencyUnit .Credit.Frequency }} → días o meses

Funciones de Crédito ​

FunciónDescripciónDisponibilidadEjemplo
tceaCalcula TCEA del créditoDocumentos, Webhooks
{{ tcea .Credit }} → 15.25%
rateMVConvierte tasa EA a tasa mensual vencidaDocumentos, Webhooks
{{ rateMV .Credit.Rate }} → 1.19
consecutiveEBObtiene consecutivo de documento EBDocumentos
{{ consecutiveEB .Documents }} → CD-000123

Funciones de Conversión y Formateo ​

FunciónDescripciónDisponibilidadEjemplo
fixedFormatea número con decimales fijosTodos los servicios
{{ fixed .Value 2 }} → 123.45
operationRealiza operaciones matemáticas básicasTodos los servicios
{{ operation .Value "+" 10 2 }} → 133.45
zeroFieldsConvierte valor 99 a 0Todos los servicios
{{ zeroFields .Field }} → 0

Funciones de Listado y Formateo Avanzado ​

FunciónDescripciónDisponibilidadEjemplo
listPDFFormatea listas para PDF (sin HTML)Documentos
{{ listPDF .CustomFields "campo1" }} → valor1, valor2
incomesGenera HTML de ingresosDocumentos
{{ incomes .Profile.Incomes .Config }} → <div>...</div>
expensesGenera HTML de gastosDocumentos
{{ expenses .Profile.Expenses .Config }} → <div>...</div>

Funciones de Configuración y Crédito ​

Además de las funciones principales, Kuenta proporciona funciones especializadas que se configuran según el contexto específico del crédito o la configuración de la entidad.

Funciones de Configuración (ConfigurationFuncs) ​

Estas funciones están disponibles cuando se pasa un objeto Configuration al template:

FunciónDescripciónDisponibilidadEjemplo
currencyFormatea moneda según configuración de paísCon configuración
{{ currency .Amount }} → €1,000.00 o $1,000.00

Funciones de Crédito (CreditFuncs) ​

Estas funciones están disponibles cuando se pasa un objeto Credit al template:

FunciónDescripciónDisponibilidadEjemplo
currencyFormatea moneda según moneda del créditoCon crédito
{{ currency .Amount }} → COP 1,000,000
currencyNotRoundedFormatea moneda sin redondear según créditoCon crédito
{{ currencyNotRounded .Value }} → COP 1,000,000.50

Uso de Funciones de Configuración ​

go
// En el código Go
funcs := domain.ConfigurationFuncs(config)
tmpl.Funcs(funcs)

// En la plantilla
{{ currency .Amount }}  // Usa símbolo de moneda del país configurado

Uso de Funciones de Crédito ​

go
// En el código Go
funcs := domain.CreditFuncs(credit)
tmpl.Funcs(funcs)

// En la plantilla
{{ currency .Amount }}  // Usa símbolo de moneda del crédito

Funciones de Sprig ​

La biblioteca Sprig proporciona más de 70 funciones adicionales para manipulación de datos. Su disponibilidad varía según el servicio.

Disponibilidad de Sprig por Servicio ​

ServicioDisponibilidad de SprigImplementación
Documentos✅ CompletoIntegrado directamente con sprig.FuncMap()
Webhooks✅ CompletoIntegrado directamente con sprig.FuncMap()
Email❌ ParcialSolo funciones a través de domain.Funcs()
Voz❌ NoSolo funciones básicas de Go Templates

Categorías de Funciones Sprig ​

Manipulación de Strings ​

FunciónDescripciónEjemplo
trimElimina espacios en blanco
{{ trim " hola " }} → "hola"
upperConvierte a mayúsculas
{{ upper "hola" }} → "HOLA"
lowerConvierte a minúsculas
{{ lower "HOLA" }} → "hola"
titlePrimera letra de cada palabra a mayúscula
{{ title "hola mundo" }} → "Hola Mundo"
containsVerifica si contiene substring
{{ contains "hola" "o" }} → true
hasPrefixVerifica si comienza con substring
{{ hasPrefix "hola" "ho" }} → true
hasSuffixVerifica si termina con substring
{{ hasSuffix "hola" "la" }} → true
replaceReemplaza substring
{{ replace "hola" "o" "0" -1 }} → "h0la"

Operaciones con Números ​

FunciónDescripciónEjemplo
addSuma
{{ add 1 2 }} → 3
subResta
{{ sub 5 2 }} → 3
mulMultiplicación
{{ mul 2 3 }} → 6
divDivisión
{{ div 6 3 }} → 2
modMódulo (resto)
{{ mod 5 2 }} → 1
maxMáximo valor
{{ max 1 2 }} → 2
minMínimo valor
{{ min 1 2 }} → 1
ceilRedondeo hacia arriba
{{ ceil 1.2 }} → 2
floorRedondeo hacia abajo
{{ floor 1.8 }} → 1
roundRedondeo
{{ round 1.5 }} → 2

Manipulación de Fechas ​

FunciónDescripciónEjemplo
nowFecha/hora actual
{{ now }}
date_formatFormatea fecha
{{ date_format "2006-01-02" .Date }} → "2023-01-15"
date_modifyModifica fecha
{{ .Date | date_modify "+24h" }}
date_in_zoneCambia zona horaria
{{ date_in_zone "UTC" .Date "America/Bogota" }}

Diccionarios y Colecciones ​

FunciónDescripciónEjemplo
dictCrea diccionario
{{ $dict := dict "key1" "value1" "key2" "value2" }}
getObtiene valor de diccionario
{{ get $dict "key1" }} → "value1"
setEstablece valor en diccionario
{{ $dict := set $dict "key3" "value3" }}
unsetElimina clave de diccionario
{{ $dict := unset $dict "key1" }}
hasKeyVerifica si existe clave
{{ hasKey $dict "key1" }} → true
listCrea lista
{{ $list := list 1 2 3 }}
firstPrimer elemento
{{ first $list }} → 1
lastÚltimo elemento
{{ last $list }} → 3
appendAñade a lista
{{ $list := append $list 4 }}

Conversión y Codificación ​

FunciónDescripciónEjemplo
toJsonConvierte a JSON
{{ toJson $dict }}
fromJsonConvierte de JSON
{{ $obj := fromJson $jsonString }}
toYamlConvierte a YAML
{{ toYaml $dict }}
fromYamlConvierte de YAML
{{ $obj := fromYaml $yamlString }}
toStringConvierte a string
{{ toString 123 }} → "123"
toIntConvierte a entero
{{ toInt "123" }} → 123
toFloatConvierte a float
{{ toFloat "123.45" }} → 123.45
base64Codifica en base64
{{ base64 "hello" }}
base64DecodeDecodifica base64
{{ base64Decode $encoded }}

Criptografía y Funciones Aleatorias ​

FunciónDescripciónEjemplo
sha256sumHash SHA256
{{ sha256sum "dato" }}
sha1sumHash SHA1
{{ sha1sum "dato" }}
md5sumHash MD5
{{ md5sum "dato" }}
uuidv4Genera UUID v4
{{ uuidv4 }}
randAlphaCadena aleatoria con letras
{{ randAlpha 5 }}
randNumericCadena aleatoria con números
{{ randNumeric 5 }}
randAlphaNumCadena aleatoria alfanumérica
{{ randAlphaNum 10 }}

Funciones Específicas por Servicio ​

Algunas funciones son exclusivas de ciertos servicios y no están disponibles en otros.

Funciones Específicas de Documentos ​

FunciónDescripciónEjemplo
signedAtObtiene fecha de firma de documento
{{ signedAt .EntityID .TemplateID }} → 15/enero/2023
currencyEntityFormatea moneda según config. entidad
{{ currencyEntity .Value }} → $1,000,000
incomesFormatea ingresos según configuración
{{ incomes .Value }} → $1,000,000
expensesFormatea gastos según configuración
{{ expenses .Value }} → $1,000,000
listPDFFormatea listas para PDF
{{ listPDF .CustomFields "campo1" }} → valor1, valor2
consecutiveEBObtiene consecutivo de documento EB
{{ consecutiveEB .Documents }} → CD-000123
tceaCalcula TCEA del crédito
{{ tcea .Credit }} → 15.25%
rateMVConvierte tasa EA a mensual vencida
{{ rateMV .Credit.Rate }} → 1.19

Funciones Específicas de Webhooks ​

Webhooks utilizan todas las funciones de Sprig y Kuenta, sin añadir funciones específicas adicionales.

Funciones Específicas de Email ​

FunciónDescripciónEjemplo
pinGenera/muestra PIN de autenticación
{{ pin }} → 123456
summaryGenera resumen HTML del crédito
{{ summary }} → <div>...</div>
amortizationGenera tabla HTML de amortización
{{ amortization }} → <table>...</table>

Funciones Específicas de Voz ​

El servicio de voz no implementa funciones específicas adicionales, solo tiene acceso a las funciones básicas de Go Templates y algunas funciones comunes de Kuenta.

Funciones Específicas de Firma ​

FunciónDescripciónEjemplo
formatDateFormatea fecha en formato específico
{{ formatDate .Date "format" }} → 15/01/2023
formatDateTimeFormatea fecha y hora
{{ formatDateTime .Date "format" }} → 15/01/2023 10:30
htmlMarca contenido como HTML seguro
{{ html .HtmlContent }}

Notas de Uso ​

  1. Cuando usar commonData: Siempre que necesites acceder a campos comunes entre perfiles naturales y legales (Name, Email, Address, AddressCity, IDNumber, Initials).

  2. Diferencia entre currency y currencyEntity: Estas funciones tienen un comportamiento ligeramente distinto:

    • currency: Utiliza símbolo de moneda fijo ($)
    • currencyEntity: Utiliza el símbolo de moneda configurado para la entidad
  3. Verificación de Existencia: Siempre verifica que una variable existe antes de utilizarla:

txt
{{ if .Credit.ApprovedAt }}
    {{ date .Credit.ApprovedAt }}
{{ else }}
    No aprobado
{{ end }}

Explicación: Este código verifica si la fecha de aprobación del crédito existe. Si existe, la formatea y la muestra; de lo contrario, muestra "No aprobado". Es un ejemplo de uso de condicionales (if, else) y la función date.

  1. Uso eficiente de Sprig: En Documentos y Webhooks, aproveche las potentes funciones de transformación de Sprig. Para otros servicios, utilice alternativas con funciones básicas.

  2. Rendimiento: Las funciones de plantilla se ejecutan en el servidor. Las operaciones complejas o bucles grandes pueden afectar el rendimiento.

  3. Errores comunes: Si ve can't evaluate field X in type Y, significa que está intentando acceder a un campo que no existe en el objeto actual. Use condicionales (if) para verificar la existencia.

  4. Funciones de Configuración: Para usar funciones que dependen de configuración específica (como currencyEntity o incomes), asegúrese de que el objeto Configuration esté disponible en el contexto del template.

  5. Funciones de Crédito: Las funciones como tcea, rateMV y consecutiveEB requieren que el objeto Credit esté disponible y tenga los datos necesarios.

  6. Formateo de Listas: Use listPDF para formatear listas en documentos PDF (sin HTML) y customFields para formatear listas con HTML en otros contextos.

  7. Operaciones Matemáticas: La función operation soporta operadores básicos (+, -, *, /) y puede ser útil para cálculos con dinero simples en plantillas. Nota: Ambos parámetros numéricos aceptan cualquier tipo (string, int, float, decimal) y se convierten automáticamente.