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'])