$writeOffs = $writeOffsForecast[$productId][$week]['writeOffs'];
$details['writeOffs']['quantity'] = $writeOffs;
$total += is_array($writeOffs) ? array_sum($writeOffs) : (float)$writeOffs;
+ } else {
+ $details['writeOffs']['quantity'] = 0;
}
foreach (['offline', 'online', 'marketplace'] as $type) {
'category' => $cat,
'subcategory' => $sub,
'species' => $spec,
- 'percent' => $percent,
- 'monthly_goal' => $monthlyGoal,
+ 'percent' => $percent ?? 0,
+ 'monthly_goal' => $monthlyGoal ?? 0,
'weekly_goal' => $weeklyGoal,
];
}
$guid = $componentDataRecord['component_guid'];
$nomenclatureData = $nomenclatures[$guid] ?? null;
$productId = $nomenclatureData?->id;
- $price = 0;
+ $price = null;
$dailyPrices = [];
foreach ($pricesByProduct[$productId] ?? [] as $priceRecordForProduct) {
if (defined($heliumConstant) && $productId == constant($heliumConstant)) {
}
if (!empty($dailyPrices)) {
$price = min($dailyPrices);
- } else {
+ }
+ if ($price === null) {
$price = 0.0;
}
$cost = $componentDataRecord['quantity'] * $price * $componentDataRecord['quantity_product'];
$salesShares[$storeId]['marketplace'] = round($market / $total, 4);
}
}
+
foreach ($weeklyForecasts as $item) {
+ $groupsArr = explode('_', (string)$item['matrix_group']);
+ $baseGroup = $groupsArr[0];
$storeItem = (int)$item['store_id'];
$guid = (string)$item['product_guid'];
- $group = (string)$item['matrix_group'];
+ $group = $baseGroup;
$type = (string)$item['type'];
$forecastValue = (float)$item['week_forecast'];
if (isset($salesShares[$storeItem]) && isset($salesShares[$storeItem][$type])) {
$grouped[$storeItem][$type]['share'] = $salesShares[$storeItem][$type];
}
- $grouped[$storeItem][$guid][$type][$group] = $forecastValue;
+ $grouped[$storeItem][$guid][$type][$group] = ($grouped[$storeItem][$guid][$type][$group] ?? 0) + $forecastValue;
}
return $grouped;