header('财务概览')
->body($this->grid());
}
protected function grid()
{
$grid = new Grid(new Finance);
$grid->disableRowSelector();
$grid->disableActions();
$grid->model()->latest()->with(['company']);
// $grid->paginate(Company::count());
$grid->tools(function ($tools) {
$tools->batch(function ($batch) {
$batch->disableDelete();
});
});
$grid->filter(function ($filter) {
$filter->disableIdFilter();
$filter->column(1 / 3, function ($filter) {
$filter->like('company.name', '公司名称');
$filter->like('sn', '#SN#');
$filter->equal('status', '结算状态')->select([
0 => '初始化',
1 => '结算中',
2 => '结算失败',
9 => '结算完成',
]);
});
$filter->column(1 / 3, function ($filter) {
$filter->date('date', '结算日期');
$filter->equal('type', '账单类型')->select([
'day' => '日账单',
'week' => '周账单',
'month' => '月账单',
'quarter' => '季账单',
'year' => '年账单',
'custom' => '自定义',
]);
$filter->group('orders', '订单总数', function ($group) {
$group->gt('大于');
$group->lt('小于');
$group->nlt('不小于');
$group->ngt('不大于');
$group->equal('等于');
});
});
$filter->column(1 / 3, function ($filter) {
$filter->between('start_time', '结算期始')->datetime();
$filter->between('end_time', '结算期止')->datetime();
});
// $filter->expand();
});
$grid->id('Id')->sortable();
$grid->column('公司名称/#SN#')->display(function () {
return $this->company->name . '
' . $this->sn;
});
$grid->column('日期/类型')->display(function () {
$ret = $this->date . '
';
$ret .= $this->type_text;
return $ret;
});
$grid->column('结算周期')->display(function () {
return $this->start_time . '
' . $this->end_time;
});
$grid->column('销售/退款金额')->display(function () {
return $this->total_sales . '
' . $this->total_refunds;
});
$grid->total_cost('成本金额');
$grid->column('订单总数/支付')->display(function () {
return $this->orders . ' / ' . $this->orders_paid;
});
$grid->refunds('退款数量');
$grid->heads('参与团长');
$grid->users('参与用户');
$grid->goods('销售商品');
$grid->column('状态')->display(function () {
switch ($this->status) {
case 0:
return '初始化';
break;
case 1:
return '结算中';
break;
case 2:
return '结算失败';
break;
case 9:
return '结算完成';
break;
}
});
$grid->column('创建/更新时间')->display(function () {
return $this->created_at . '
' . $this->updated_at;
});
return $grid;
}
public function create(Content $content)
{
return $content
->header('手动生成账单')
->body($this->form());
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
$form = new Form(new Finance);
$form->setWidth(3, 2);
$form->footer(function ($footer) {
$footer->disableViewCheck();
$footer->disableCreatingCheck();
$footer->disableEditingCheck();
});
$form->datetimeRange('start_at', 'end_at', '日期范围')->help('选择日期范围的情况下,下面的属性会失效');
$form->date('date', '账单日期')->default(Carbon::now()->toDateString());
$form->select('type', '账单类型')->options([
'day' => '日账单',
'week' => '周账单',
'month' => '月账单',
'quarter' => '季账单',
'year' => '年账单',
'custom' => '自定义',
])->default('day')->setWidth(2, 2);
return $form;
}
public function store()
{
$date = request('date');
$type = request('type');
$start_at = request('start_at');
$end_at = request('end_at');
try {
if ($start_at && $end_at) {
Artisan::call('bill:create', [
'--day' => $date,
'--type' => [$start_at, $end_at],
]);
} else {
Artisan::call('bill:create', [
'--day' => $date,
'--type' => $type,
]);
}
admin_toastr('账单生成成功', 'success');
return redirect('/admin/finances');
} catch (\Exception $e) {
admin_toastr($e->getMessage(), 'error');
return back();
}
}
public function orders(Content $content)
{
return $content
->header('订单支付记录')
->description('所有订单的支付记录,包含未支付的信息')
->body($this->ordersGrid());
}
public function ordersGrid()
{
$grid = new Grid(new OrderPayment);
$grid->disableRowSelector();
$grid->disableActions();
$grid->disableCreateButton();
$grid->model()->latest()->with(['order']);
$grid->tools(function ($tools) {
$tools->batch(function ($batch) {
$batch->disableDelete();
});
});
$grid->filter(function ($filter) {
$filter->disableIdFilter();
$filter->column(1 / 3, function ($filter) {
$filter->like('order.orderid', '订单编号');
$filter->like('out_trade_no', '支付单号');
});
$filter->column(1 / 3, function ($filter) {
$filter->like('transaction_id', '交易单号');
$filter->equal('type', '支付方式')->select([
'wxpay' => '微信支付',
'balance' => '余额支付',
]);
});
$filter->column(1 / 3, function ($filter) {
$filter->between('end_at', '支付时间')->datetime();
$filter->between('created_at', '创建时间')->datetime();
});
// $filter->expand();
});
$grid->id('#Id#')->sortable();
$grid->column('order.orderid', '订单编号');
$grid->out_trade_no('支付单号');
$grid->transaction_id('交易单号');
$grid->end_at('支付时间');
$grid->column('支付方式')->display(function () {
return $this->type_text;
});
$grid->created_at('创建时间');
return $grid;
}
}