Al realizar la acción necesaria, el trigger puede realizar diversas interacciones con campos mutables, el valor de otros campos, realizar operaciones matemáticas, trabajar con funciones y filtros pipeLang.
Operaciones matemáticas en la ejecutacion del trigger
En la acción de disparo, puede utilizar operadores aritméticos como suma, resta, multiplicación, etc., la lista completa se puede encontrar en el artículo Lenguaje de expresión .
Analicemos un caso popular de agregar un margen de beneficio al coste de envío mediante un trigger que se activará cuando cambie la información en el campo "Coste de envío".
Nota
Para que este trigger funcione correctamente, el módulo de integración con el servicio de entrega debe estar configurado de tal manera que el coste de entrega según la tarifa del servicio de entrega se registre en el campo "Coste de entrega" de la ficha de pedido.
conjunto de cambios.hasChangedField("delivery_net_cost") and conjunto de cambios.newValue("delivery_net_cost") != null
En la acción de activación, debe seleccionar cambiar el campo "Coste de envío", especificar en la expresión:
order.deliveryNetCost+100
Este código agregará un recargo de 100 euros al costo de envío que proporcionó el servicio de entrega para la tienda online.
Uso de funciones en acciones de activación
En pipeLang hay funciones y funciones adicionales que se pueden usar en acción, así como una condición de activación, considere un caso bastante popular para cambiar el administrador responsable en orden a un usuario específico del sistema.
Especificamos en la condición de disparo:
conjunto de cambios.isCreate() and order.orderType.code == "eshop-legal"
Este código funcionará si el sistema recibe un pedido con el tipo de pedido Entidad, que en este ejemplo es procesado por un administrador específico, con el identificador 4.
Nota
El ID del administrador se muestra en la barra de direcciones del navegador, estando en la tarjeta de usuario.
Agregue una acción para cambiar el administrador de pedidos responsable e indique en la expresión:
entity_by_id('User', 4)
Tal trigger designará al usuario con el identificador 4 como el administrador responsable del pedido, si el sistema crea un pedido para una entidad legal.
Trabajar con matrices en acción de activación
Trabajar con matrices de datos en pipeLang, como en otros lenguajes, difiere de trabajar con objetos ordinarios y sus parámetros. Hay filtros disponibles para trabajar con matrices, que se pueden encontrar en el artículo Lenguaje de expresión.
Considere un trigger que calculará el valor de compra de los productos en un pedido al agregar o quitar productos del pedido y resumir o restar el valor de compra del campo que necesitamos.
Creemos un campo personalizado en el que se registrará el precio de los productos calculado por el trigger .
Creemos un trigger con la condición:
conjunto de cambios.hasChangedField("order_product")
En la acción de trigger , seleccione el cambio de pedido, de la lista desplegable de campos, seleccione el campo personalizado creado anteriormente e indique el siguiente código en la expresión:
order.availableOrderProducts | reduce( (sum, x) =>sum + x.purchasePrice * x.quantity )
Habiendo implementado dicha lógica, en un campo de usuario separado veremos cuánto dinero gastamos en productos para este pedido.