/** * AJAX обработчик для получения вариантов цен */ public static function getPriceOptionsAction() { $productId = (int)$_REQUEST['product_id']; $siteId = $_REQUEST['site_id'] ?? SITE_ID; if (!$productId) { return ['error' => 'Product ID required']; } $options = []; // Получаем доступные типы цен для товара $dbPrices = CPrice::GetList( [], ['PRODUCT_ID' => $productId], false, false, ['ID', 'CATALOG_GROUP_ID', 'PRICE', 'CURRENCY'] ); while ($price = $dbPrices->Fetch()) { $priceTypeId = $price['CATALOG_GROUP_ID']; $warehouseId = self::getWarehouseByPriceType($priceTypeId, $siteId); if ($warehouseId > 0) { // Проверяем остатки на складе $storeInfo = CCatalogStoreProduct::GetList( [], ['PRODUCT_ID' => $productId, 'STORE_ID' => $warehouseId], false, false, ['AMOUNT'] ); if ($store = $storeInfo->Fetch()) { $amount = (float)$store['AMOUNT']; // Получаем название типа цены $priceTypeInfo = CCatalogGroup::GetByID($priceTypeId); $priceTypeName = $priceTypeInfo['NAME'] ?? 'Тип цены #' . $priceTypeId; // Получаем название склада $storeNameInfo = CCatalogStore::GetByID($warehouseId); $storeName = $storeNameInfo['TITLE'] ?? 'Склад #' . $warehouseId; $options[] = [ 'price_type_id' => $priceTypeId, 'price' => $price['PRICE'], 'currency' => $price['CURRENCY'], 'price_type_name' => $priceTypeName, 'warehouse_id' => $warehouseId, 'warehouse_name' => $storeName, 'amount' => $amount, 'formatted_price' => CCurrencyLang::CurrencyFormat($price['PRICE'], $price['CURRENCY']), 'formatted_amount' => number_format($amount, 0, '', ' ') ]; } } } return ['success' => true, 'options' => $options]; } /** * AJAX обработчик для изменения цены */ public static function changePriceAction() { $basketId = (int)$_REQUEST['basket_id']; $priceTypeId = (int)$_REQUEST['price_type_id']; $siteId = $_REQUEST['site_id'] ?? SITE_ID; if (!$basketId || !$priceTypeId) { return ['error' => 'Basket ID and Price Type ID required']; } // Здесь будет реальная логика изменения цены // Пока заглушка для теста return [ 'success' => true, 'message' => 'Price changed successfully', 'new_price' => '1000', 'currency' => 'RUB' ]; }