]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-413 Обработка ОС Планограмма (месяц)
authormarina <m.zozirova@gmail.com>
Tue, 6 May 2025 11:17:37 +0000 (14:17 +0300)
committermarina <m.zozirova@gmail.com>
Tue, 6 May 2025 11:17:37 +0000 (14:17 +0300)
erp24/controllers/AutoPlannogrammaController.php

index e0a23811f7de9d6a27c4f3b5f564a7cf793687a3..0f5d6dee588b4623d1f4ab4c15ac70f05ffd5c95 100644 (file)
@@ -218,33 +218,53 @@ class AutoPlannogrammaController extends BaseController
             'plan_date' => $request->get('plan_date'),
             'type' => $request->get('type'),
         ];
-
+//var_dump($filters);die();
         $dataProvider = new ArrayDataProvider([
             'allModels' => [],
             'pagination' => ['pageSize' => 100],
         ]);
 
-
         if (!empty($filters['plan_date'])) {
             $service = new AutoPlannogrammaService();
 
             $data = $service->getMonthCategoryShareOrWriteOff($filters['plan_date'], $filters);
+            $flatData = [];
 
             foreach ($data as $storeId => $categories) {
                 foreach ($categories as $row) {
                     $flatData[] = [
-                        'store_id' => CityStore::findOne($storeId)->name ?? null,
-                        'category' => $row['category'],
-                        'total_sum' => $row['total_sum'],
-                        'share_of_total' => $row['share_of_total'],
+                        'store_id' => (string)$storeId, // фильтрация по ID, а не имени
+                        'store_name' => CityStore::findOne($storeId)->name ?? null,
+                        'category' => $row['category'] ?? null,
+                        'subcategory' => $row['subcategory'] ?? null,
+                        'product_name' => $row['product_name'] ?? null,
+                        'plan_date' => $filters['plan_date'], // или $row['plan_date'], если есть
+                        'type' => $row['type'] ?? null,
+                        'total_sum' => $row['total_sum'] ?? null,
+                        'share_of_total' => $row['share_of_total'] ?? null,
                     ];
                 }
             }
+
+            $flatData = array_filter($flatData, function ($row) use ($filters) {
+                foreach ($filters as $key => $value) {
+                    if (empty($value)) continue;
+                    if (!isset($row[$key])) continue;
+
+                    if (stripos((string)$row[$key], (string)$value) === false) {
+                        return false;
+                    }
+                }
+                return true;
+            });
+
+
             $dataProvider = new ArrayDataProvider([
-                'allModels' => $flatData,
+                'allModels' => array_values($flatData),
                 'pagination' => ['pageSize' => 100],
             ]);
         }
+
         return $this->render('1', [
             'dataProvider' => $dataProvider,
             'filters' => $filters,