From: fomichev Date: Mon, 5 May 2025 13:15:31 +0000 (+0300) Subject: Вычисление доли недели для вида товара по списаниям X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=8e3761fb6d427feba025fa99a9ff55c4329d4ddc;p=erp24_rep%2Fyii-erp24%2F.git Вычисление доли недели для вида товара по списаниям --- diff --git a/erp24/controllers/AutoPlannogrammaController.php b/erp24/controllers/AutoPlannogrammaController.php index 4b95f02a..bf1d674a 100644 --- a/erp24/controllers/AutoPlannogrammaController.php +++ b/erp24/controllers/AutoPlannogrammaController.php @@ -233,8 +233,10 @@ class AutoPlannogrammaController extends BaseController $monthsList[$key] = $key; } - $result = []; + $monthResult = []; $totals = []; + $weeksData = []; + $weeksShareResult = []; if ($model->load(Yii::$app->request->post()) && $model->validate()) { $filters = []; @@ -244,8 +246,8 @@ class AutoPlannogrammaController extends BaseController list($m, $y) = explode('-', $model->month); - $dateFrom = sprintf('%04d-%02d-01', $y, $m); - $dateTo = date('Y-m-t', strtotime($dateFrom)); + $dateFrom = date("Y-m-d 00:00:00", strtotime(sprintf('%04d-%02d-01', $y, $m))); + $dateTo = date("Y-m-t 23:59:59", strtotime($dateFrom)); $service = new AutoPlannogrammaService(); @@ -259,18 +261,68 @@ class AutoPlannogrammaController extends BaseController ); } - $result = $service->getMonthSpeciesShareOrWriteOffDate( + $monthResult = $service->getMonthSpeciesShareOrWriteOffDate( $dateFrom, $dateTo, $filters, null, $model->type ); + $speciesMonthTotals = []; + foreach ($monthResult as $monthRow) { + $speciesMonthTotals[$monthRow['store_id']] + [$monthRow['category']] + [$monthRow['subcategory']] + [$monthRow['species']] = $monthRow['total_sum'] ; + } + + + foreach (range(1, 5) as $ind) { + $weekStart = date("Y-m-d 00:00:00", strtotime("+" . (($ind - 1) * 7) . ' days', strtotime($dateFrom))); + $weekEnd = date("Y-m-d 23:59:59", strtotime("+" . ($ind * 7 - 1) . ' days', strtotime($dateFrom))); + if ($weekEnd > $dateTo) { + $weekEnd = $dateTo; + } + if ($weekStart > $dateTo) { + continue; + } + $weekResult = $service->getMonthSpeciesShareOrWriteOffDate( + $weekStart, + $weekEnd, + $filters, + null, + $model->type + ); + $weeksData[$ind] = $weekResult; + if (!$weekResult) { + continue; + } + $weeksShareResult[$ind] = []; + foreach ($weekResult as $weekRow) { + $monthSum = $speciesMonthTotals + [$weekRow['store_id']] + [$weekRow['category']] + [$weekRow['subcategory']] + [$weekRow['species']] ?? null; + + if ($monthSum) { + $weeksShareResult[$ind] + [$weekRow['category']] + [$weekRow['subcategory']] + [$weekRow['species']] = $weekRow['total_sum'] / $monthSum; + } + + } + + } + } return $this->render('control-species', [ 'model' => $model, - 'result' => $result, + 'result' => $monthResult, + 'weeksData' => $weeksData, + 'weeksShareResult' => $weeksShareResult, 'totals' => $totals, 'storeList' => $storeList, 'monthsList' => $monthsList, diff --git a/erp24/views/auto-plannogramma/control-species.php b/erp24/views/auto-plannogramma/control-species.php index 7df8a61a..f3c2b4dd 100644 --- a/erp24/views/auto-plannogramma/control-species.php +++ b/erp24/views/auto-plannogramma/control-species.php @@ -13,6 +13,8 @@ use yii_app\records\Products1c; /* @var $monthsList array */ /* @var $result array */ /* @var $totals array */ +/* @var $weeksData array */ +/* @var $weeksShareResult array */ ?> @@ -88,6 +90,43 @@ use yii_app\records\Products1c; - - + +

Результаты по неделям

+ $weekRows): ?> +

Неделя

+ +

Нет данных за эту неделю.

+ + + + + + + + + + + + + + + + + + + + + + +
КатегорияПодкатегорияВид товараСуммаДоля недели
formatter->asDecimal($row['total_sum'], 2) ?> + formatter->asPercent( + $weeksShareResult[$weekNum][$row['category']][$row['subcategory']][$row['species']], + 2 + ) + : '-' ?> +
+ + +