generated from liutk/owl-admin-base
上报数据增加字段
parent
474e9a4364
commit
03797a1e7c
|
|
@ -85,7 +85,32 @@ class LedgerController extends AdminController
|
||||||
|
|
||||||
$ledger->save();
|
$ledger->save();
|
||||||
|
|
||||||
return $this->response()->success(null, '操作成功');
|
return $this->response()->success(null, '审核成功');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateLedgerAmount($id, Request $request)
|
||||||
|
{
|
||||||
|
$validator = Validator::make(
|
||||||
|
data: $request->all(),
|
||||||
|
rules: [
|
||||||
|
'ledger_amount' => ['bail', 'required', 'numeric'],
|
||||||
|
],
|
||||||
|
attributes: [
|
||||||
|
'ledger_amount' => __('finance.ledger.ledger_amount'),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($validator->fails()) {
|
||||||
|
return $this->response()->fail($validator->errors()->first());
|
||||||
|
}
|
||||||
|
|
||||||
|
$ledger = Ledger::findOrFail($id);
|
||||||
|
|
||||||
|
$ledger->update([
|
||||||
|
'ledger_amount' => $request->input('ledger_amount'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $this->response()->success(null, '修改成功');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function list(): Page
|
public function list(): Page
|
||||||
|
|
@ -113,11 +138,15 @@ class LedgerController extends AdminController
|
||||||
]),
|
]),
|
||||||
]))
|
]))
|
||||||
->columns([
|
->columns([
|
||||||
amis()->TableColumn()->name('id')->label(__('finance.ledger.id')),
|
// amis()->TableColumn()->name('id')->label(__('finance.ledger.id')),
|
||||||
amis()->TableColumn()->name('date')->label(__('finance.ledger.date')),
|
amis()->TableColumn()->name('date')->label(__('finance.ledger.date')),
|
||||||
amis()->TableColumn()->name('store.title')->label(__('finance.ledger.store')),
|
amis()->TableColumn()->name('store.title')->label(__('finance.ledger.store')),
|
||||||
amis()->TableColumn()->name('sales')->label(__('finance.ledger.sales')),
|
amis()->TableColumn()->name('sales')->label(__('finance.ledger.sales')),
|
||||||
amis()->TableColumn()->name('expenditure')->label(__('finance.ledger.expenditure')),
|
amis()->TableColumn()->name('expenditure')->label(__('finance.ledger.expenditure')),
|
||||||
|
amis()->TableColumn()->name('new_customers')->label(__('finance.ledger.new_customers')),
|
||||||
|
amis()->TableColumn()->name('handover_amount')->label(__('finance.ledger.handover_amount')),
|
||||||
|
amis()->TableColumn()->name('ledger_amount')->label(__('finance.ledger.ledger_amount')),
|
||||||
|
amis()->TableColumn()->name('ledger_difference')->label(__('finance.ledger.ledger_difference')),
|
||||||
amis()->TableColumn()->name('expected_commission')->label(__('finance.ledger.expected_commission')),
|
amis()->TableColumn()->name('expected_commission')->label(__('finance.ledger.expected_commission')),
|
||||||
amis()->TableColumn()->name('actual_commission')->label(__('finance.ledger.actual_commission')),
|
amis()->TableColumn()->name('actual_commission')->label(__('finance.ledger.actual_commission')),
|
||||||
amis()->TableColumn()->name('expected_income')->label(__('finance.ledger.expected_income')),
|
amis()->TableColumn()->name('expected_income')->label(__('finance.ledger.expected_income')),
|
||||||
|
|
@ -131,6 +160,8 @@ class LedgerController extends AdminController
|
||||||
$this->rowActions([
|
$this->rowActions([
|
||||||
$this->rowApprovalButton()
|
$this->rowApprovalButton()
|
||||||
->visibleOn('${ledger_status == 2}'),
|
->visibleOn('${ledger_status == 2}'),
|
||||||
|
$this->rowEditLedgerAmountButton()
|
||||||
|
->visible(Admin::user()->can('admin.finance.ledgers.update_ledger_amount')),
|
||||||
$this->rowEditButton(true)
|
$this->rowEditButton(true)
|
||||||
->visible(Admin::user()->can('admin.finance.ledgers.update'))
|
->visible(Admin::user()->can('admin.finance.ledgers.update'))
|
||||||
->visibleOn('${ledger_status == 1 || ledger_status == 4}'),
|
->visibleOn('${ledger_status == 1 || ledger_status == 4}'),
|
||||||
|
|
@ -164,11 +195,15 @@ class LedgerController extends AdminController
|
||||||
public function detail(): Form
|
public function detail(): Form
|
||||||
{
|
{
|
||||||
return $this->baseDetail()->title()->body([
|
return $this->baseDetail()->title()->body([
|
||||||
amis()->Property()->column(2)->items([
|
amis()->Property()->items([
|
||||||
['label' => __('finance.ledger.date'), 'content' => '${date}'],
|
['label' => __('finance.ledger.date'), 'content' => '${date}'],
|
||||||
['label' => __('finance.ledger.store'), 'content' => '${store.title}'],
|
['label' => __('finance.ledger.store'), 'content' => '${store.title}'],
|
||||||
|
['label' => __('finance.ledger.new_customers'), 'content' => '${new_customers}'],
|
||||||
['label' => __('finance.ledger.sales'), 'content' => '${sales}'],
|
['label' => __('finance.ledger.sales'), 'content' => '${sales}'],
|
||||||
['label' => __('finance.ledger.expenditure'), 'content' => '${expenditure}'],
|
['label' => __('finance.ledger.expenditure'), 'content' => '${expenditure}'],
|
||||||
|
['label' => __('finance.ledger.handover_amount'), 'content' => '${handover_amount}'],
|
||||||
|
['label' => __('finance.ledger.ledger_amount'), 'content' => '${ledger_amount}'],
|
||||||
|
['label' => __('finance.ledger.ledger_difference'), 'content' => '${ledger_difference}'],
|
||||||
['label' => __('finance.ledger.expected_commission'), 'content' => '${expected_commission}'],
|
['label' => __('finance.ledger.expected_commission'), 'content' => '${expected_commission}'],
|
||||||
['label' => __('finance.ledger.actual_commission'), 'content' => '${actual_commission}'],
|
['label' => __('finance.ledger.actual_commission'), 'content' => '${actual_commission}'],
|
||||||
['label' => __('finance.ledger.expected_income'), 'content' => '${expected_income}'],
|
['label' => __('finance.ledger.expected_income'), 'content' => '${expected_income}'],
|
||||||
|
|
@ -176,10 +211,10 @@ class LedgerController extends AdminController
|
||||||
[
|
[
|
||||||
'label' => '上报数据',
|
'label' => '上报数据',
|
||||||
'content' => amis()->Property()->source('${items_property}'),
|
'content' => amis()->Property()->source('${items_property}'),
|
||||||
'span' => 2
|
'span' => 3
|
||||||
],
|
],
|
||||||
['label' => __('finance.ledger.photos'), 'content' => amis()->Images()->enlargeAble()->source('${photos}')->enlargeWithGallary(), 'span' => 2],
|
['label' => __('finance.ledger.photos'), 'content' => amis()->Images()->enlargeAble()->source('${photos}')->enlargeWithGallary(), 'span' => 3],
|
||||||
['label' => __('finance.ledger.ledger_status'), 'content' => amis()->Mapping()->map(LedgerStatus::labelMap())->value('${ledger_status}'), 'span' => 2],
|
['label' => __('finance.ledger.ledger_status'), 'content' => amis()->Mapping()->map(LedgerStatus::labelMap())->value('${ledger_status}'), 'span' => 3],
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
@ -205,4 +240,26 @@ class LedgerController extends AdminController
|
||||||
])->size('md')
|
])->size('md')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function rowEditLedgerAmountButton()
|
||||||
|
{
|
||||||
|
return amis()->DialogAction()
|
||||||
|
->icon('fa-regular fa-pen-to-square')
|
||||||
|
->label(__('finance.ledger.ledger_amount'))
|
||||||
|
->level('link')
|
||||||
|
->dialog(
|
||||||
|
amis()->Dialog()->title(__('finance.ledger.ledger_amount'))->body([
|
||||||
|
amis()->Form()->title('')
|
||||||
|
->api('post:'.admin_url('finance/ledgers/${id}/ledger-amount'))
|
||||||
|
->body([
|
||||||
|
amis()->NumberControl()
|
||||||
|
->name('ledger_amount')
|
||||||
|
->label(__('finance.ledger.ledger_amount'))
|
||||||
|
->precision(2)
|
||||||
|
->showSteps(false)
|
||||||
|
->required(),
|
||||||
|
]),
|
||||||
|
])
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,7 @@ Route::group([
|
||||||
// 上报数据
|
// 上报数据
|
||||||
$router->resource('ledgers', LedgerController::class);
|
$router->resource('ledgers', LedgerController::class);
|
||||||
$router->post('ledgers/{ledger}/approval', [LedgerController::class, 'approval'])->name('ledgers.approval');
|
$router->post('ledgers/{ledger}/approval', [LedgerController::class, 'approval'])->name('ledgers.approval');
|
||||||
|
$router->post('ledgers/{ledger}/ledger-amount', [LedgerController::class, 'updateLedgerAmount'])->name('ledgers.update_ledger_amount');
|
||||||
// 佣金收入
|
// 佣金收入
|
||||||
$router->get('commission-incomes', [CommissionIncomeController::class, 'index'])->name('commission_incomes.index');
|
$router->get('commission-incomes', [CommissionIncomeController::class, 'index'])->name('commission_incomes.index');
|
||||||
// 销售统计
|
// 销售统计
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,10 @@ class Ledger extends Model
|
||||||
{
|
{
|
||||||
use Filterable, HasDateTimeFormatter, HasFactory;
|
use Filterable, HasDateTimeFormatter, HasFactory;
|
||||||
|
|
||||||
|
protected $appends = ['ledger_difference'];
|
||||||
|
|
||||||
protected $attributes = [
|
protected $attributes = [
|
||||||
|
'new_customers' => 0,
|
||||||
'ledger_status' => LedgerStatus::Pending,
|
'ledger_status' => LedgerStatus::Pending,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -26,8 +29,11 @@ class Ledger extends Model
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'store_id',
|
'store_id',
|
||||||
'date',
|
'date',
|
||||||
|
'new_customers',
|
||||||
'sales',
|
'sales',
|
||||||
'expenditure',
|
'expenditure',
|
||||||
|
'handover_amount',
|
||||||
|
'ledger_amount',
|
||||||
'expected_commission',
|
'expected_commission',
|
||||||
'actual_commission',
|
'actual_commission',
|
||||||
'expected_income',
|
'expected_income',
|
||||||
|
|
@ -46,6 +52,18 @@ class Ledger extends Model
|
||||||
return $this->hasMany(LedgerItem::class);
|
return $this->hasMany(LedgerItem::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function ledgerDifference(): Attribute
|
||||||
|
{
|
||||||
|
return Attribute::make(
|
||||||
|
get: function (mixed $value, array $attributes) {
|
||||||
|
if (is_numeric($attributes['ledger_amount'])) {
|
||||||
|
return bcsub($attributes['handover_amount'], $attributes['ledger_amount'], 2);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected function photos(): Attribute
|
protected function photos(): Attribute
|
||||||
{
|
{
|
||||||
return Attribute::make(
|
return Attribute::make(
|
||||||
|
|
@ -59,18 +77,4 @@ class Ledger extends Model
|
||||||
set: fn (mixed $value) => json_encode(is_array($value) ? $value : []),
|
set: fn (mixed $value) => json_encode(is_array($value) ? $value : []),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function ledgerStatusColor(): Attribute
|
|
||||||
{
|
|
||||||
return Attribute::make(
|
|
||||||
get: fn (mixed $value) => $this->ledger_status->color(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function ledgerStatusLabel(): Attribute
|
|
||||||
{
|
|
||||||
return Attribute::make(
|
|
||||||
get: fn (mixed $value) => $this->ledger_status->label(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,11 @@ return new class extends Migration
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->bigInteger('store_id')->unsigned()->comment('门店ID');
|
$table->bigInteger('store_id')->unsigned()->comment('门店ID');
|
||||||
$table->date('date')->comment('日期');
|
$table->date('date')->comment('日期');
|
||||||
|
$table->integer('new_customers')->unsigned()->default(0)->comment('新增客户');
|
||||||
$table->decimal('sales', 10, 2)->comment('销量');
|
$table->decimal('sales', 10, 2)->comment('销量');
|
||||||
$table->decimal('expenditure', 10, 2)->comment('支出');
|
$table->decimal('expenditure', 10, 2)->comment('支出');
|
||||||
|
$table->decimal('handover_amount', 10, 2)->default(0)->comment('上交金额');
|
||||||
|
$table->decimal('ledger_amount', 10, 2)->nullable()->comment('总账金额');
|
||||||
$table->decimal('expected_commission', 10, 2)->comment('预期佣金=销售金额*佣金比例');
|
$table->decimal('expected_commission', 10, 2)->comment('预期佣金=销售金额*佣金比例');
|
||||||
$table->decimal('actual_commission', 10, 2)->nullable()->comment('实际佣金');
|
$table->decimal('actual_commission', 10, 2)->nullable()->comment('实际佣金');
|
||||||
$table->decimal('expected_income', 10, 2)->comment('预期收益=预计佣金-支出');
|
$table->decimal('expected_income', 10, 2)->comment('预期收益=预计佣金-支出');
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,9 @@ class AdminPermissionSeeder extends Seeder
|
||||||
'icon' => 'mdi:database',
|
'icon' => 'mdi:database',
|
||||||
'uri' => '/finance/ledgers',
|
'uri' => '/finance/ledgers',
|
||||||
'resource' => ['list', 'update', 'view'],
|
'resource' => ['list', 'update', 'view'],
|
||||||
'children' => [],
|
'children' => [
|
||||||
|
'update_ledger_amount' => '编辑总账金额',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'commission_incomes' => [
|
'commission_incomes' => [
|
||||||
'name' => '佣金收入',
|
'name' => '佣金收入',
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,10 @@ return [
|
||||||
'store' => '门店',
|
'store' => '门店',
|
||||||
'sales' => '销量',
|
'sales' => '销量',
|
||||||
'expenditure' => '支出',
|
'expenditure' => '支出',
|
||||||
|
'new_customers' => '新增客户',
|
||||||
|
'handover_amount' => '交账金额',
|
||||||
|
'ledger_amount' => '总账金额',
|
||||||
|
'ledger_difference' => '总账差异',
|
||||||
'expected_commission' => '预期佣金',
|
'expected_commission' => '预期佣金',
|
||||||
'actual_commission' => '实际佣金',
|
'actual_commission' => '实际佣金',
|
||||||
'expected_income' => '预期收益',
|
'expected_income' => '预期收益',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue