Qué acciones se pueden implementar en triggeres con campos
Copiar enlace al artículo
Copiado

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.

Gracias por tus comentarios.
¿Te resultó útil este artículo
No
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Si
Artículo anterior
Cómo configurar la validación de un campo en un trigger
La validación de un campo en un trigger es obligatorio para que un evento se active solo si se cumple una determinada condición. Por ejemplo, el contenido de ciertos números en un número de teléfono.
Artículo siguiente
¿Cómo evitar triggeres repetidos?
El artículo describe las posibles causas de la activación repetida de un trigger por la misma condición, así como las opciones para resolver una situación similar.
#}