В модуле "Процессы" в SuiteCRM 7.3.1 (а возможно и в более поздних) если в блоке условий (CONDITIONS) одним из условий указать изменение того или иного поля, то это условие не срабатывает:
При детальном разборе выяснилось, что модуль Процессы (AOW_WorkFlow) срабатывает как "after_save", то есть уже ПОСЛЕ того, как контролируемая запись будет сохранена с новыми значениями:
В тоже время в месте, где идет проверка того, что поле объекта во время сохранения поменяло своё значение, происходит сравнение текущего значения поля ПОСЛЕ сохранения с значением, указанным в fetched_row (это функция check_valid_bean в файле modules/AOW_WorkFlow/AOW_WorkFlow.php):
Массив fetched_row конечно очень классный и полезный чтобы понять какое занчение имело то или иное поле до сохранения! Но он содержит предыдущие значения ДО момента сохранения записи. После сохранения все данные в этом массиве затираются на новые, актуальные для текущего, уже сохраненного, объекта. По этому ПОСЛЕ сохранения записи сравнивать текущие значения полей объекта с их значениями в fetched_row лишено смысла: они все будут одинаковыми.
Таким образом чтобы решить эту проблему нам надо всеже найти значение поля ДО сохранения. Я решил просто в объект ввести еще один массив, аналогичный fetched_row, но не перезаписывать его во время записи объекта.
В data/SugarBean.php добавляем новую переменную fetched_row_before_save:
и определяем эту переменную в функции save() как раз перед тем местом, где оригинальный fetched_row "теряет" необходимые нам значения полей:
Ну а теперь мы можем везде в системе использовать fetched_row_before_save вместо fetched_row, где необходимо определить изменения, произошедшие в полях уже ПОСЛЕ момента сохранения записи. В частности в нашем рассматриваемом случае будет:
Теперь модуль Процессы корректно отрабатывает условие любого изменения значения того или иного поля!
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign In Now