6
0
Fork 0

优化员工业绩

base
Jing Li 2023-11-12 22:11:27 +08:00
parent 0cc771f30e
commit cd63ae1636
3 changed files with 22 additions and 6 deletions

View File

@ -2,6 +2,7 @@
namespace App\Admin\Controllers\Store;
use App\Admin\Renderable\Grid\Filter\OrderStatusIn;
use App\Constants\OrderStatus;
use App\Enums\PayWay;
use App\Models\Store\{Store, Desk};
@ -74,7 +75,9 @@ class OrderController extends AdminController
$grid->column('profit_price')->display(fn () => bcdiv($this->total_amount + $this->point_discount_amount - $this->cost_price, 100, 2));
$grid->column('user_coupon_id')->display(fn ($value) => $value ? data_get($this->userCoupon, 'coupon_name') . '(¥'.round($this->coupon_discount_amount/100, 2, PHP_ROUND_HALF_DOWN).')' : '');
$grid->column('sales_value');
$grid->column('order_status')->using($this->statusMap)->dot($this->statusColor);
$grid->column('order_status')->using($this->statusMap)->dot($this->statusColor)->filter(
OrderStatusIn::make($this->statusMap)
);;
$grid->column('created_at');
$grid->column('pay_at');
$grid->column('completed_at');
@ -142,8 +145,8 @@ class OrderController extends AdminController
OrderStatus::CANCELLED => '已取消'
])->width(3);
$filter->where('user_coupon_id', fn($q) => $this->input ? $q->whereNotNull('user_coupon_id') : $q->whereNull('user_coupon_id'))->select(['未使用', '已使用'])->width(3);
$filter->between('completed_at')->dateTime()->width(6);
$filter->where('pay_at', fn($q) => $this->input ? $q->whereNotNull('pay_at') : $q->whereNull('pay_at')->where('status', '!=', Order::STATUS_CANCELLED), '付款状态')->select(['待付款', '已付款'])->width(3);
$filter->between('pay_at')->dateTime()->width(6);
$filter->where('pay_status', fn($q) => $this->input ? $q->whereNotNull('pay_at') : $q->whereNull('pay_at')->where('status', '!=', Order::STATUS_CANCELLED), '付款状态')->select(['待付款', '已付款'])->width(3);
});
$grid->footer(function ($collection) use ($grid) {

View File

@ -44,6 +44,7 @@ class StaffPerformanceController extends AdminController
DB::raw('COUNT(1) AS orders_count'),
DB::raw('SUM(point_discount_amount) AS points_deduction_amount'),
DB::raw('SUM(total_amount) AS payment_amount'),
DB::raw('SUM(cost_price) AS cost_price'),
DB::raw('SUM(profit) AS profit'),
])
->whereIn('status', [
@ -91,6 +92,7 @@ class StaffPerformanceController extends AdminController
DB::raw('online_performances.orders_count AS online_orders_count'),
DB::raw('online_performances.points_deduction_amount AS online_points_deduction_amount'),
DB::raw('online_performances.payment_amount AS online_payment_amount'),
DB::raw('online_performances.cost_price AS online_cost_price'),
DB::raw('online_performances.profit AS online_profit'),
// 线下订单
DB::raw('offline_performances.orders_count AS offline_orders_count'),
@ -108,6 +110,7 @@ class StaffPerformanceController extends AdminController
'online_total_amount',
'online_points_deduction_amount',
'online_payment_amount',
'online_earnings',
'online_profit',
]);
@ -127,6 +130,7 @@ class StaffPerformanceController extends AdminController
$grid->column('online_total_amount')->display(fn () => bcdiv($this->online_points_deduction_amount + $this->online_payment_amount, 100, 2));
$grid->column('online_points_deduction_amount')->display(fn ($v) => bcdiv($v, 100, 2));
$grid->column('online_payment_amount')->display(fn ($v) => bcdiv($v, 100, 2));
$grid->column('online_earnings')->display(fn ($v) => bcdiv($this->online_points_deduction_amount + $this->online_payment_amount - $this->online_cost_price, 100, 2));
$grid->column('online_profit')->display(fn ($v) => $v ?? '0.00');
// 线下订单业绩
$grid->column('offline_orders_count')->display(fn ($v) => (int) $v);
@ -134,6 +138,9 @@ class StaffPerformanceController extends AdminController
$grid->column('offline_points_deduction_amount')->display(fn ($v) => bcdiv($v, 100, 2));
$grid->column('offline_payment_amount')->display(fn ($v) => bcdiv($v, 100, 2));
$grid->column('total_amount')->display(fn ($v) => bcdiv($this->online_points_deduction_amount + $this->online_payment_amount + $this->offline_points_deduction_amount + $this->offline_payment_amount, 100, 2));
$grid->column('payment_amount')->display(fn ($v) => bcdiv($this->online_payment_amount + $this->offline_payment_amount, 100, 2));
$grid->disableRefreshButton();
$grid->disableFilterButton();
$grid->disableActions();
@ -152,6 +159,7 @@ class StaffPerformanceController extends AdminController
DB::raw('SUM(online_performances.orders_count) AS orders_count'),
DB::raw('SUM(online_performances.points_deduction_amount) AS points_deduction_amount'),
DB::raw('SUM(online_performances.payment_amount) AS payment_amount'),
DB::raw('SUM(online_performances.cost_price) AS cost_price'),
DB::raw('SUM(online_performances.profit) AS profit'),
])
->where('is_company', true);
@ -177,11 +185,12 @@ class StaffPerformanceController extends AdminController
});
$onlineResults = $onlineQuery->first();
$onlineOrdersCount = $onlineResults['orders_count'] ?? 0;
$onlinePointsDeductionAmount = bcdiv($onlineResults['points_deduction_amount'] ?? 0, 100, 2);
$onlinePaymentAmount = bcdiv($onlineResults['payment_amount'] ?? 0, 100, 2);
$onlineTotalAmount = bcadd($onlinePointsDeductionAmount, $onlinePaymentAmount, 2);
$onlineCostPrice = bcdiv($onlineResults['cost_price'] ?? 0, 100, 2);
$onlineEarnings = bcsub($onlineTotalAmount, $onlineCostPrice, 2);
$onlineProfit = $onlineResults['profit'] ?? 0;
$offlineResults = $offlineQuery->first();
@ -199,6 +208,7 @@ class StaffPerformanceController extends AdminController
<td>订单总额: $onlineTotalAmount</td>
<td>积分抵扣: $onlinePointsDeductionAmount</td>
<td>实付总额: $onlinePaymentAmount</td>
<td>毛利总额: $onlineEarnings</td>
<td>累计返利: $onlineProfit</td>
<tr>
<tr>
@ -206,7 +216,7 @@ class StaffPerformanceController extends AdminController
<td>订单数: $offlineOrdersCount</td>
<td>订单总额: $offlineTotalAmount</td>
<td>积分抵扣: $offlinePointsDeductionAmount</td>
<td colspan="2">实付总额: $offlinePaymentAmount</td>
<td colspan="3">实付总额: $offlinePaymentAmount</td>
<tr>
</tbody>
</table>

View File

@ -15,13 +15,16 @@ return [
'online_total_amount' => '订单总额',
'online_points_deduction_amount' => '积分抵扣',
'online_payment_amount' => '实付金额',
'online_profit' => '累计返利',
'online_earnings' => '毛利',
'online_profit' => '返利',
'offline_order' => '线下订单',
'offline_orders_count' => '订单数量',
'offline_total_amount' => '订单总额',
'offline_points_deduction_amount' => '积分抵扣',
'offline_payment_amount' => '实付金额',
'datetime' => '日期',
'total_amount' => '总金额',
'payment_amount' => '总实付',
],
'options' => [
],