Возможно ли в модкс автоматически в админке считать стоимость

Вопрос такой, возможно ли считать стоимость товара указывая два параметра, стран цена и скидка на товар, поле цена должно заполняться автоматически по формуле Старая цена — скидка в процентах
Вячеслав Варов
16 ноября 2022, 08:32
modx.pro
125
0

Комментарии: 5

Роман
16 ноября 2022, 08:51
+1
Нужно создать плагин, повесить на событие beforeSaveProduct
И что-то в этом роде написать:
if ($modx->event->name != 'beforeSaveProduct') {return false;}
if ($resource->get('class_key') == 'msProduct') {
	$old_price = $resource->get('old_price');
	$sale = $resource->get('sale');
	$resource->set('price', $old_price * (100 - $sale) / 100);
}
    Константин Ильин
    16 ноября 2022, 12:03
    0
    Что-то я впервые вижу событие beforeSaveProduct, вроде такого нет.

    Должен подойти OnDocFormSave
    <?
    if ($mode != 'new' ) { // тут уже сами смотрите, можно убрать это условие
        
        $id = $resource->get('id');
        if($resource->get('class_key') == 'msProduct'){
            /* код */
        }
    
    }
      Роман
      16 ноября 2022, 13:39
      +1
      Да, не прав, OnDocFormSave
      if ($modx->event->name != 'OnDocFormSave') {return false;}
        Вячеслав Варов
        16 ноября 2022, 14:22
        0
        Да таким событием получилось сделать, спасибо!
      Вячеслав Варов
      16 ноября 2022, 14:23
      0
      <?php
      switch($modx->event->name) { 
          case 'OnDocFormSave':
          if ($resource->get('class_key') == 'msProduct') {
              $template = $resource->get('template'); {
                  if ($template == 15) {
                      $old_price = $resource->get('old_price');
      	            $sale_size = $resource->get('sale_size');
      	            $resource->set('price', $old_price * (100 - $sale_size) / 100);
      	            $resource->save();
                  }
              }
          }
          break;
      }
      поле sale_size добавил в товар через плагин minishop2
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5