@redesupar

Как заменить выбор максимального количества товара в битриксе?

Здравствуйте, Решение Аспро-Максимум, такой вопрос.
Суть такова, есть одна база в которой идут товары поштучно(я их поменять не могу) скажем 5000 товаров и есть свойство сколько штук в 1 упаковке, скажем 50 штук
и мне надо ограничить максимум до 100 товаров чтобы могли покупать именно этого товара, а т.к. количество попадает сразу 5000, то люди могут оформить 5000 упаковок, а по факту есть только 50 штук упаковок

На детальной странице товара я решил сделать так))) работает
<? $tovar1 = $arResult["PROPERTIES"]["KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA"]["VALUE"];
   $str = preg_replace("/[^0-9]/", '', $tovar1);
   $delenie = $arResult['CATALOG_QUANTITY'];
   $finish = (int)($delenie / $str);
 
?>

<script>
    var username = "<?php echo $finish ?>";
$('.plus').attr('data-max', '<?php echo $finish ?>');
</script>


Как установить другое значение доступного количества товара в корзине? такой маневр уже не получается sale.basket.basket

<td class="basket-items-list-item-amount">
            <div class="basket-item-block-amount{{#NOT_AVAILABLE}} disabled{{/NOT_AVAILABLE}}"
               data-entity="basket-item-quantity-block">
               <span class="basket-item-amount-btn-minus" data-entity="basket-item-quantity-minus"></span>
               <div class="basket-item-amount-filed-block">
                  <input style="display:none" type="text" class="basket-item-amount-filed" value="{{QUANTITY}}"
                     {{#NOT_AVAILABLE}} disabled="disabled"{{/NOT_AVAILABLE}}
                     data-value="{{QUANTITY}}" data-entity="basket-item-quantity-field"
                     id="basket-item-quantity-{{ID}}">

               </div>
   <span class="basket-item-amount-btn-plus" data-entity="basket-item-quantity-plus"></span> 

               {{#SHOW_LOADING}}
                  <div class="basket-items-list-item-overlay"></div>
               {{/SHOW_LOADING}}
            </div>
         </td>


Решил сделать через коэф ед измерения, поставил обработчик в init.php но почему то не летит

<?

	AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "OnAfterIBlockElementUpdateHandler");
	function OnAfterIBlockElementUpdateHandler(&$arFields)
{
Cmodule::IncludeModule('iblock');
Cmodule::IncludeModule('catalog');
$iblockId = 18;
$updateElements = CIBlockElement::GetList(
   Array("ID" => "ASC"),
   Array("IBLOCK_ID" => $iblockId),
   false,
   false,
   Array(
       'ID',
       'KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA'
   )
);
while ($arFields = $updateElements->GetNext()) {
 
   $coeff = $arFields['KOMPLEKTATSIYA_PERVICHNAYA_UPAKOVKA'];
   $newcoef = preg_replace("/[^0-9]/", '', $coeff);

   
   $curElementRatio = CCatalogMeasureRatio::getList(
         Array(),
         array('IBLOCK_ID' => $iblockId, 'PRODUCT_ID' => $arFields['ID']),
         false, false);
         while ($arRatio = $curElementRatio->GetNext()) {
              $ratioId = $arRatio['ID'];
         }

   CCatalogMeasureRatio::update($ratioId, Array(
          'PRODUCT_ID' => $arFields['ID'],
          'RATIO' => $newcoef)
    );
}
}
?>


Выдает такую ошибку

[TypeError] 
Argument 1 passed to Bitrix\Catalog\Config\State::handlerAfterIblockElementUpdate() must be of the type array, bool given, called in /var/www/html/bitrix/modules/main/classes/general/module.php on line 480 (0)
/var/www/html/bitrix/modules/catalog/lib/config/state.php:243
#0: Bitrix\Catalog\Config\State::handlerAfterIblockElementUpdate
	/var/www/html/bitrix/modules/main/classes/general/module.php:480
#1: ExecuteModuleEventEx
	/var/www/html/bitrix/modules/iblock/classes/mysql/iblockelement.php:1757
#2: CIBlockElement->Update
	/var/www/html/bitrix/modules/iblock/admin/iblock_element_edit.php:1047
#3: require(string)
	/var/www/html/bitrix/admin/iblock_element_edit.php:1
  • Вопрос задан
  • 332 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы