]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Уникальные товары и в алфавитном порядке
authorvladfo <fvv2011@gmail.com>
Fri, 11 Oct 2024 11:36:37 +0000 (14:36 +0300)
committervladfo <fvv2011@gmail.com>
Fri, 11 Oct 2024 11:36:37 +0000 (14:36 +0300)
erp24/actions/motivation/TestSelfCostAction.php
erp24/views/motivation/test-self-cost.php

index 4f8eaa171c80426ce3e14017b0c369c795112625..f88f442151eec82a511c259fb35c3cb042260ae2 100644 (file)
@@ -41,6 +41,7 @@ class TestSelfCostAction extends Action
         $data = [];
         $totalSum = 0.0;
         $totalProductsSum = 0.0;
+        $uniqueProductsData = [];
 
         if ($startDate && $endDate && $storeId) {
             $totalSum = MotivationService::getSelfCostSumByStore($startDate, $endDate, $storeId);
@@ -51,14 +52,42 @@ class TestSelfCostAction extends Action
 
             // Вычисляем сумму всех товаров
             foreach ($data as $item) {
-                $totalProductsSum += $item['price']*$item['quantity'];
+                $totalProductsSum += $item['price'] * $item['quantity'];
             }
+
+            // Группируем товары по ID и суммируем количества
+            $groupedProducts = [];
+            foreach ($data as $item) {
+                $productId = $item['product_id'];
+                if (!isset($groupedProducts[$productId])) {
+                    $groupedProducts[$productId] = [
+                        'product_id' => $productId,
+                        'product_name' => $item['product_name'],
+                        'price' => $item['price'],
+                        'quantity' => $item['quantity'],
+                    ];
+                } else {
+                    $groupedProducts[$productId]['quantity'] += $item['quantity'];
+                }
+            }
+
+            // Преобразуем сгруппированный массив в массив значений и сортируем по имени
+            $uniqueProductsData = array_values($groupedProducts);
+            usort($uniqueProductsData, function ($a, $b) {
+                return strcmp($a['product_name'], $b['product_name']);
+            });
         }
 
+        // Сортируем первую таблицу по имени продукта
+        usort($data, function ($a, $b) {
+            return strcmp($a['product_name'], $b['product_name']);
+        });
+
         return $this->controller->render('test-self-cost', [
             'storeList' => $storeList,
             'model' => $model,
             'data' => $data,
+            'uniqueProductsData' => $uniqueProductsData,
             'totalSum' => $totalSum,
             'totalProductsSum' => $totalProductsSum,
         ]);
index 39883d267d5dc6323a29ac6a7e38e460002ad407..0ba5d0d8b4c5c8ba6a4d6e80e554c83a26e47fa2 100644 (file)
@@ -7,6 +7,7 @@ use kartik\select2\Select2;
 /* @var $storeList array */
 /* @var $model \yii\base\DynamicModel */
 /* @var $data array */
+/* @var $uniqueProductsData array */
 /* @var $totalSum float */
 /* @var $totalProductsSum float */
 
@@ -39,7 +40,7 @@ $this->title = 'Себестоимость товаров по магазина
     </div>
 
     <?php if (!empty($data)): ?>
-        <h2>Результаты</h2>
+        <h2>Результаты (Полные данные)</h2>
         <table class="table table-bordered">
             <thead>
             <tr>
@@ -54,8 +55,7 @@ $this->title = 'Себестоимость товаров по магазина
             <tbody>
             <?php foreach ($data as $item): ?>
                 <tr>
-                    <td><?= Html::encode($item['product_id']) ?>
-                    </td>
+                    <td><?= Html::encode($item['product_id']) ?></td>
                     <td><?= Html::encode($item['check_id']) ?></td>
                     <td><?= Html::encode($item['product_name']) ?></td>
                     <td><?= Html::encode($item['price']) ?></td>
@@ -67,5 +67,27 @@ $this->title = 'Себестоимость товаров по магазина
         </table>
         <h3>Общая стоимость: <?= Html::encode($totalSum) ?></h3>
         <h3>Сумма всех товаров: <?= Html::encode($totalProductsSum) ?></h3>
+
+        <h2>Результаты (Уникальные товары)</h2>
+        <table class="table table-bordered">
+            <thead>
+            <tr>
+                <th>ID товара</th>
+                <th>Название</th>
+                <th>Цена</th>
+                <th>Общее кол-во</th>
+            </tr>
+            </thead>
+            <tbody>
+            <?php foreach ($uniqueProductsData as $item): ?>
+                <tr>
+                    <td><?= Html::encode($item['product_id']) ?></td>
+                    <td><?= Html::encode($item['product_name']) ?></td>
+                    <td><?= Html::encode($item['price']) ?></td>
+                    <td><?= Html::encode($item['quantity']) ?></td>
+                </tr>
+            <?php endforeach; ?>
+            </tbody>
+        </table>
     <?php endif; ?>
 </div>
\ No newline at end of file