Características de la formación de la validación
Copiar enlace al artículo
Copiado

Validaciones están pensadas para crear verificaciones adicionales de los cambios que un usuario realiza en pedidos/clientes/clientes corporativos/tareas. Los cambios se verifican no solo en caso de edición de la ficha sino también en caso de cambios a través de acciones grupales.

La condición debe contener una expresión lógica. En caso de que sea verdadera, las acciones se cancelarán y el usuario recibirá una notificación del error.

En la condición se puede trabajar con tanto el objeto que está sujeto a la acción (es order,customer, customercorporate, task) como el objeto changeSet (tipo Change\EntityChangeSet) que contiene la información de los campos modificados.

changeSet.isUpdate() and changeSet.hasChangedField('payments.status')

En algunos casos, las validaciones requieren verificar ciertas propiedades del usuario que está realizando el cambio. Por ejemplo, verificar si el usuario pertenece a cierto grupo. Se puede obtener datos del usuario a través de la función user().

  • Prohibición de completar tareas sin rellenar el campo «Descripción»
changeSet.isUpdate()
and changeSet.hasChangedField("complete")
and changeSet.getNewValue("complete") == true
and task.commentary == null
  • Prohibición de crear tareas sin fecha de entrega
changeSet.isCreate() and task.getDatetime() == null
  • Está permitido solamente completar la tareas, edición está prohibida
changeSet.isUpdate()
and changeSet.hasChangesExcluding(["complete", "completed_at"])
  • Prohibición de cambiar el estado de pago del pedido.
changeSet.isUpdate() and changeSet.hasChangedField('payments.status')
  • La fecha de entrega debe ser hoy o más tarde
order.deliveryDate < date('now 00:00:00') and (
(changeSet.isCreate() and order.deliveryDate) or
(changeSet.isUpdate() and changeSet.hasChangedField('delivery_date'))
)
  • Solo el usuario del grupo Logist puede hacer el envío.

Nota

De forma predeterminada, no hay un grupo de Logist en el sistema, pero puede crear los grupos de usuarios que necesite.

changeSet.hasChangedField('shipped') and not user().hasGroup('logist')
  • El usuario puede cambiar solo ciertos campos
changeSet.hasChangesExcluding(['status', 'first_name', 'last_name'])
Gracias por tus comentarios.
¿Te resultó útil este artículo
No
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Si
Artículo anterior
Trabajar con productos en triggeres, validaciones y tipos de precio
El contenido del pedido es una matriz de datos, por lo tanto, el trabajo con él se realiza mediante filtros especiales creados en PipeLanguage. En este artículo analizaremos cómo trabajar con filtros en tipos de precio, triggeres y validación y en el contexto de productos.
Artículo siguiente
Comprobación y validación de triggeres
Si necesita comprobar un trigger o una validación para que funcione correctamente, puede utilizar el registro de acciones, que muestra cada trigger y ofrece una descripcion detallada si hay un error.