{power({subtract({divide({add({multiply(10; 2)}; 12)}; 8)}; 1)}; 2)}
En Workflows, existe una Action particularmente potente y compleja llamada Calculated Fields que le permite realizar operaciones sobre los valores de los registros que está gestionando.

Es posible añadir parámetros a las fórmulas utilizando la lista desplegable de la sección Parameters de la interfaz de usuario de Calculate Fields. La lista desplegable contiene todos los campos (básicos y personalizados) que pertenecen al módulo seleccionado en la sección de campos básicos.
Para añadir un parámetro, seleccione el campo en la lista desplegable y haga clic en Add parameter. Tras esta acción, aparece una nueva línea en la tabla de parámetros con el nombre del campo y el identificador asignado.
Para algunos campos (listas desplegables y de selección múltiple) aparece una lista desplegable adicional donde el usuario puede seleccionar si debe usarse el valor sin procesar o el valor formateado en Calculated Fields. El formato sin procesar es el valor almacenado en la base de datos, y el valor formateado es la etiqueta correspondiente a ese valor de la base de datos.
Para eliminar un parámetro de la tabla, simplemente haga clic en el - en la fila del parámetro. Tenga en cuenta que si elimina un parámetro, se recalculan todos los identificadores, por lo que los identificadores de los campos podrían cambiar.

El identificador se utiliza para hacer referencia a este campo cuando el usuario crea la fórmula. Por ejemplo, todas las apariciones del identificador {P0} serán sustituidas por el nombre de la Cuenta en la fórmula. Todos los parámetros tienen la forma {Px}, donde x es el orden secuencial del parámetro. La cantidad de parámetros no está limitada.
Los parámetros de relación son muy similares a los parámetros normales; la única diferencia es que el usuario selecciona primero una entidad que tiene una relación uno a uno o uno a muchos con la entidad actual.
Para añadir un parámetro de relación, seleccione primero la relación y luego seleccione el campo de la entidad conectada y pulse el botón Add relation parameter. Tras esta acción, aparece una nueva línea en la tabla de parámetros de relación con el nombre de la relación, el nombre del campo y el identificador asignado.
Al igual que con los parámetros normales, para algunos campos de parámetro de relación (listas desplegables y de selección múltiple) aparece una lista desplegable adicional donde el usuario puede seleccionar si debe usarse el valor sin procesar o el valor formateado en Calculate Fields.
Para eliminar un parámetro de relación de la tabla, simplemente haga clic en el botón - en la fila del parámetro de relación. Tenga en cuenta que si elimina un parámetro de relación, se recalculan todos los identificadores, por lo que los identificadores de los campos podrían cambiar.

El identificador se utiliza para hacer referencia a este campo cuando el usuario crea la fórmula. Por ejemplo, todas las apariciones del identificador {R0} serán sustituidas por el nombre de usuario del creador en la fórmula. Todos los parámetros de relación tienen la forma {Rx}, donde x es el orden secuencial del parámetro de relación. La cantidad de parámetros de relación no está limitada.
En la parte de Formulas de la interfaz de usuario, el usuario puede añadir fórmulas para campos de la entidad actual.
Para añadir una fórmula, seleccione primero un campo en la lista desplegable y luego pulse el botón Add formula. Tras esta acción, aparece una nueva línea en la tabla de fórmulas con el nombre del campo y el espacio para la fórmula.
Para eliminar una fórmula de la tabla, simplemente haga clic en el - en la fila de la fórmula.

La fórmula es un cuadro de texto donde el usuario puede escribir las fórmulas. El módulo evalúa la fórmula en el momento indicado (al guardar, al ejecutarse el programador, o en ambos casos) y rellena el campo seleccionado con el valor evaluado.
La fórmula puede contener cualquier texto (con soporte completo de UTF-8), pero solo se evalúan las partes de función (funciones con parámetros entre "{" y "}"). Por ejemplo, y con los parámetros añadidos en las secciones anteriores, si rellenamos la fórmula así: Account {P0} created by user name {R0}, entonces el campo de descripción tendrá el siguiente valor tras guardar: Account My Account created by user name MyUser (suponiendo que el nombre de la cuenta es My Account y el nombre de usuario del creador es MyUser).
Calculate Fields dispone de muchas funciones integradas que permiten al usuario crear fórmulas complejas para lograr diversos objetivos. Estas funciones se describen en la siguiente sección.
Como se ha mencionado anteriormente, todas las funciones van envueltas entre los signos {
y }, y tienen el aspecto {functionName(parameter1; parameter2;
…)}. El número de parámetros varía según la función. El
módulo evalúa las funciones y las sustituye por su resultado en la fórmula.
Las funciones pueden anidarse unas dentro de otras (utilizando el resultado de una función como parámetro de otra) como en este ejemplo:
{power({subtract({divide({add({multiply(10; 2)}; 12)}; 8)}; 1)}; 2)}
Esta función es la representación formalizada de la siguiente expresión matemática:
((((10 * 2) + 12) / 8) – 1)2
Las funciones se dividen en seis grupos. Estos grupos se describen en la siguiente sección del documento.
Las funciones lógicas devuelven verdadero o falso en forma de 1 y 0, de modo que los campos de tipo casilla de verificación pueden rellenarse con estas funciones. También pueden utilizarse como condición lógica para la función ifThenElse.
Signature |
{equal(parameter1;parameter2)} |
Parameters |
parameter1: puede ser cualquier valor de cualquier tipo |
parameter2: puede ser cualquier valor de cualquier tipo |
|
Description |
Determina si parameter1 es igual a parameter2 |
Returns |
1 si los dos parámetros son iguales, o 0 si no lo son |
Example call |
{equal(1; 2)} devuelve 0 |
Signature |
{notEqual(parameter1; parameter2)} |
Parameters |
parameter1: puede ser cualquier valor de cualquier tipo |
parameter2: puede ser cualquier valor de cualquier tipo |
|
Description |
Determina si parameter1 no es igual a parameter2 |
Returns |
0 si los dos parámetros son iguales, o 1 si no lo son |
Example call |
{notEqual(1; 2)} devuelve 1 |
Signature |
{greaterThan(parameter1; parameter2)} |
Parameters |
parameter1: puede ser cualquier valor de cualquier tipo |
parameter2: puede ser cualquier valor de cualquier tipo |
|
Description |
Determina si parameter1 es mayor que parameter2 |
Returns |
1 si parameter1 es mayor que parameter2, 0 si no lo es |
Example call |
{greaterThan(3; 3)} devuelve 0 |
Signature |
{greaterThanOrEqual(parameter1; parameter2)} |
Parameters |
parameter1: puede ser cualquier valor de cualquier tipo |
parameter2: puede ser cualquier valor de cualquier tipo |
|
Description |
Determina si parameter1 es mayor o igual que parameter2 |
Returns |
1 si parameter1 es mayor o igual que parameter2, 0 si no lo es |
Example call |
{greaterThanOrEqual(3; 3)} devuelve 1 |
Signature |
{lessThan(parameter1; parameter2)} |
Parameters |
parameter1: puede ser cualquier valor de cualquier tipo |
parameter2: puede ser cualquier valor de cualquier tipo |
|
Description |
Determina si parameter1 es menor que parameter2 |
Returns |
1 si parameter1 es menor que parameter2, 0 si no lo es |
Example call |
{lessThan(3; 3)} devuelve 0 |
Signature |
{lessThanOrEqual(parameter1; parameter2)} |
Parameters |
parameter1: puede ser cualquier valor de cualquier tipo |
parameter2: puede ser cualquier valor de cualquier tipo |
|
Description |
Determina si parameter1 es menor o igual que parameter2 |
Returns |
1 si parameter1 es menor o igual que parameter2, 0 si no lo es |
Example call |
{lessThanOrEqual(3; 3)} devuelve 1 |
Signature |
{empty(parameter)} |
Parameters |
parameter: valor de texto |
Description |
Determina si parameter está vacío |
Returns |
1 si parameter está vacío, 0 si no lo está |
Example call |
{empty(any text)} devuelve 0 |
Signature |
{notEmpty(parameter)} |
Parameters |
parameter: valor de texto |
Description |
Determina si parameter no está vacío |
Returns |
1 si parameter no está vacío, 0 si está vacío |
Example call |
{notEmpty(any text)} devuelve 1 |
Signature |
{not(parameter)} |
Parameters |
parameter: valor lógico |
Description |
Niega el valor lógico de parameter |
Returns |
1 si parameter es 0, 0 si parameter es 1 |
Example call |
{not(0)} devuelve 1 |
Signature |
{and(parameter1; parameter2)} |
Parameters |
parameter1: valor lógico |
parameter2: valor lógico |
|
Description |
Aplica el operador lógico AND a dos valores lógicos |
Returns |
1 si parameter1 y parameter2 son 1, 0 si alguno de los parámetros es 0 |
Example call |
{and(1; 0)} devuelve 0 |
Signature |
{or(parameter1; parameter2)} |
Parameters |
parameter1: valor lógico |
parameter2: valor lógico |
|
Description |
Aplica el operador lógico OR a dos valores lógicos |
Returns |
1 si parameter1 u parameter2 es 1, 0 si ambos parámetros son 0 |
Example call |
{or(1; 0)} devuelve 1 |
Las funciones de texto se utilizan para manipular texto de varias formas. Todas las funciones aquí listadas son totalmente compatibles con textos en UTF-8, por lo que los caracteres especiales no deberían plantear ningún problema.
Signature |
{substring(text; start; length)} |
Parameters |
text: valor de texto |
start: valor decimal |
|
length [parámetro opcional]: valor decimal |
|
Description |
Extrae la subcadena de un campo de texto a partir de start. Si el parámetro opcional length no se establece, se cortan todos los caracteres hasta el final de la cadena; en caso contrario se corta la length indicada. La indexación de los caracteres de un texto empieza en 0. |
Returns |
Subcadena del texto indicado |
Example call |
{substring(This is my text; 5)} devuelve is my text |
{substring(This is my text; 5; 5)} devuelve is my |
Signature |
{length(parameter)} |
Parameters |
parameter: valor de texto |
Description |
Cuenta los caracteres de un texto. |
Returns |
El número de caracteres del texto. |
Example call |
{length(sample text)} devuelve 11 |
Signature |
{replace(search; replace; subject)} |
Parameters |
search: valor de texto |
replace: valor de texto |
|
subject: valor de texto |
|
Description |
Sustituye todas las apariciones de search por replace en el texto subject. |
Returns |
subject con los valores sustituidos. |
Example call |
{replace(apple; orange; This is an apple tree)} devuelve This is an orange tree |
Signature |
{position(subject; search)} |
Parameters |
subject: valor de texto |
search: valor de texto |
|
Description |
Encuentra la posición de la primera aparición de search en subject |
Returns |
Posición numérica de search en subject, o -1 si search no está presente en subject |
Example call |
{position(Where is my text?; text)} devuelve 12 |
Signature |
{lowercase(parameter)} |
Parameters |
parameter: valor de texto |
Description |
Convierte el texto a minúsculas |
Returns |
El texto en minúsculas. |
Example call |
{lowercase(ThIs iS a sAmPlE tExT)} devuelve this is a sample text |
Signature |
{uppercase(parameter)} |
Parameters |
parameter: valor de texto |
Description |
Convierte el texto a mayúsculas |
Returns |
El texto en mayúsculas. |
Example call |
{uppercase(ThIs iS a sAmPlE tExT)} devuelve THIS IS A SAMPLE TEXT |
Las funciones matemáticas se utilizan para manipular números de varias formas. Varios operadores matemáticos están implementados como funciones en Calculate Fields.
Signature |
{add(parameter1; parameter2)} |
Parameters |
parameter1: valor numérico |
parameter2: valor numérico |
|
Description |
Suma parameter1 y parameter2 |
Returns |
La suma de parameter1 y parameter2 |
Example call |
{add(3.12; 4.83)} devuelve 7.95 |
Signature |
{subtract(parameter1; parameter2)} |
Parameters |
parameter1: valor numérico |
parameter2: valor numérico |
|
Description |
Resta parameter2 de parameter1 |
Returns |
La diferencia entre parameter2 y parameter1 |
Example call |
{subtract(8; 3)} devuelve 5 |
Signature |
{multiply(parameter1; parameter2)} |
Parameters |
parameter1: valor numérico |
parameter2: valor numérico |
|
Description |
Multiplica parameter1 y parameter2 |
Returns |
El producto de parameter1 y parameter2 |
Example call |
{multiply(2; 4)} devuelve 8 |
Signature |
{divide(parameter1; parameter2)} |
Parameters |
parameter1: valor numérico |
parameter2: valor numérico |
|
Description |
Divide parameter2 entre parameter1 |
Returns |
El resultado de la división de parameter2 entre parameter1 |
Example call |
{divide(8; 2)} devuelve 4 |
Signature |
{power(parameter1; parameter2)} |
Parameters |
parameter1: valor numérico |
parameter2: valor numérico |
|
Description |
Eleva parameter1 a la potencia de parameter2 |
Returns |
parameter1 elevado a la potencia de parameter2 |
Example call |
{power(2; 7)} devuelve 128 |
Signature |
{squareRoot(parameter)} |
Parameters |
parameter: valor numérico |
Description |
Calcula la raíz cuadrada de parameter |
Returns |
La raíz cuadrada de parameter |
Example call |
{squareRoot(4)} devuelve 2 |
Signature |
{absolute(parameter)} |
Parameters |
parameter: valor numérico |
Description |
Calcula el valor absoluto de parameter |
Returns |
El valor absoluto de parameter |
Example call |
{absolute(-4)} devuelve 4 |
Hay varias funciones de fecha implementadas en Calculate Fields, de modo que el usuario puede manipular fechas de muchas formas. La mayoría de las funciones utilizan un parámetro de formato, que se usa para mostrar el resultado de las funciones con el formato que el usuario desee. Las opciones para estos formatos son equivalentes a los parámetros de formato de PHP:
| Carácter de formato | Descripción | Ejemplos de valores devueltos |
|---|---|---|
Para el día |
||
d |
Día del mes, 2 dígitos con ceros a la izquierda |
01 a 31 |
D |
Representación textual de un día, tres letras |
Mon a Sun |
j |
Día del mes sin ceros a la izquierda |
1 a 31 |
l |
Representación textual completa del día de la semana |
Sunday a Saturday |
N |
Representación numérica ISO-8601 del día de la semana |
1 (lunes) a 7 (domingo) |
S |
Sufijo ordinal en inglés para el día del mes, 2 caracteres |
st, nd, rd o th. Funciona bien con j |
w |
Representación numérica del día de la semana |
0 (domingo) a 6 (sábado) |
z |
El día del año (empezando desde 0) |
0 a 365 |
Para la semana |
||
W |
Número de semana ISO-8601 del año, las semanas empiezan en lunes |
42 (la semana 42 del año) |
Para el mes |
||
F |
Representación textual completa de un mes, como January o March |
January a December |
m |
Representación numérica de un mes, con ceros a la izquierda |
01 a 12 |
M |
Representación textual corta de un mes, tres letras |
Jan a Dec |
n |
Representación numérica de un mes, sin ceros a la izquierda |
1 a 12 |
t |
Número de días del mes indicado |
28 a 31 |
Para el año |
||
L |
Si es un año bisiesto |
1 si es un año bisiesto, 0 en caso contrario |
o |
Número de año ISO-8601. Tiene el mismo valor que Y, salvo que si el número de semana ISO (W) pertenece al año anterior o siguiente, se usa ese año en su lugar |
1999 o 2003 |
Y |
Representación numérica completa de un año, 4 dígitos |
1999 o 2003 |
y |
Representación de dos dígitos de un año |
99 o 03 |
Para la hora |
||
a |
Ante meridiem y post meridiem en minúsculas |
am o pm |
A |
Ante meridiem y post meridiem en mayúsculas |
AM o PM |
B |
Hora de Internet Swatch |
000 a 999 |
g |
Formato de 12 horas sin ceros a la izquierda |
1 a 12 |
G |
Formato de 24 horas sin ceros a la izquierda |
0 a 23 |
h |
Formato de 12 horas con ceros a la izquierda |
01 a 12 |
H |
Formato de 24 horas con ceros a la izquierda |
00 a 23 |
i |
Minutos con ceros a la izquierda |
00 a 59 |
s |
Segundos, con ceros a la izquierda |
00 a 59 |
Para la zona horaria |
||
e |
Identificador de zona horaria |
UTC, GMT, Atlantic/Azores |
l |
Si la fecha está o no en horario de verano |
1 si está en horario de verano, 0 en caso contrario |
O |
Diferencia con el horario de Greenwich (GMT) en horas |
+0200 |
P |
Diferencia con el horario de Greenwich (GMT) con dos puntos entre las horas y los minutos |
+02:00 |
T |
Abreviatura de la zona horaria |
EST, MDT |
Z |
Desplazamiento de la zona horaria en segundos. El desplazamiento para las zonas horarias al oeste de UTC siempre es negativo, y para las del este de UTC siempre es positivo. |
-43200 a 50400 |
Para fecha/hora completa |
||
c |
Fecha ISO 8601 |
2004-02-12T15:19:21+00:00 |
r |
Fecha con formato RFC 2822 |
Thu, 21 Dec 2000 16:01:07 +0200 |
U |
Segundos desde la época Unix (1 de enero de 1970 00:00:00 GMT) |
|
Para todas las funciones sin parámetro de marca de tiempo, se asume que la fecha/hora actual es 2016.04.29. 15:08:03
Signature |
{date(format; timestamp)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
Description |
Crea una fecha en el formato indicado |
Returns |
timestamp en el format indicado |
Example call |
{date(ymd; 2016-02-11)} devuelve 160211 |
Signature |
{now(format)} |
Parameters |
format: texto de formato |
Description |
Crea la fecha/hora actual en el formato indicado |
Returns |
Fecha/hora actual en el format indicado |
Example call |
{now(Y-m-d H:i:s)} devuelve 2016-04-29 15:08:03 |
Signature |
{yesterday(format)} |
Parameters |
format: texto de formato |
Description |
Crea la fecha/hora de ayer en el formato indicado |
Returns |
Fecha/hora de ayer en el format indicado |
Example call |
{yesterday(Y-m-d H:i:s)} devuelve 2016-04-28 15:08:03 |
Signature |
{tomorrow(format)} |
Parameters |
format: texto de formato |
Description |
Crea la fecha/hora de mañana en el formato indicado |
Returns |
Fecha/hora de mañana en el format indicado |
Example call |
{tomorrow(Y-m-d H:i:s)} devuelve 2016-04-30 15:08:03 |
Signature |
{datediff(timestamp1; timestamp2; unit)} |
Parameters |
timestamp1: valor de fecha/hora |
timestamp2: valor de fecha/hora |
|
unit: years/months/days/hours/minutes/seconds; valor por defecto: days |
|
Description |
Resta timestamp2 de timestamp1 |
Returns |
La diferencia entre las dos fechas, devuelta en unit |
Example call |
{datediff(2016-02-01; 2016-04-22; days)} devuelve 81 |
Signature |
{addYears(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Suma amount años a timestamp |
Returns |
Fecha incrementada en el format indicado |
Example call |
{addYears(Ymd; 2016-04-22; 1)} devuelve 20170422 |
Signature |
{addMonths(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Suma amount meses a timestamp |
Returns |
Fecha incrementada en el format indicado |
Example call |
{addMonths(Ymd; 2016-04-22; 1)} devuelve 20160522 |
Signature |
{addDays(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Suma amount días a timestamp |
Returns |
Fecha incrementada en el format indicado |
Example call |
{addDays(Ymd; 2016-04-22; 1)} devuelve 20160423 |
Signature |
{addHours(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Suma amount horas a timestamp |
Returns |
Fecha incrementada en el format indicado |
Example call |
{addHours(Ymd H:i:s; 2016-04-22 23:30; 5)} devuelve 20160423 04:30:00 |
Signature |
{addMinutes(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
amount: número decimal |
Description |
Suma amount minutos a timestamp |
Returns |
Fecha incrementada en el format indicado |
Example call |
{addMinutes(Ymd H:i:s; 2016-04-22 22:58; 5)} devuelve 20160422 23:03:00 |
Signature |
{addSeconds(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Suma amount segundos a timestamp |
Returns |
Fecha incrementada en el format indicado |
Example call |
{addSeconds(Ymd H:i:s; 2016-04-22 22:58; 5)} devuelve 20160422 22:58:05 |
Signature |
{subtractYears(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Resta amount años a timestamp |
Returns |
Fecha decrementada en el format indicado |
Example call |
{subtractYears(Ymd; 2016-04-22; 5)} devuelve 20110422 |
Signature |
{subtractMonths(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Resta amount meses a timestamp |
Returns |
Fecha decrementada en el format indicado |
Example call |
{subtractMonths(Ymd; 2016-04-22; 5)} devuelve 20151122 |
Signature |
{subtractDays(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Resta amount días a timestamp |
Returns |
Fecha decrementada en el format indicado |
Example call |
{subtractDays(Ymd; 2016-04-22; 5)} devuelve 20160417 |
Signature |
{subtractHours(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Resta amount horas a timestamp |
Returns |
Fecha decrementada en el format indicado |
Example call |
{subtractHours(Ymd H:i:s; 2016-04-22 12:37; 5)} devuelve 20160422 07:37:00 |
Signature |
{subtractMinutes(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
|
amount: número decimal |
|
Description |
Resta amount minutos a timestamp |
Returns |
Fecha decrementada en el format indicado |
Example call |
{subtractMinutes(Ymd H:i:s; 2016-04-22 12:37; 5)} devuelve 20160422 12:32:00 |
Signature |
{subtractSeconds(format; timestamp; amount)} |
Parameters |
format: texto de formato |
timestamp: valor de fecha/hora |
amount: número decimal |
Description |
Resta amount segundos a timestamp |
Returns |
Fecha decrementada en el format indicado |
Example call |
{subtractSeconds(Ymd H:i:s; 2016-04-22 12:37; 5)} devuelve 20160422 12:36:55 |
Hasta el momento solo hay una función de control implementada en Calculate Fields, pero esta función garantiza que el usuario pueda escribir fórmulas muy complejas con condiciones. Dado que las funciones pueden anidarse unas dentro de otras, el usuario puede escribir ramificaciones con muchas bifurcaciones.
Signature |
{ifThenElse(condition; trueBranch; falseBranch)} |
Parameters |
condition: valor lógico |
trueBranch: cualquier expresión |
|
falseBranch: cualquier expresión |
|
Description |
Selecciona una de las dos ramas en función de condition |
Returns |
trueBranch si condition es verdadera, falseBranch en caso contrario |
Example call |
{ifThenElse(\{equal(1; 1)}; 1 equals 1; 1 not equals 1)} devuelve 1 equals 1 |
Hay varios contadores implementados en Calculate Fields que pueden utilizarse en diversos escenarios.
Los contadores se dividen en dos grupos:
Contadores globales: contadores que se incrementan cada vez que se evalúa una fórmula afectada
Contadores diarios: contadores que se reinician cada día (empezando desde 1)
En este capítulo asumimos que el valor actual de los contadores es 4, por lo que el valor incrementado será 5 con el formato indicado.
Signature |
{GlobalCounter(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name con longitud numberLength |
Returns |
Contador con longitud numberLength |
Example call |
{GlobalCounter(myName; 4)} devuelve 0005 |
Signature |
{GlobalCounterPerUser(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name para el usuario que crea la entidad, con longitud numberLength |
Returns |
Contador con longitud numberLength |
Example call |
{GlobalCounterPerUser(myName; 3)} devuelve 005 |
Signature |
{GlobalCounterPerModule(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name para el módulo de la entidad, con longitud numberLength |
Returns |
Contador con longitud numberLength |
Example call |
{GlobalCounterPerModule(myName; 2)} devuelve 05 |
Signature |
{GlobalCounterPerUserPerModule(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name para el usuario que crea la entidad y para el módulo de la entidad, con longitud numberLength |
Returns |
Contador con longitud numberLength |
Example call |
{GlobalCounterPerUserPerModule(myName; 1)} devuelve 5 |
Signature |
{DailyCounter(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name con longitud numberLength |
Returns |
Contador con longitud numberLength, o si el contador no se ha incrementado ese día, entonces 1 con longitud numberLength |
Example call |
{DailyCounter(myName; 1)} devuelve 5 |
Signature |
{DailyCounterPerUser(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
Description |
Incrementa y devuelve el contador para name para el usuario que crea la entidad, con longitud numberLength |
Returns |
Contador con longitud numberLength, o si el contador no se ha incrementado ese día para este usuario, entonces 1 con longitud numberLength |
Example call |
Signature |
{DailyCounterPerModule(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name para el módulo de la entidad, con longitud numberLength |
Returns |
Contador con longitud numberLength, o si el contador no se ha incrementado ese día para este módulo, entonces 1 con longitud numberLength |
Example call |
{DailyCounterPerModule(myName; 1)} devuelve 5 |
Signature |
{DailyCounterPerUserPerModule(name; numberLength)} |
Parameters |
name: cualquier texto |
numberLength: número decimal |
|
Description |
Incrementa y devuelve el contador para name para el usuario que crea la entidad y para el módulo de la entidad, con longitud numberLength |
Returns |
Contador con longitud numberLength, o si el contador no se ha incrementado ese día para el usuario que crea la entidad y para este módulo, entonces 1 con longitud numberLength |
Example call |
{DailyCounterPerUserPerModule(myName; 1)} devuelve 5 |
El usuario desea calcular la cuota mensual de una oportunidad en un campo personalizado, dividiendo el importe de la oportunidad entre la duración.
Nuestro módulo de oportunidades tiene un campo desplegable llamado Duration con los valores (valor de la base de datos entre corchetes) 6 months [6], 1 year [12], 2 years [24]. También hay un campo de tipo moneda llamado Monthly.
Vaya al módulo Workflow y cree un nuevo flujo de trabajo. Configure las opciones básicas de la siguiente manera:
Name: como desee |
Workflow Module: Opportunities |
Status: Active |
Run: Only on save |
Run on: All records |
Repeated runs: activado |

No creamos ninguna condición, ya que queremos que el flujo de trabajo se ejecute en todas las oportunidades.
Ahora, añada una acción y seleccione Calculate Fields en la lista desplegable.
A continuación, añada dos campos de Opportunities como parámetros. Primero, seleccione Opportunity amount (amount) y añádalo como parámetro (será {P0}), luego seleccione Duration y la opción de valor sin procesar en la lista desplegable de tipo de dato y añádalo como parámetro dos (será {P1}). No es necesario añadir ningún parámetro de relación para esta fórmula.
Ahora, añada una fórmula para el campo monthly y rellene el cuadro de texto con la siguiente fórmula:
{divide({P0}; {P1})}
Así, la acción completa debería tener este aspecto:

Guarde el flujo de trabajo y cree una nueva Oportunidad:

Como puede ver, ni siquiera hemos añadido el campo monthly a la vista de edición, porque no queremos obligar al usuario a hacer cálculos. Guarde la Oportunidad y compruebe los resultados en la vista de detalle:

AOW Calculated Fields fue una contribución de diligent technology & business consulting GmbH
Puede eliminar líneas de acción haciendo clic en x en la esquina superior derecha de la acción.

Puede eliminar líneas de campo y relación haciendo clic en - en el lado izquierdo de la acción.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.