]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
добавил метод
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 3 Sep 2024 15:06:32 +0000 (18:06 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 3 Sep 2024 15:06:32 +0000 (18:06 +0300)
erp24/services/MotivationService.php

index 5186306a9f39a4d4158191be7810e18a268163a7..b67217a1887741c1d2d9522510b817ce2103f6f5 100644 (file)
@@ -1389,13 +1389,55 @@ class MotivationService
         $endDate = date('Y-m-d', strtotime($endDate));
 
 
-        $sum = (float)SelfCostProduct::find()
-            ->where(['store_id' => $storeId])
+        $salesRecords = Sales::find()
+            ->select(['id', 'date']) // Выбираем id и дату чека
+            ->where(['store_id' => $storeId, 'operation' => 'Продажа'])
             ->andWhere(['>=', 'date', $startDate])
             ->andWhere(['<=', 'date', $endDate])
-            ->sum('price');
+            ->asArray()
+            ->all();
+
+        // Если нет подходящих чеков, сразу возвращаем 0
+        if (empty($salesRecords)) {
+            return 0.0;
+        }
+
+        $totalSum = 0.0;
+
+        foreach ($salesRecords as $salesRecord) {
+            $salesId = $salesRecord['id'];
+            $saleDate = date('Y-m-d', strtotime($salesRecord['date']));
+            Yii::info("Чек " . $salesRecord['id']);
+            // Получить список продуктов и их количество для текущего чека
+            $salesProducts = SalesProducts::find()
+                ->select(['product_id', 'quantity'])
+                ->where(['check_id' => $salesId])
+                ->asArray()
+                ->all();
+
+            // Для каждого продукта рассчитать себестоимость и суммировать
+            foreach ($salesProducts as $salesProduct) {
+                $productId = $salesProduct['product_id'];
+                $quantity = (float)$salesProduct['quantity'];
+
+                // Найти себестоимость продукта в таблице SelfCostProduct
+                $selfCost = SelfCostProduct::find()
+                    ->select('price')
+                    ->where(['store_id' => $storeId, 'product_guid' => $productId])
+                    ->andWhere(['date' => $saleDate]) // Проверяем себестоимость на дату продажи
+                    ->scalar(); // Получаем цену
+
+                // Если себестоимость не найдена, пропускаем этот продукт
+                if ($selfCost === null) {
+                    continue;
+                }
 
-        return $sum;
+                // Умножаем себестоимость на количество и добавляем к общей сумме
+                $totalSum += $selfCost * $quantity;
+            }
+        }
+        Yii::info("Стоимость товара " . $totalSum);
+        return $totalSum;
     }
 
     /**