- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/discountcouponsmanagerbase.php
- Класс: BitrixSaleDiscountCouponsManagerBase
- Вызов: DiscountCouponsManagerBase::saveApplied
static function saveApplied(): MainResult
{
$commonResult = new MainResult();
if (
self::$useMode == self::MODE_SYSTEM
|| !self::isEntered()
|| !self::$allowedSave
)
{
return $commonResult;
}
$result = array();
$currentTime = new MainTypeDateTime();
$userId = self::getUserId();
$appliedCoupons = self::filterCoupons(
array('STATUS' => self::STATUS_APPLYED, 'MODULE_ID' => 'sale', 'SAVED' => 'N'),
true
);
if (!empty($appliedCoupons))
{
$result['sale'] = array(
'COUPONS' => $appliedCoupons
);
$saveResult = InternalsDiscountCouponTable::saveApplied($appliedCoupons, $userId, $currentTime);
if ($saveResult === false)
{
$result['sale']['ERROR'] = true;
}
else
{
if ($saveResult['STATUS'])
{
$result['sale']['DEACTIVATE'] = $saveResult['DEACTIVATE'];
$result['sale']['LIMITED'] = $saveResult['LIMITED'];
$result['sale']['INCREMENT'] = $saveResult['INCREMENT'];
self::eraseAppliedCoupons($result['sale']);
}
else
{
$commonResult->addError(new MainError(
Loc::getMessage('BX_SALE_DCM_ERR_SAVE_APPLIED'),
'sale',
$saveResult['ERROR']
));
return $commonResult;
}
}
}
if (!self::$onlySaleDiscount && !empty(self::$couponProviders))
{
foreach (self::$couponProviders as $provider)
{
$appliedCoupons = self::filterCoupons(
array('STATUS' => self::STATUS_APPLYED, 'MODULE_ID' => $provider['module'], 'SAVED' => 'N'),
true
);
if (empty($appliedCoupons))
continue;
$result[$provider['module']] = array(
'COUPONS' => $appliedCoupons
);
$saveResult = call_user_func_array(
$provider['saveApplied'],
array(
$appliedCoupons,
$userId,
$currentTime
)
);
if (empty($saveResult) || !is_array($saveResult))
{
$result[$provider['module']]['ERROR'] = true;
}
else
{
if (!isset($saveResult['STATUS']) || $saveResult['STATUS'])
{
$result[$provider['module']]['DEACTIVATE'] = (isset($saveResult['DEACTIVATE']) ? $saveResult['DEACTIVATE'] : array());
$result[$provider['module']]['LIMITED'] = (isset($saveResult['LIMITED']) ? $saveResult['LIMITED'] : array());
$result[$provider['module']]['INCREMENT'] = (isset($saveResult['INCREMENT']) ? $saveResult['INCREMENT'] : array());
self::eraseAppliedCoupons($result[$provider['module']]);
}
else
{
$commonResult->addError(new MainError(
Loc::getMessage('BX_SALE_DCM_ERR_SAVE_APPLIED'),
$provider['module'],
$saveResult['ERROR']
));
return $commonResult;
}
}
}
}
self::saveToStorage();
self::$allowedSave = false;
$event = new MainEvent('sale', self::EVENT_ON_SAVE_APPLIED_COUPONS, $result);
$event->send();
return $commonResult;
}