$monthsList[$key] = $key;
}
- $result = [];
+ $monthResult = [];
$totals = [];
+ $weeksData = [];
+ $weeksShareResult = [];
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$filters = [];
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();
);
}
- $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,
/* @var $monthsList array */
/* @var $result array */
/* @var $totals array */
+/* @var $weeksData array */
+/* @var $weeksShareResult array */
?>
</tbody>
</table>
<?php endif; ?>
-
-
+ <?php if (!empty($weeksData)): ?>
+ <h2>Результаты по неделям</h2>
+ <?php foreach ($weeksData as $weekNum => $weekRows): ?>
+ <h3>Неделя <?= $weekNum ?></h3>
+ <?php if (empty($weekRows)): ?>
+ <p>Нет данных за эту неделю.</p>
+ <?php else: ?>
+ <table class="table table-striped table-bordered">
+ <thead>
+ <tr>
+ <th>Категория</th>
+ <th>Подкатегория</th>
+ <th>Вид товара</th>
+ <th>Сумма</th>
+ <th>Доля недели</th>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach ($weekRows as $row): ?>
+ <tr>
+ <td><?= Html::encode($row['category']) ?></td>
+ <td><?= Html::encode($row['subcategory']) ?></td>
+ <td><?= Html::encode($row['species']) ?></td>
+ <td><?= Yii::$app->formatter->asDecimal($row['total_sum'], 2) ?></td>
+ <td>
+ <?= isset($weeksShareResult[$weekNum])
+ ? Yii::$app->formatter->asPercent(
+ $weeksShareResult[$weekNum][$row['category']][$row['subcategory']][$row['species']],
+ 2
+ )
+ : '-' ?>
+ </td>
+ </tr>
+ <?php endforeach; ?>
+ </tbody>
+ </table>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ <?php endif; ?>
</div>