Сергей Эсауленко

Переопределить единицу измерения Битрикс в момент обмена с 1С

Оглавление:

    Иногда требуется переназначать логику 


    //изменяем количество в Коэффициент единицы измерения: если стоит свойство
    $eventManager->addEventHandler("catalog", "\Bitrix\Catalog\MeasureRatio::OnBeforeUpdate", 'MeasureRatioCustom');
    //$eventManager->addEventHandler("catalog", "\Bitrix\Catalog\MeasureRatio::OnBeforeAdd", 'MeasureRatioCustom');


    function MeasureRatioCustom (\Bitrix\Main\Event $event) {
    $result = new \Bitrix\Main\Entity\EventResult;
    $fields = $event->getParameter("fields");


    //получаем свойства
    $props = [];
    \CIBlockElement::GetPropertyValuesArray($props, 37, ['ID' => $fields['PRODUCT_ID']], ['CODE' => ['KOLICHESTVO_SHT_V_KOROBKE']]);


    //обновляем количество
    if(!empty($props[$fields['PRODUCT_ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE'])){
    $result->modifyFields(array('RATIO' => $props[$fields['PRODUCT_ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE']));
    }

    return $result;
    }


    /** В моммент выгрузки данные с 1С подменяем единицу измерения при покупки **/
    $eventManager->addEventHandler("catalog", "\Bitrix\Catalog\Product::OnAfterUpdate", "ProductOnAfterUpdateCustom");
    function ProductOnAfterUpdateCustom(\Bitrix\Main\Event $event) {

    $primary = $event->getParameter("id");
    $fields = $event->getParameter("fields");


    $props = [];

    \CIBlockElement::GetPropertyValuesArray($props, $fields['IBLOCK_ID'], ['ID' => $primary['ID']], ['CODE' => ['KOLICHESTVO_SHT_V_KOROBKE']]);

    //Обновляем RATIO если количество указано в свойстве другое
    if($props[$primary['ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE']){

    $data = \Bitrix\Catalog\MeasureRatioTable::getList([
    'select' => array('ID', 'RATIO', 'PRODUCT_ID'),
    'filter' => array('=PRODUCT_ID' => $primary['ID'])
    ])->fetch();

    \Bitrix\Catalog\MeasureRatioTable::update(
    $data["ID"], [
    'PRODUCT_ID' => $primary['ID'],
    'RATIO' => $props[$primary['ID']]['KOLICHESTVO_SHT_V_KOROBKE']['VALUE'],
    ]
    );
    }
    }


    06.07.2021
    1C-Битрикс или Wordpress: какую CMS выбрать для лучшей работы сайта?