Как сделать тревел-политику так, чтобы она фиксировалась только как код, но не как нарушение?

Проблема и решение

Предположим, у нас есть тревел-политика, которая всегда будет нарушена, например, такого вида:

 

Единственное правило в политике: при цене авиабилета более 1 рубля фиксируем нарушение и ставим код нарушения в заказ:

 

Рассмотрим классический сценарий применения такого правила:

При поиске авиабилетов все варианты будут с нарушением:

Также это видно при выборе пассажира:

Мы видим это нарушение в деталях заказа:

И также видим автоматически зафиксированный код нарушения политики в списке кодов:

Предположим, что для каких-то целей мы хотим фиксировать нарушение по какой-то тревел-политики только при помощи кода, таким образом, чтобы факт нарушения не фиксировался, а просто устанавливался код в заказе. Для этого в редакторе тревел-политики есть специальный флаг “Не фиксировать в качестве нарушения”:

В этом случае любое нарушение данной политики будет зафиксировано только при помощи кода.

Если мы по некоторым политикам хотим фиксировать нарушения классическим способом, а по некоторым - нет, мы должны завести несколько справочников кодов, а также использовать суперпозицию тревел-политик.

При выборе данной политики на поисковой форме:

Мы видим, что на списке вариантов перелета она не фиксируется, как нарушенная:

Также при переходе на следующий шаг не будет показано предупреждение при выборе пассажира:

В деталях заказа нарушение также не будет зафиксировано:

Тем не менее, на этапе установки кодов мы увидим наш код нарушения:

 

Служебная информация

Источник задачи: https://corteos.megaplan.ru/event/1026461/card/

Реализация: http://ci.corteos.ru:7990/projects/JAV/repos/javelinprojectv3/pull-requests/7978/overview