generated from liutk/owl-admin-base
佣金收入
parent
56384c3f81
commit
e26c40b90d
|
|
@ -0,0 +1,88 @@
|
|||
<?php
|
||||
|
||||
namespace App\Admin\Controllers\Finance;
|
||||
|
||||
use App\Admin\Controllers\AdminController;
|
||||
use App\Admin\Filters\LedgerFilter;
|
||||
use App\Admin\Filters\LedgerItemFilter;
|
||||
use App\Models\Keyword;
|
||||
use App\Models\Ledger;
|
||||
use App\Models\LedgerItem;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
/**
|
||||
* @property mixed $name
|
||||
*/
|
||||
class CommissionIncomeController extends AdminController
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
if ($this->actionOfGetData()) {
|
||||
return $this->response()->success([
|
||||
'items' => [$this->getCommissionIncomeStatistics(request())],
|
||||
]);
|
||||
}
|
||||
|
||||
return $this->response()->success(
|
||||
$this->baseList(
|
||||
$this->baseCRUD()
|
||||
->headerToolbar([
|
||||
amis('filter-toggler')->align('right'),
|
||||
])
|
||||
->footerToolbar([])
|
||||
->bulkActions([])
|
||||
->filter($this->baseFilter()->body([
|
||||
amis()->GroupControl()->mode('horizontal')->body([
|
||||
amis()->DateRangeControl('date_range', '日期')
|
||||
->valueFormat('YYYY-MM-DD')
|
||||
->columnRatio(6),
|
||||
amis()->InputCityControl('region', '区域')
|
||||
->allowDistrict(false)
|
||||
->extractValue(false),
|
||||
amis()->SelectControl('store_id', __('finance.ledger.store'))
|
||||
->source(admin_url('api/stores?region=${region}'))
|
||||
->labelField('title')
|
||||
->valueField('id')
|
||||
->clearable(),
|
||||
]),
|
||||
]))
|
||||
->columns([
|
||||
amis()->TableColumn('expected_commission', '预期佣金'),
|
||||
amis()->TableColumn('actual_commission', '实际佣金'),
|
||||
amis()->TableColumn('diff_commission', '佣金差异'),
|
||||
amis()->TableColumn('expected_income', '预期收益'),
|
||||
amis()->TableColumn('actual_income', '实际收益'),
|
||||
amis()->TableColumn('diff_income', '收益差异'),
|
||||
])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
protected function getCommissionIncomeStatistics(Request $request): array
|
||||
{
|
||||
$aggregate = Ledger::select([
|
||||
DB::raw('SUM(expenditure) as expenditure'),
|
||||
DB::raw('SUM(expected_commission) as expected_commission'),
|
||||
DB::raw('SUM(actual_commission) as actual_commission'),
|
||||
DB::raw('SUM(expected_income) as expected_income'),
|
||||
DB::raw('SUM(actual_income) as actual_income'),
|
||||
])
|
||||
->filter($request->input(), LedgerFilter::class)
|
||||
->first();
|
||||
|
||||
$expectedCommission = $aggregate->expected_commission ?? '0';
|
||||
$actualCommission = $aggregate->actual_commission ?? '0';
|
||||
$expectedIncome = $aggregate->expected_income ?? '0';
|
||||
$actualIncome = $aggregate->actual_income ?? '0';
|
||||
|
||||
return [
|
||||
'expected_commission' => trim_zeros($expectedCommission),
|
||||
'actual_commission' => trim_zeros($actualCommission),
|
||||
'diff_commission' => trim_zeros(bcsub($actualCommission, $expectedCommission, 2)),
|
||||
'expected_income' => trim_zeros($expectedIncome),
|
||||
'actual_income' => trim_zeros($actualIncome),
|
||||
'diff_income' => trim_zeros(bcsub($actualIncome, $expectedIncome, 2)),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
@ -36,7 +36,6 @@ class SalesStatisticController extends AdminController
|
|||
->valueFormat('YYYY-MM-DD')
|
||||
->columnRatio(6),
|
||||
amis()->InputCityControl('region', '区域')
|
||||
->inputClassName('w-40')
|
||||
->allowDistrict(false)
|
||||
->extractValue(false),
|
||||
amis()->SelectControl('store_id', __('finance.ledger.store'))
|
||||
|
|
|
|||
|
|
@ -24,11 +24,12 @@ class LedgerFilter extends ModelFilter
|
|||
|
||||
public function region($region)
|
||||
{
|
||||
if (! is_array($region)) {
|
||||
if (array_key_exists('store_id', $this->input) || ! is_array($region)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$provinceCode = Arr::get($region, 'provinceCode');
|
||||
|
||||
$cityCode = Arr::get($region, 'cityCode');
|
||||
|
||||
if (empty($provinceCode) && empty($cityCode)) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ class LedgerItemFilter extends ModelFilter
|
|||
|
||||
public function region($region)
|
||||
{
|
||||
if ($this->input('store_id') !== null || ! is_array($region)) {
|
||||
if (array_key_exists('store_id', $this->input) || ! is_array($region)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
use App\Admin\Controllers\BaseKeywordController;
|
||||
use App\Admin\Controllers\Finance\CommissionIncomeController;
|
||||
use App\Admin\Controllers\Finance\LedgerController;
|
||||
use App\Admin\Controllers\Finance\SalesStatisticController;
|
||||
use App\Admin\Controllers\Finance\StoreStatisticController;
|
||||
|
|
@ -93,6 +94,8 @@ Route::group([
|
|||
// 上报数据
|
||||
$router->resource('ledgers', LedgerController::class);
|
||||
$router->post('ledgers/{ledger}/approval', [LedgerController::class, 'approval'])->name('ledgers.approval');
|
||||
// 佣金收入
|
||||
$router->get('commission-incomes', [CommissionIncomeController::class, 'index'])->name('commission_incomes.index');
|
||||
// 销售统计
|
||||
$router->get('sales-statistics', [SalesStatisticController::class, 'index'])->name('sales_statistics.index');
|
||||
// 门店统计
|
||||
|
|
|
|||
|
|
@ -148,6 +148,15 @@ class AdminPermissionSeeder extends Seeder
|
|||
'resource' => ['list', 'update', 'view'],
|
||||
'children' => [],
|
||||
],
|
||||
'commission_incomes' => [
|
||||
'name' => '佣金收入',
|
||||
'icon' => 'ri:money-cny-circle-line',
|
||||
'uri' => '/finance/commission-incomes',
|
||||
'resource' => false,
|
||||
'children' => [
|
||||
'index' => '佣金收入',
|
||||
],
|
||||
],
|
||||
'sales_statistics' => [
|
||||
'name' => '销售统计',
|
||||
'icon' => 'ri:bar-chart-2-line',
|
||||
|
|
|
|||
Loading…
Reference in New Issue