上报数据增加字段

main
Jing Li 2024-04-01 20:56:48 +08:00
parent 474e9a4364
commit 03797a1e7c
6 changed files with 92 additions and 21 deletions

View File

@ -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(),
]),
])
);
}
} }

View File

@ -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');
// 销售统计 // 销售统计

View File

@ -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(),
);
}
} }

View File

@ -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('预期收益=预计佣金-支出');

View File

@ -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' => '佣金收入',

View File

@ -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' => '预期收益',