diff --git a/app/Http/Controllers/Admin/StatisticsController.php b/app/Http/Controllers/Admin/StatisticsController.php
index c40604f..c2b96f9 100755
--- a/app/Http/Controllers/Admin/StatisticsController.php
+++ b/app/Http/Controllers/Admin/StatisticsController.php
@@ -345,33 +345,79 @@ class StatisticsController extends CommonController
if (!$projects->count()) {
return $this->error($this->noProjects);
}
+ $mode = $request->mode ?: 'customer';
$project_id = request()->project_id ?? $projects->first()->id;
$before_date = $request->before_date ?: date("Y-m-d");
$before_datetime = strtotime($before_date . " 23:59:59");
+ $before_datetime_text = date("Y-m-d H:i:s", $before_datetime);
DB::enableQueryLog();
- $customers = (new Customer())
- ->whereNull("deleted_at")
- ->with([
- "patients" => function ($query) use ($before_datetime) {
- $query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->orderBy("id", "desc");
- },
- // "oneBalance" => function ($query) use ($before_datetime) {
-// $query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->orderBy("id", "desc");
-// }
- ])
- // ->whereHas("oneBalance", function ($query) use ($before_datetime) {
-// $query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->where("balance", ">", 0)->orderBy("id", "desc");
-// })
- ->whereHas("orders", function ($query) use ($before_datetime, $project_id) {
- $query
- // ->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")
- ->where("project_id", $project_id);
- })
- ->get();
+ $customers = collect();
+ $orderBalances = collect();
+
+ if ($mode == 'order') {
+ $orderBalances = Orders::query()
+ ->withoutGlobalScopes()
+ ->leftJoin("customers", "customers.id", "=", "orders.customer_id")
+ ->leftJoin("patient", "patient.id", "=", "orders.patient_id")
+ ->leftJoin("balance", function ($join) use ($before_datetime_text) {
+ $join->on("balance.order_id", "=", "orders.id")
+ ->whereNull("balance.deleted_at")
+ ->where("balance.created_at", "<=", $before_datetime_text);
+ })
+ ->whereNull("orders.deleted_at")
+ ->where("orders.project_id", $project_id)
+ ->whereDate("orders.from_date", "<=", $before_date)
+ ->whereDate("orders.to_date", ">=", $before_date)
+ ->groupBy(
+ "orders.id",
+ "orders.serial",
+ "orders.from_date",
+ "orders.to_date",
+ "orders.contact",
+ "orders.mobile",
+ "customers.mobile",
+ "patient.name"
+ )
+ ->orderBy("orders.from_date")
+ ->orderBy("orders.id")
+ ->get([
+ "orders.id",
+ "orders.serial",
+ "orders.from_date",
+ "orders.to_date",
+ "orders.contact",
+ "orders.mobile as contact_mobile",
+ "customers.mobile as customer_mobile",
+ "patient.name as patient_name",
+ DB::raw("COALESCE(SUM(balance.money), 0) as balance"),
+ ]);
+ } else {
+ $customers = (new Customer())
+ ->whereNull("deleted_at")
+ ->with([
+ "patients" => function ($query) use ($before_datetime) {
+ $query->whereRaw("UNIX_TIMESTAMP(`created_at`) <= {$before_datetime}")->orderBy("id", "desc");
+ },
+ ])
+ ->whereHas("orders", function ($query) use ($before_datetime, $project_id) {
+ $query
+ ->where("project_id", $project_id);
+ })
+ ->get();
+ }
$laravel_duration = microtime(true) - LARAVEL_START;
- return view($this->bladePath . ".customer-balance", compact("customers", "before_datetime", "project_id", "laravel_duration"));
+ return view($this->bladePath . ".customer-balance", compact(
+ "customers",
+ "orderBalances",
+ "before_datetime",
+ "before_date",
+ "before_datetime_text",
+ "project_id",
+ "laravel_duration",
+ "mode"
+ ));
}
public function fixMonthLastDayCheckout(Request $request)
diff --git a/resources/views/admin/statistics/customer-balance.blade.php b/resources/views/admin/statistics/customer-balance.blade.php
index 7d4ab63..f09f435 100755
--- a/resources/views/admin/statistics/customer-balance.blade.php
+++ b/resources/views/admin/statistics/customer-balance.blade.php
@@ -19,9 +19,23 @@
+
-
-
客户余额表
-
-
-
- | 序号 |
- 客户手机号 |
- 客户家属 |
- 截止日期 |
- 未结算余额 |
-
-
-
- @foreach($customers as $item)
- @if(!$item->oneBalance)
- @continue
- @elseif (!($item->oneBalance->balance > 0))
- @continue
- @endif
-
+ @if(($mode ?? 'customer') == 'order')
+ 订单时点余额表
+ 统计时点:{{ $before_datetime_text }}
+
+
+
+ | 序号 |
+ 订单号 |
+ 客户手机号 |
+ 联系人 |
+ 联系电话 |
+ 被陪护人 |
+ 服务开始 |
+ 服务结束 |
+ 时点余额 |
+
+
+
+ @foreach($orderBalances as $item)
+
+ | {{ $loop->iteration }} |
+ {{ $item->serial }} |
+ {{ $item->customer_mobile }} |
+ {{ $item->contact }} |
+ {{ $item->contact_mobile }} |
+ {{ $item->patient_name ?: "无" }} |
+ {{ $item->from_date }} |
+ {{ $item->to_date }} |
+ {{ $item->balance }} |
+
+ @endforeach
+
+
+ @else
+ 客户余额表
+ 统计时点:{{ $before_datetime_text }}
+
+
- | {{ $loop->iteration }} |
- {{ $item->mobile }} |
- {{ $item->patients->count() ? $item->patients->last()->name : "无" }} |
- {{ date("Y-m-d",$before_datetime) }} |
- {{ $item->balance }} |
+ 序号 |
+ 客户手机号 |
+ 客户家属 |
+ 截止日期 |
+ 未结算余额 |
- @endforeach
-
-
+
+
+ @foreach($customers as $item)
+ @if(!$item->oneBalance)
+ @continue
+ @elseif (!($item->oneBalance->balance > 0))
+ @continue
+ @endif
+
+
+ | {{ $loop->iteration }} |
+ {{ $item->mobile }} |
+ {{ $item->patients->count() ? $item->patients->last()->name : "无" }} |
+ {{ $before_date }} |
+ {{ $item->balance }} |
+
+ @endforeach
+
+
+ @endif