Insertamos los cálculos
En este capítulo agregaremos cálculos a nuestro pedido que deberán realizarse automáticamente. El objetivo es calcular el precio en función de la cantidad de cada producto que se insertará y el precio total del pedido.
Primero tendremos que crear los campos que contendrán los valores calculados dentro de las varias tablas. Una regla importante para recordar es que cada cálculo que realizamos debe tener un campo donde insertar el resultado, esto se utilizará para poder verificar cada paso calculado por el programa.
Creamos un campo de tipo de moneda con el nombre "Precio" dentro de la tabla Productos.
Creamos un campo de tipo Número decimal y con el nombre "Cantidad" dentro de la tabla pedidos_rows: será el campo que contiene la cantidad del producto a pedir.
Creamos un campo de tipo de moneda con el nombre "Precio" dentro de la tabla pedidos_rows.
Creamos un campo de tipo de moneda con el nombre "Precio Total" dentro de la tabla pedidos_rows.
Terminados los campos, debería encontrarse en una situación como esta:
Ahora modificamos el campo código de la tabla pedidos_rows para que, cuando elegimos un producto, el precio también se compile. Luego hacemos doble clic en el campo y establecemos las emparejamientos agregando el precio.
Una vez que se hayan establecido los emparejamientos, haz clic en Ok y guarda los cambios realizados en el campo
Después de crear los campos podemos ingresar a nuestros cálculos. Dado que los cálculos están relacionados con las tablas, tendremos que modificar pedidos_rows y luego Pedidos.
Vayamos a la página de tablas, hacemos doble clic en pedidos_rows y presionamos Configura en el parámetro Expresiones computacionales.
Agregamos una nueva línea y, en la columna izquierda, seleccionamos el campo Precio total, que es el que contendrá el resultado, mientras que en la columna derecha escribimos [precio] * [cantidad]. Es importante escribir exactamente de esta manera porque los corchetes informan al programa que esos son campos y, por lo tanto, tendrán que recuperar su valor actual antes de realizar la operación.
Damos Ok, guardamos e inmediatamente intentamos hacer un nuevo pedido.
Se puede ver que existen los nuevos campos que hemos creado dentro de pedidos_rows.
Agregamos una línea e insertamos valores en Cantidad y Precio para ver automáticamente el Precio total calculado. También es posible escribir un valor dentro del Precio total ya que el campo es editable, pero se cambiará automáticamente tan pronto como se modifique uno de los campos recuperados por la expresión.
Recuerda que las expresiones se realizan en el pedido en que se ingresaron y se recalculan en cuanto se modifica un campo llamado por ellas.
Ahora insertamos el campo Precio total en el pedido siguiendo otra ruta: insertamos el campo directamente desde el editor de esquemas.
Abrimos el esquema por defecto de la tabla Pedidos, abrimos el menú Acciones, seleccionamos Crea campo y finalmente seleccionamos el elemento Detalle inferior derecho.
Una vez hecho esto, creamos el campo de tipo Moneda y lo denominamos Precio total. Guardemos el campo, guardemos el esquema y cerremos.
Ahora vamos a insertar el cálculo en la tabla Pedidos. Como puedes ver en la columna de la derecha, se encuentran los campos de los pedidos y de los pedidos_rows porque es posible realizar cálculos recuperando valores de las tablas adicionales.
Agregamos la línea y seleccionamos el campo Precio total en la columna derecha, mientras hacemos clic en el elemento Precio total de pedidos_rows en la tabla derecha.
La expresión tiene un formato particular: le dice al programa que recupere la suma del campo Precio total, de hecho, no es posible recuperar un valor de una línea específica de una tabla adicional, pero, en este caso, solo la suma de la columna.
Si necesitas recuperar el valor de una línea específica, deberás insertar un script LUA que realizará el cálculo.
Como siempre le damos Ok, guardamos y probamos nuestro pedido.
De ahora en adelante, agregando más líneas e ingresando los valores en las columnas de Cantidad y Precio, veremos el Precio total del pedido recalculado cada vez.