]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Сортировка числа вниз
authorAlexander Smirnov <fredeom@mail.ru>
Fri, 13 Dec 2024 14:55:24 +0000 (17:55 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Fri, 13 Dec 2024 14:55:24 +0000 (17:55 +0300)
erp24/controllers/ShiftTransferController.php

index 3d27fd4ce72c5d45bf47e6fecf16c25150dfcf72..4c1e8b969c156b69e1792da0c0ec534de87e4a7e 100644 (file)
@@ -3,6 +3,7 @@
 namespace app\controllers;
 
 use Yii;
+use yii\db\Expression;
 use yii\helpers\ArrayHelper;
 use yii\helpers\Json;
 use yii\web\Controller;
@@ -64,9 +65,21 @@ class ShiftTransferController extends 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 = [];