generated from liutk/owl-admin-base
上报数据增加字段
parent
474e9a4364
commit
03797a1e7c
|
|
@ -85,7 +85,32 @@ class LedgerController extends AdminController
|
|||
|
||||
$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
|
||||
|
|
@ -113,11 +138,15 @@ class LedgerController extends AdminController
|
|||
]),
|
||||
]))
|
||||
->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('store.title')->label(__('finance.ledger.store')),
|
||||
amis()->TableColumn()->name('sales')->label(__('finance.ledger.sales')),
|
||||
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('actual_commission')->label(__('finance.ledger.actual_commission')),
|
||||
amis()->TableColumn()->name('expected_income')->label(__('finance.ledger.expected_income')),
|
||||
|
|
@ -131,6 +160,8 @@ class LedgerController extends AdminController
|
|||
$this->rowActions([
|
||||
$this->rowApprovalButton()
|
||||
->visibleOn('${ledger_status == 2}'),
|
||||
$this->rowEditLedgerAmountButton()
|
||||
->visible(Admin::user()->can('admin.finance.ledgers.update_ledger_amount')),
|
||||
$this->rowEditButton(true)
|
||||
->visible(Admin::user()->can('admin.finance.ledgers.update'))
|
||||
->visibleOn('${ledger_status == 1 || ledger_status == 4}'),
|
||||
|
|
@ -164,11 +195,15 @@ class LedgerController extends AdminController
|
|||
public function detail(): Form
|
||||
{
|
||||
return $this->baseDetail()->title()->body([
|
||||
amis()->Property()->column(2)->items([
|
||||
amis()->Property()->items([
|
||||
['label' => __('finance.ledger.date'), 'content' => '${date}'],
|
||||
['label' => __('finance.ledger.store'), 'content' => '${store.title}'],
|
||||
['label' => __('finance.ledger.new_customers'), 'content' => '${new_customers}'],
|
||||
['label' => __('finance.ledger.sales'), 'content' => '${sales}'],
|
||||
['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.actual_commission'), 'content' => '${actual_commission}'],
|
||||
['label' => __('finance.ledger.expected_income'), 'content' => '${expected_income}'],
|
||||
|
|
@ -176,10 +211,10 @@ class LedgerController extends AdminController
|
|||
[
|
||||
'label' => '上报数据',
|
||||
'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.ledger_status'), 'content' => amis()->Mapping()->map(LedgerStatus::labelMap())->value('${ledger_status}'), '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' => 3],
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
|
@ -205,4 +240,26 @@ class LedgerController extends AdminController
|
|||
])->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->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');
|
||||
// 销售统计
|
||||
|
|
|
|||
|
|
@ -15,7 +15,10 @@ class Ledger extends Model
|
|||
{
|
||||
use Filterable, HasDateTimeFormatter, HasFactory;
|
||||
|
||||
protected $appends = ['ledger_difference'];
|
||||
|
||||
protected $attributes = [
|
||||
'new_customers' => 0,
|
||||
'ledger_status' => LedgerStatus::Pending,
|
||||
];
|
||||
|
||||
|
|
@ -26,8 +29,11 @@ class Ledger extends Model
|
|||
protected $fillable = [
|
||||
'store_id',
|
||||
'date',
|
||||
'new_customers',
|
||||
'sales',
|
||||
'expenditure',
|
||||
'handover_amount',
|
||||
'ledger_amount',
|
||||
'expected_commission',
|
||||
'actual_commission',
|
||||
'expected_income',
|
||||
|
|
@ -46,6 +52,18 @@ class Ledger extends Model
|
|||
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
|
||||
{
|
||||
return Attribute::make(
|
||||
|
|
@ -59,18 +77,4 @@ class Ledger extends Model
|
|||
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->bigInteger('store_id')->unsigned()->comment('门店ID');
|
||||
$table->date('date')->comment('日期');
|
||||
$table->integer('new_customers')->unsigned()->default(0)->comment('新增客户');
|
||||
$table->decimal('sales', 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('actual_commission', 10, 2)->nullable()->comment('实际佣金');
|
||||
$table->decimal('expected_income', 10, 2)->comment('预期收益=预计佣金-支出');
|
||||
|
|
|
|||
|
|
@ -146,7 +146,9 @@ class AdminPermissionSeeder extends Seeder
|
|||
'icon' => 'mdi:database',
|
||||
'uri' => '/finance/ledgers',
|
||||
'resource' => ['list', 'update', 'view'],
|
||||
'children' => [],
|
||||
'children' => [
|
||||
'update_ledger_amount' => '编辑总账金额',
|
||||
],
|
||||
],
|
||||
'commission_incomes' => [
|
||||
'name' => '佣金收入',
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@ return [
|
|||
'store' => '门店',
|
||||
'sales' => '销量',
|
||||
'expenditure' => '支出',
|
||||
'new_customers' => '新增客户',
|
||||
'handover_amount' => '交账金额',
|
||||
'ledger_amount' => '总账金额',
|
||||
'ledger_difference' => '总账差异',
|
||||
'expected_commission' => '预期佣金',
|
||||
'actual_commission' => '实际佣金',
|
||||
'expected_income' => '预期收益',
|
||||
|
|
|
|||
Loading…
Reference in New Issue