В этой статье мы рассказали как держать менеджеров в “ежовых руковицах”, шутим не менеджеров. Сохраняйте, делитесь или ставьте нам плюсики, мы будем очень рады. Приятного чтения.
1. Запрет менять статус оплаты заказа
Условие:
changeSet.isUpdate() and changeSet.hasChangedField(‘payments.status’)
2. Дата доставки должна быть сегодняшней датой или позднее
Условие:
order.getDeliveryDate() < date(‘now 00:00:00’) and ( (changeSet.isCreate() and order.getDeliveryDate()) or (changeSet.isUpdate() and changeSet.hasChangedField(‘delivery_date’)) )
3. Отгрузку может выполнять только пользователь группы Логист
Примечание По умолчанию в системе нет группы Логист, но вы можете создавать нужные вам группы пользователей.
Условие:
changeSet.hasChangedField(‘shipped’) and not user().hasGroup(‘logist’)
4. Пользователь может менять только определенные поля
Условие:
changeSet.hasChangesExcluding([‘status’, ‘first_name’, ‘last_name’])
5. Менеджеру нельзя менять статус оплаты
Условие:
changeSet.hasChangedField(“payments.status”) and user().hasGroup(“manager”)
6. Нельзя сохранить заказ без указания способа оплаты
Условие:
(order.payments | length) < 1 and user().hasGroup(“manager”)
7. Сумма оплаты не совпадает с суммой заказа
Условие:
not (order.payments | reduce( (sum, x) => sum + x.amount ) == order.totalSumm) and user().hasGroup(“manager”)
8. Нельзя передавать на сборку неоплаченный заказ
Условие:
changeSet.hasChangedField(“status”) and changeSet.newValue(“status”).code == “assembly” and order.payments | contains(item => item.type.code == “bank-card” and not item.status.code == “paid”)
9. Нельзя передавать заказ на сборку, если не выбран способ доставки
Условие:
changeSet.hasChangedField(“status”) and changeSet.newValue(“status”).code == “assembly” and not order.deliveryType
10. Запрет сохранения без указания комментария к статусу
Условие:
order.status.code == “cancel” and not order.statusComment
Если же вам лень делать самим или у вас возникают трудности, то можете написать нам и мы сделаем в лучшем виде.