|
@@ -29,6 +29,7 @@ class ReportController extends Controller
|
|
|
{
|
|
{
|
|
|
$mountStatuses = [5, 7, 8, 9, 10];
|
|
$mountStatuses = [5, 7, 8, 9, 10];
|
|
|
$doneStatuses = [9, 10];
|
|
$doneStatuses = [9, 10];
|
|
|
|
|
+ $handedOverStatus = Order::STATUS_HANDED_OVER;
|
|
|
$objectTypes = ObjectType::query()->get()->pluck('name', 'id')->toArray();
|
|
$objectTypes = ObjectType::query()->get()->pluck('name', 'id')->toArray();
|
|
|
$this->data['objectTypes'] = $objectTypes;
|
|
$this->data['objectTypes'] = $objectTypes;
|
|
|
$user_ids = Order::query()->distinct()->get('user_id')->pluck('user_id')->toArray();
|
|
$user_ids = Order::query()->distinct()->get('user_id')->pluck('user_id')->toArray();
|
|
@@ -53,15 +54,9 @@ class ReportController extends Controller
|
|
|
$query->whereIn('order_status_id', $mountStatuses);
|
|
$query->whereIn('order_status_id', $mountStatuses);
|
|
|
})->count();
|
|
})->count();
|
|
|
|
|
|
|
|
- // общая сумма mount
|
|
|
|
|
- $this->data['totalMountSum'] = Price::format(
|
|
|
|
|
- ProductSKU::query()->
|
|
|
|
|
- whereHas('order', function ($query) use ($mountStatuses) {
|
|
|
|
|
- $query->whereIn('order_status_id', $mountStatuses);
|
|
|
|
|
- })
|
|
|
|
|
- ->withSum('product', 'total_price')
|
|
|
|
|
- ->get()
|
|
|
|
|
- ->sum('product_sum_total_price')
|
|
|
|
|
|
|
+ // сумма сданных МАФ по площадкам со статусом "Сдана"
|
|
|
|
|
+ $this->data['totalHandedOverSum'] = Price::format(
|
|
|
|
|
+ $this->getDoneSumByStatus($handedOverStatus)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
// done by managers
|
|
// done by managers
|
|
@@ -184,13 +179,7 @@ class ReportController extends Controller
|
|
|
);
|
|
);
|
|
|
// общая сумма done
|
|
// общая сумма done
|
|
|
$this->data['totalDoneSum'] = Price::format(
|
|
$this->data['totalDoneSum'] = Price::format(
|
|
|
- ProductSKU::query()->
|
|
|
|
|
- whereHas('order', function ($query) use ($doneStatuses) {
|
|
|
|
|
- $query->whereIn('order_status_id', $doneStatuses);
|
|
|
|
|
- })
|
|
|
|
|
- ->withSum('product', 'total_price')
|
|
|
|
|
- ->get()
|
|
|
|
|
- ->sum('product_sum_total_price') / 100
|
|
|
|
|
|
|
+ $this->getDoneSumByStatus($handedOverStatus)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
$districts = District::query()->get()->pluck('shortname', 'id')->toArray();
|
|
$districts = District::query()->get()->pluck('shortname', 'id')->toArray();
|
|
@@ -234,7 +223,7 @@ class ReportController extends Controller
|
|
|
$this->data['byDistrict'][$district] = [
|
|
$this->data['byDistrict'][$district] = [
|
|
|
'name' => $district,
|
|
'name' => $district,
|
|
|
'totalSum' => $this->getDistrictSum($districtId),
|
|
'totalSum' => $this->getDistrictSum($districtId),
|
|
|
- 'doneSum' => $this->getDistrictSum($districtId, $doneStatuses),
|
|
|
|
|
|
|
+ 'doneSum' => $this->getDistrictSum($districtId, [$handedOverStatus]),
|
|
|
'totalOrders' => $totalOrders,
|
|
'totalOrders' => $totalOrders,
|
|
|
'totalMafs' => $totalMafs,
|
|
'totalMafs' => $totalMafs,
|
|
|
'readyOrders' => $readyOrders,
|
|
'readyOrders' => $readyOrders,
|
|
@@ -331,19 +320,30 @@ class ReportController extends Controller
|
|
|
private function getDistrictSum($districtId, $done = false)
|
|
private function getDistrictSum($districtId, $done = false)
|
|
|
{
|
|
{
|
|
|
return Price::format(
|
|
return Price::format(
|
|
|
- ProductSKU::query()->
|
|
|
|
|
- whereHas('order', function ($query) use ($done, $districtId) {
|
|
|
|
|
- $query->where('district_id', $districtId);
|
|
|
|
|
- if($done){
|
|
|
|
|
- $query->whereIn('order_status_id', $done);
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- ->withSum('product', 'total_price')
|
|
|
|
|
- ->get()
|
|
|
|
|
- ->sum('product_sum_total_price') / 100
|
|
|
|
|
|
|
+ $this->getDoneSumByStatus($done ?: null, $districtId)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private function getDoneSumByStatus(array|int|null $statuses = null, ?int $districtId = null): float
|
|
|
|
|
+ {
|
|
|
|
|
+ $query = ProductSKU::query()
|
|
|
|
|
+ ->join('orders', 'orders.id', '=', 'products_sku.order_id')
|
|
|
|
|
+ ->join('products', 'products.id', '=', 'products_sku.product_id')
|
|
|
|
|
+ ->where('orders.year', year())
|
|
|
|
|
+ ->where('products.year', year());
|
|
|
|
|
+
|
|
|
|
|
+ if ($districtId !== null) {
|
|
|
|
|
+ $query->where('orders.district_id', $districtId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($statuses !== null && $statuses !== false) {
|
|
|
|
|
+ $statuses = is_array($statuses) ? $statuses : [$statuses];
|
|
|
|
|
+ $query->whereIn('orders.order_status_id', $statuses);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return ((float) $query->sum('products.total_price')) / 100;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|