'plan_date' => $request->get('plan_date'),
'type' => $request->get('type'),
];
-
+//var_dump($filters);die();
$dataProvider = new ArrayDataProvider([
'allModels' => [],
'pagination' => ['pageSize' => 100],
]);
-
if (!empty($filters['plan_date'])) {
$service = new AutoPlannogrammaService();
$data = $service->getMonthCategoryShareOrWriteOff($filters['plan_date'], $filters);
+ $flatData = [];
foreach ($data as $storeId => $categories) {
foreach ($categories as $row) {
$flatData[] = [
- 'store_id' => CityStore::findOne($storeId)->name ?? null,
- 'category' => $row['category'],
- 'total_sum' => $row['total_sum'],
- 'share_of_total' => $row['share_of_total'],
+ 'store_id' => (string)$storeId, // фильтрация по ID, а не имени
+ 'store_name' => CityStore::findOne($storeId)->name ?? null,
+ 'category' => $row['category'] ?? null,
+ 'subcategory' => $row['subcategory'] ?? null,
+ 'product_name' => $row['product_name'] ?? null,
+ 'plan_date' => $filters['plan_date'], // или $row['plan_date'], если есть
+ 'type' => $row['type'] ?? null,
+ 'total_sum' => $row['total_sum'] ?? null,
+ 'share_of_total' => $row['share_of_total'] ?? null,
];
}
}
+
+ $flatData = array_filter($flatData, function ($row) use ($filters) {
+ foreach ($filters as $key => $value) {
+ if (empty($value)) continue;
+ if (!isset($row[$key])) continue;
+
+ if (stripos((string)$row[$key], (string)$value) === false) {
+ return false;
+ }
+ }
+ return true;
+ });
+
+
$dataProvider = new ArrayDataProvider([
- 'allModels' => $flatData,
+ 'allModels' => array_values($flatData),
'pagination' => ['pageSize' => 100],
]);
}
+
return $this->render('1', [
'dataProvider' => $dataProvider,
'filters' => $filters,