namespace app\controllers;
use Yii;
+use yii\db\Expression;
use yii\helpers\ArrayHelper;
use yii\helpers\Json;
use yii\web\Controller;
public function buildLoadDataShiftRemains($groups, $storeGuid, $normal = true)
{
$productsClass = ProductsClass::find()->select(['category_id'])->where(['tip' => $groups])->column();
- $products = ArrayHelper::map(Products1c::find()->alias('p')->select(['id', 'name'])->leftJoin('products_class pc', 'pc.category_id = p.parent_id')
- ->where(['parent_id' => $productsClass])->orderBy(['(CASE WHEN pc.tip = \'other_items\' THEN 1 ELSE 0 END)' => SORT_DESC
- , 'name' => SORT_ASC])->all(), 'id', 'name');
+ $products = ArrayHelper::map(
+ Products1c::find()->alias('p')
+ ->select(['p.id', 'p.name'])
+ ->leftJoin('products_class pc', 'pc.category_id = p.parent_id')
+ ->where(['parent_id' => $productsClass])
+ ->orderBy([
+ // Сортировка по "tip", где значения 'other_items' будут в начале
+ '(CASE WHEN pc.tip = \'other_items\' THEN 1 ELSE 0 END)' => SORT_DESC,
+ // Сортировка по имени: сначала буквы (регулярное выражение для проверки начала на букву)
+ '(CASE WHEN p.name ~ \'^[0-9]\' THEN 0 ELSE 1 END)' => SORT_DESC,
+ // Обычная алфавитная сортировка
+ 'p.name' => SORT_ASC,
+ ])
+ ->all(), 'id', 'name'
+ );
$balance = ArrayHelper::map(Balances::find()->select(['quantity', 'product_id'])
->where(['store_id' => $storeGuid])->all(), 'product_id', 'quantity');
$productGuids = [];