]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Метод недельных прогнозов по букетам и группам матриц
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 16 Jun 2025 10:19:36 +0000 (13:19 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 16 Jun 2025 10:19:36 +0000 (13:19 +0300)
erp24/controllers/AutoPlannogrammaController.php

index 16f3ee0966ecca14814147e5b180608fd95108d7..4a0421fdca12b3137ef488d5f59b9e6b757ca24e 100644 (file)
@@ -1750,30 +1750,46 @@ class AutoPlannogrammaController extends BaseController
         Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
 
         $request = Yii::$app->request;
-        $storeId = $request->get('storeId');
-        $month   = $request->get('month');
-        $year    = $request->get('year');
-        $week    = $request->get('week');
+        $storeIdRequest = $request->get('storeId');
+        $monthRequest   = $request->get('month');
+        $yearRequest    = $request->get('year');
+        $weekRequest    = $request->get('week');
 
-        if (!$month || !$year || $week === null) {
+        if (!$monthRequest || !$yearRequest || $weekRequest === null) {
             return ['success' => false, 'message' => 'Нет параметров'];
         }
 
         $service = new AutoPlannogrammaService();
-        $result = $service->getWeeklyBouquetProductsForecast($month, $year, $storeId);
+        $result = $service->getWeeklyBouquetProductsForecast($monthRequest, $yearRequest, $storeIdRequest);
 
         if (!is_array($result)) {
             return ['success' => false, 'message' => 'Ошибка структуры данных'];
         }
 
-        $filtered = array_filter($result, function ($item) use ($week) {
-            return (int)$item['week'] === (int)$week;
-        });
+        $grouped = [];
+
+        foreach ($result as $item) {
+            $weekItem = (int) $item['week'];
+            $storeItem = (int) $item['store_id'];
+            $guid = (string) $item['product_guid'];
+            $group = (string) $item['matrix_group'];
+            $forecastValue = (float) $item['week_forecast'];
+
+            $grouped[$weekItem][$storeItem][$guid][$group] = $forecastValue;
+        }
+
+
+        if ($weekRequest !== null) {
+            $week = (int) $weekRequest;
+            $grouped = isset($grouped[$week]) ? [$week => $grouped[$week]] : [];
+        }
 
         return [
             'success' => true,
-            'data' => array_values($filtered),
+            'data' => $grouped,
         ];
+
+
     }