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.