Drupal 9 image field migration

Чорна п'ятниця/тиждень вже почався, промо буди підготовлені заздалегіть і вже достпуні на продакшені. Але функціонал коли декілька промо мають бути об'єднані не був протестований. 

Ми встановили 15% знижки на всі товари в магазині. Але деякі з товарів мають мати знижку у 30%. На в'ю модах товарів все працює корректно - ціни відображаються відносно налаштувань у commerce_promo модулі. Але коли користувач додає у корзину 1 товар з 15% знижкою а другий з 30%, то у результаті другий товар не має знижки взагалі! Налаштування сумісновті для основної знижки у 15% було встановлено опцією  "Not with any other promotions". І саме в ній була проблема.

Модуль Commerce promotion має безліч умов для налаштувань знижок. Окрім відстньої умови "Negotiation" (виключення). Мені невідомо чому такий простий функціонал не був включений у контрібний модуль. Але він дуже швидко виправляється за допомогою копіювання кондішна OrderItemProduct з модуля commerce_product в кастомний і зміни вертання результату методу evaluate() на протилежний.

 /**
  * {@inheritdoc}
  */
 public function evaluate(EntityInterface $entity) {
  // ...
   return !in_array($purchased_entity->getProductId(), $product_ids);
 }

Таким чином, товари які мають знижку у 30% потрбіно додати до умови "Negotiation products" у основній знижці.

І в результаті всі товари магазину будуть мати 15% знижки, в товари зі списку 30%.

https://gist.github.com/onesixromcom/72519841752b62ca176a3da405fa8aac