Trabajar con productos en triggeres, validaciones y tipos de precio
Copiar enlace al artículo
Copiado

La composición del pedido es un arreglo de datos, por lo tanto, el trabajo con él se realiza mediante filtros especiales creados en pipeLang, en este artículo analizaremos el trabajo con filtros en cuanto a la composición de productos en triggers y validaciones.

¡Importante!

Si se aplican tipos de precio, la sintaxis para hacer referencia a productos será diferente de hacer referencia a ellos en un trigger o validación, ya que el tipo de precio se aplica a un artículo de producto que no es una matriz de datos.

Puede familiarizarse y elegir el filtro adecuado para el caso que necesita en el artículo Lenguaje de expresión. Considere un trigger que responderá a la transferencia de un pedido al estado "Completado" con una verificación de que todos los artículos del pedido tienen el estado "Vendido" y envíe una carta al cliente solicitando una revocación.

Especifiquemos el siguiente código en el código de activación:

conjunto de cambios.hasChangedField("status") and conjunto de cambios.newValue("status").code == "complete" and order.availableOrderProducts | every(item =>item.status.code == "saled")

Este código usa el filtro every, que permitirá que el trigger se active solo si todos los elementos de la matriz satisfacen la condición especificada entre paréntesis.

Considere un caso desencadenante popular que verifica que un producto de una lista específica de productos se agrega al pedido y establece una tarea para que el gerente responsable agregue un regalo al pedido.

Creemos un trigger con el siguiente código:

conjunto de cambios.hasChangedField("order_product") and conjunto de cambios.newValue("order_product") and order.availableOrderProducts | contains (item =>item.offer.id in ["1","2","3"])

Nota

Los ID de las ofertas comerciales se pueden ver en el catálogo de productos ICML.

Este trigger usó el filtro contiene, que devolverá una verificación exitosa si las condiciones especificadas en los corchetes del filtro se satisfacen en el pedido.

Hay un filtro de reducción en pipeLang que puede agregar los elementos requeridos en una matriz y devolver un resultado agregado.

Considere un trigger que resuma el valor de las dimensiones del producto de las propiedades adicionales del producto que se ingresaron en el catálogo ICML y escriba el resultado resultante en los campos de dimensiones correspondientes en el pedido en el momento de agregar nuevos productos al pedido o eliminarlos.

Nota

Con la ayuda del filtro de reducción, el trigger podrá realizar una acción matemática solo con propiedades adicionales sin procesamiento especial, es decir, las agregadas a través de la etiqueta param.

Agreguemos el siguiente código al trigger:

(conjunto de cambios.hasChangedField("order_product") and conjunto de cambios.getNewValue("order_product")) or (conjunto de cambios.hasChangedField("order_product") and conjunto de cambios.getOldValue("order_product")) 

En la acción del trigger, seleccionamos el cambio en el campo "Altura", en la expresión indicamos:

order.availableOrderProducts | reduce( (sum, x) =>sum + x.offer.properties.height * x.quantity 

Este código funcionará para todos los productos del pedido y resumirá el valor de sus propiedades adicionales con el código simbólico de altura. Usando un código similar, puede aplicar este caso a otras dimensiones, campos "Ancho" y "Largo" cambiando solo el código simbólico de la propiedad adicional por el apropiado.

Casi todas las tiendas online mantienen existencias de productos de sistemas de almacén especializados, y la descarga o carga de sobras puede ocurrir en el caso de transferir el pedido a un cierto estado, para excluir situaciones en las que el gerente se olvida de reservar el producto en el pedido y la transfiere al estado de envío, crearemos una validación, que se activará al cambiar el estado del pedido, verificando la matriz con la composición de los productos para detectar la presencia de una matriz no vacía con paquetes en ella:

conjunto de cambios.hasChangedField("status") and conjunto de cambios.newValue("status").code == "send-to-assembling" and not order.availableOrderProducts | every (item =>item.packs | contains (pack =>pack))

Para crear una condición para aplicar un tipo de precio, no siempre es necesario utilizar "pipe" filtros, porque el tipo de precio se aplica a un artículo básico y, por lo tanto, no es una matriz. Generemos un código que aplicará el tipo de precio que necesitamos si el comprador compra 10 o más piezas de la misma posición:

item != null and item.quantity >= 10
Gracias por tus comentarios.
¿Te resultó útil este artículo
No
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Si
Artículo anterior
¿Cómo configuro una cadena de triggeres?
Trigger chain - una secuencia de comunicaciones que tienen como objetivo informar automáticamente al cliente sobre el progreso en el trabajo con el pedido y la notificación oportuna de su estado o etapa de procesamiento. En este artículo, enseñaremos un ejemplo de cómo informar cuando se trabaja con la entrega.
Artículo siguiente
Características de la formación de la validación
La validación está diseñada para crear verificaciones adicionales para los cambios de campo que el usuario implementa en el sistema.