114 lines
3.5 KiB
PHP
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]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |