From 53d6caea604eb57fd9db2b87cd8516a82286dbb0 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Fri, 13 Dec 2024 17:55:24 +0300 Subject: [PATCH] =?utf8?q?=D0=A1=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?utf8?q?=D0=BA=D0=B0=20=D1=87=D0=B8=D1=81=D0=BB=D0=B0=20=D0=B2=D0=BD?= =?utf8?q?=D0=B8=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/ShiftTransferController.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/erp24/controllers/ShiftTransferController.php b/erp24/controllers/ShiftTransferController.php index 3d27fd4c..4c1e8b96 100644 --- a/erp24/controllers/ShiftTransferController.php +++ b/erp24/controllers/ShiftTransferController.php @@ -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 = []; -- 2.39.5