Сейчас "Функции скриптов поведения" группируются в пачки, которые называются "Скрипт поведения". У меня по факту есть одна большая пачка "Общие", в которой 95% скриптов, плюс пара специальных групп, в которых 1-2 скрипта. Плюс одна группа "Закрытые договоры", которая вешается периодически скриптом на договоры, закрытые датой: например, чтобы отслеживать платежи, которые приходят на закрытые датой договоры или выполнять некоторые скрипты из группы "общие", которые также должны выполняться и на закрытых датой (при создании счёта делать что-нибудь, например - счёт создаётся иногда уже после закрытия договора датой). Но даже тогда есть временное окно, когда договор датой уже закрылся, а группу "Закрытые договоры" ещё не навесили.
Я думаю, у многих так же: большая часть скриптов должна выполняться всегда на всех договорах.
Итого, есть 2 проблемы с этой логикой: - Когда договор закрывается датой, скрипты перестают выполняться, т.к. все группы скриптов тоже закрываются датой. Если договор закрыли по ошибке и потом открыли руками, то могут забыть вместе с тарифами, логинами и абонками открыть также и группу скриптов. - При создании договора события могут произойти до того, как на него добавится группа (из шаблона или после переоформления). Сейчас столкнулся с таким: пишу событие "после переоформления" - работает на старом, должно в коде скрипта выставить явно статус "активен" на новом (иначе со старого могут перейти статусы "закрыт" будущим числом, если делали обещаный платёж перед переоформлением). Я ожидаю, что на новом во время установки статуса первым скриптом сработает второй скрипт "Задание логики перетирания статусов", который оставит в живых куски других статусов в будущем, кроме "закрыт" (приостановление в будущем, например). Этот скрипт давно написан и успешно работает. Но тут он не отрабатывает, либо не всегда отрабатывает, т.к. видимо группа скриптов ещё не добавилась на договор или не закоммитилась в базу, или не дошла до slave-а, если она читается оттуда.
Итого, feature request: Сделайте, пожалуйста, дефолтную группу скриптов поведения договора (id=0 например), которые будут отрабатывать всегда на всех договорах, даже если у него нет групп скриптов поведения и даже если они закрыты датой.
|