Bläddra i källkod

Отображение статуса и "С документами" на русском языке в таблице заказов запчастей

- Добавлены accessors в SparePartOrdersView для вывода статуса (status_name) и "С документами" (with_documents_text) на русском языке
- Обновлены заголовки колонок в контроллере SparePartOrderController
- Переопределены фильтры для статуса и "С документами" с правильными русскими значениями
- Обновлена обработка фильтров для корректной работы с новыми значениями

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Alexander Musikhin 2 dagar sedan
förälder
incheckning
ec21e1af1a
2 ändrade filer med 47 tillägg och 5 borttagningar
  1. 25 5
      app/Http/Controllers/SparePartOrderController.php
  2. 22 0
      app/Models/SparePartOrdersView.php

+ 25 - 5
app/Http/Controllers/SparePartOrderController.php

@@ -22,10 +22,10 @@ class SparePartOrderController extends Controller
             'year' => 'Год',
             'article' => 'Артикул',
             'source_text' => 'Источник заказа',
-            'status' => 'Статус',
+            'status_name' => 'Статус',
             'ordered_quantity' => 'Заказано',
             'available_qty' => 'Остаток',
-            'with_documents' => 'С документами',
+            'with_documents_text' => 'С документами',
             'note' => 'Примечание',
             'user_name' => 'Менеджер',
             'created_at' => 'Дата создания',
@@ -49,10 +49,25 @@ class SparePartOrderController extends Controller
         $model = new SparePartOrdersView();
 
         // Фильтры
-        $this->createFilters($model, 'year', 'article', 'status', 'with_documents');
+        $this->createFilters($model, 'year', 'article');
         $this->createRangeFilters($model, 'ordered_quantity', 'available_qty');
         $this->createDateFilters($model, 'created_at');
 
+        // Фильтр статуса с русскими названиями
+        $this->data['filters']['status'] = [
+            'title' => 'Статус',
+            'values' => SparePartOrdersView::STATUS_NAMES
+        ];
+
+        // Фильтр "С документами"
+        $this->data['filters']['with_documents'] = [
+            'title' => 'С документами',
+            'values' => [
+                1 => 'Да',
+                0 => 'Нет',
+            ]
+        ];
+
         // Запрос
         $q = $model::query();
 
@@ -66,8 +81,13 @@ class SparePartOrderController extends Controller
         }
 
         if ($request->has('with_documents')) {
-            $withDocs = filter_var($request->get('with_documents'), FILTER_VALIDATE_BOOLEAN);
-            $q->where('with_documents', $withDocs);
+            $withDocsValue = $request->get('with_documents');
+            // Преобразуем значение в boolean
+            if ($withDocsValue === 'Да' || $withDocsValue === '1') {
+                $q->where('with_documents', true);
+            } elseif ($withDocsValue === 'Нет' || $withDocsValue === '0') {
+                $q->where('with_documents', false);
+            }
         }
 
         if ($request->has('status')) {

+ 22 - 0
app/Models/SparePartOrdersView.php

@@ -12,6 +12,12 @@ class SparePartOrdersView extends Model
 
     const DEFAULT_SORT_BY = 'created_at';
 
+    const STATUS_NAMES = [
+        'ordered' => 'Заказано',
+        'in_stock' => 'На складе',
+        'shipped' => 'Отгружено',
+    ];
+
     protected $casts = [
         'with_documents' => 'boolean',
         'ordered_quantity' => 'integer',
@@ -19,6 +25,22 @@ class SparePartOrdersView extends Model
         'year' => 'integer',
     ];
 
+    /**
+     * Статус на русском языке
+     */
+    public function getStatusNameAttribute(): string
+    {
+        return self::STATUS_NAMES[$this->status] ?? $this->status;
+    }
+
+    /**
+     * С документами - да/нет
+     */
+    public function getWithDocumentsTextAttribute(): string
+    {
+        return $this->with_documents ? 'Да' : 'Нет';
+    }
+
     /**
      * @deprecated Используйте available_qty
      */