Files
bx.discount/lib/Handlers/ADiscount.php
T
2026-02-04 14:50:08 +03:00

114 lines
3.5 KiB
PHP

<?php
namespace Bx\Discount\Handlers;
use Bitrix\Main\Entity\Event;
use Bx\Discount\Tools;
class ADiscount
{
protected static array $lang = [
'EMPTY_PRODUCT_TYPE' => 'Не выбран тип визуального представления скидки на сайте'
];
public static function getLang($code)
{
return static::$lang[$code];
}
protected static function isValidData()
{
return isset($_POST['PRODUCT_TYPE']) && $_POST['PRODUCT_TYPE'] !== '0' && $_POST['PRODUCT_TYPE'] !== '';
}
protected static function updateAdditionalDiscountData($id)
{
$depsLoaded = \Bitrix\Main\Loader::includeModule('iblock');
if(!$depsLoaded) {
return;
}
$res_element = \CIBlockElement::GetList(
['SORT' => 'ASC'],
['IBLOCK_ID' => discountApp()->config('DISCOUNT_TYPE_IBLOCK_ID'), 'NAME' => $id],
false,
false,
['ID', 'NAME', 'PROPERTY_TYPE']
);
$res_element_count = $res_element->SelectedRowsCount();
if($res_element_count){
$obElement = $res_element->GetNext();
\CIBlockElement::SetPropertyValuesEx(
$obElement['ID'],
discountApp()->config('DISCOUNT_TYPE_IBLOCK_ID'),
[
'TYPE' => $_POST['PRODUCT_TYPE'],
'MIN_COUNT_PROD' => $_POST['MIN_COUNT_PROD']
]
);
} else {
$el = new \CIBlockElement();
$arTypeField = [
'IBLOCK_ID' => discountApp()->config('DISCOUNT_TYPE_IBLOCK_ID'),
'NAME' => $id,
'PROPERTY_VALUES' => [
'TYPE' => $_POST['PRODUCT_TYPE'],
'MIN_COUNT_PROD' => $_POST['MIN_COUNT_PROD'],
],
];
$el->Add($arTypeField);
}
}
protected static function addAdditionalDiscountData($id)
{
$depsLoaded = \Bitrix\Main\Loader::includeModule('iblock');
if(!$depsLoaded) {
return;
}
$el = new \CIBlockElement();
$arTypeField = [
'IBLOCK_ID' => discountApp()->config('DISCOUNT_TYPE_IBLOCK_ID'),
'NAME' => $id,
'PROPERTY_VALUES' => [
'TYPE' => $_POST['PRODUCT_TYPE'],
'MIN_COUNT_PROD' => $_POST['MIN_COUNT_PROD'],
],
];
$r = $el->Add($arTypeField);
}
/**
* Немного бреда с седых времен
* я хз что тут происходит
* коммент от старого разработчика: при поиске оптимальной цены на товар не учитываем скидки типа "От кол-ва"
* @see /local/php_interface/include/events.php [git history]
* @see BxDiscount [old functions]
*
* Желательно избавиться от функционала Q !!!
*
* @param $arResult
* @return void
*/
public static function onGetDiscountResult(&$arResult)
{
global $scriptType;
$counter = 1;
if($scriptType === 'XML_EXPORT'){
$counter = 0;
}
if(count($arResult) > $counter){
foreach($arResult as $key => $discount){
$discountViewType = Tools::getProductTypeArray($discount['ID']);
if($discountViewType['PRODUCT_TYPE'] === 'Q'){
unset($arResult[$key]);
}
}
}
}
}