|
CMW > Nominas > Tablas > Tablas - Convenios > Ejemplo de como implementar una fórmula |
Ejemplo de como implementar una fórmula
Vamos a desarrollar el caso del cálculo del precio para la centralita telefónica. El convenio indica que: Cuando exista centralita telefónica y ésta se halle al cuidado exclusivo del empleado, entendiendo como centralita telefónica aquella que el empleado tiene que manipular para poner en comunicación a terceras personas bien sea a través de llamadas exteriores o interiores, el salario base mínimo que con arreglo a la escala establecida en el art. 34 le correspondiera percibir, se incrementará en un 10 por 100 si la centralita tiene un número de extensiones no superior a 40. Si excede de tal número, y por cada 20 extensiones más se incrementará el citado salario base en un 5 por 100.
Por un lado tenemos que conocer el número total de extensiones que tiene la centralita telefónica, para ello habremos creado en el fichero de variables una característica de la empresa que contenga dicho número y que llamaremos "NUM_EXT_CEN" (NUMero de EXTensiones de la CENtralita), cuando creamos la ficha de la empresa asignamos a esta característica el número de extensiones, para nuestro ejemplo supongamos 63.
Por otro lado debemos establecer dos fórmulas, que partiendo del número total de extensiones, nos indiquen si están en el grupo de las 40 primeras o en el de los bloques de 20 y en este segundo caso cuantos bloques de 20 hay.
Para el primer caso debemos aplicar una fórmula que nos devuelva un 0 o un 1. Si no hay ninguna extensión debe devolver 0, si hay desde 1 hasta 40 extensiones debe devolver un 1. Este resultado lo multiplicaremos por 10 que es el porcentaje de incremento para las 40 primeras extensiones.
La fórmula es la siguiente: INTEGER(NUM_EXT_CEN + 39 MIN 40 / 40) * 10
Siguiendo el desarrollo paso a paso vemos que:
•NUM_EXT_CEN + 39: Nos dará un número igual o mayor a 39. 39 en el caso que el número de extensiones sea 0 o mayor que 39 en el resto de los casos.
•(Resultado de anterior expresión) MIN 40: Nos dará 39 o 40. 39 en el caso que el resultado de la anterior expresión sea 39 o 40 en el resto de los casos ya que aunque el resultado de la anterior expresión sea mayor que 40, al aplicar el signo "<" (menor valor) se convierte en 40.
•(Resultado de anterior expresión) / 40: Nos dará 0,975 o 1. Según que el resultado fuese 39 o 40.
•INTEGER(resultado anterior expresión): Nos dará 0 o 1. Según que el resultado de la anterior expresión sea 0,975 o 1. Recordemos que la función "INTEGER", nos devuelve el valor entero de una expresión truncando los decimales.
•Multiplicando por 10 obtendremos el porcentaje de incremento de las 40 primeras extensiones.
Para el segundo caso debemos aplicar una fórmula que nos devuelva el número de bloques de 20 extensiones que excedan de 40 y multiplicado por 5.
La fórmula es la siguiente: INTEGER(NUM_EXT_CEN - 40 MAX 0 / 20) * 5
Siguiendo el desarrollo paso a paso vemos que:
•NUM_EXT_CEN - 40: Nos dará el número de extensiones que excedan de 40 o un número igual o inferior a 0 en el caso que las extensiones sean iguales o inferiores a 40.
•(Resultado de anterior expresión) MAX 0: Nos dará 0 o el número de extensiones que excedan de 40.
•(Resultado de anterior expresión) / 20: Nos dará 0 o el número de bloques de extensiones calculados de 20 en 20. Hay que tener presente que el resultado de la división puede contener decimales.
•INTEGER((Resultado de anterior expresión): Quita los decimales de la anterior expresión dejando 0 o el número de bloques de extensiones contados de 20 en 20.
•Multiplicando por 5 obtendremos el porcentaje de incremento de los bloques de extensiones que excedan de 40.
Por lo que la fórmula final del concepto es: (INTEGER(NUM_EXT_CEN + 39 MIN 40 / 40) * 10) + (INTEGER(NUM_EXT_CEN - 40 MAX 0 / 20) * 5)
Desarrollando la fórmula, para nuestro ejemplo (63 extensiones), paso a paso, quedará:
Paso 1, sustituir la variable NUM_EXT_CEN (63) por su valor: (INTEGER(63 + 39 MIN 40 / 40) * 10) + (INTEGER(63 - 40 MAX 0 / 20) * 5)
Paso 2, realizar las operaciones una a una hasta obtener el resultado: Para este desarrollo hay que tener presente que el programa da prioridad a las operaciones entre paréntesis pero no tiene prioridades para los signos matemáticos. Si no hay paréntesis realiza las operaciones de izquierda a derecha.
(INTEGER(63 + 39 MIN 40 / 40) * 10) + (INTEGER(63 - 40 MAX 0 / 20) * 5)
(INTEGER(102 MIN 40 / 40) * 10) + (INTEGER(63 - 40 MAX 0 / 20) * 5)
(INTEGER(40 / 40) * 10) + (INTEGER(63 - 40 MAX 0 / 20) * 5)
(INTEGER(1) * 10) + (INTEGER(63 - 40 MAX 0 / 20) * 5)
(1 * 10) + (INTEGER(63 - 40 MAX 0 / 20) * 5)
10 + (INTEGER(63 - 40 MAX 0 / 20) * 5)
10 + (INTEGER(23 MAX 0 / 20) * 5)
10 + (INTEGER(23 / 20) * 5)
10 + (INTEGER(1,15) * 5)
10 + (1 * 5)
10 + 5
15