diff --git a/app/Admin/Controllers/Finance/CommissionIncomeController.php b/app/Admin/Controllers/Finance/CommissionIncomeController.php index 6a6e201..068a5c6 100644 --- a/app/Admin/Controllers/Finance/CommissionIncomeController.php +++ b/app/Admin/Controllers/Finance/CommissionIncomeController.php @@ -4,10 +4,7 @@ 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; diff --git a/app/Admin/Controllers/Finance/LedgerController.php b/app/Admin/Controllers/Finance/LedgerController.php index 497c559..716caaa 100644 --- a/app/Admin/Controllers/Finance/LedgerController.php +++ b/app/Admin/Controllers/Finance/LedgerController.php @@ -4,12 +4,11 @@ namespace App\Admin\Controllers\Finance; use App\Admin\Controllers\AdminController; use App\Admin\Services\Finance\LedgerService; -use App\Enums\LedgerStatus; use App\Models\Ledger; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; -use Illuminate\Validation\Rule; use Slowlyo\OwlAdmin\Admin; +use Slowlyo\OwlAdmin\Renderers\DrawerAction; use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Page; @@ -50,6 +49,9 @@ class LedgerController extends AdminController return $this->response()->success($page); } + /** + * 修改总账金额 + */ public function updateLedgerAmount($id, Request $request) { $validator = Validator::make( @@ -62,15 +64,13 @@ class LedgerController extends AdminController ], ); - if ($validator->fails()) { - return $this->response()->fail($validator->errors()->first()); - } + admin_abort_if($validator->fails(), $validator->errors()->first()); + /** @var Ledger */ $ledger = Ledger::findOrFail($id); - - $ledger->update([ + $ledger->forceFill([ 'ledger_amount' => $request->input('ledger_amount'), - ]); + ])->save(); return $this->response()->success(null, '修改成功'); } @@ -90,9 +90,10 @@ class LedgerController extends AdminController ->labelField('title') ->valueField('id') ->clearable() - ->columnRatio(3), + ->columnRatio(4), amis()->DateRangeControl('date_range', __('finance.ledger.date')) - ->valueFormat('YYYY-MM-DD'), + ->valueFormat('YYYY-MM-DD') + ->columnRatio(4), ]), ])) ->columns([ @@ -113,9 +114,6 @@ class LedgerController extends AdminController $this->rowActions([ $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}'), $this->rowShowButton() ->visible(Admin::user()->can('admin.finance.ledgers.view')), ]), @@ -165,19 +163,18 @@ class LedgerController extends AdminController 'span' => 3 ], ['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], ]), ]); } - protected function rowEditLedgerAmountButton() + protected function rowEditLedgerAmountButton(): DrawerAction { - return amis()->DialogAction() + return amis()->DrawerAction() ->icon('fa-regular fa-pen-to-square') ->label(__('finance.ledger.ledger_amount')) ->level('link') - ->dialog( - amis()->Dialog()->title(__('finance.ledger.ledger_amount'))->body([ + ->drawer( + amis()->Drawer()->title(__('finance.ledger.ledger_amount'))->body([ amis()->Form()->title('') ->api('post:'.admin_url('finance/ledgers/${id}/ledger-amount')) ->body([ @@ -188,7 +185,7 @@ class LedgerController extends AdminController ->showSteps(false) ->required(), ]), - ]) + ])->size('lg') ); } } diff --git a/app/Admin/Controllers/Finance/ReimbursementController.php b/app/Admin/Controllers/Finance/ReimbursementController.php index 3cb5280..09d6965 100644 --- a/app/Admin/Controllers/Finance/ReimbursementController.php +++ b/app/Admin/Controllers/Finance/ReimbursementController.php @@ -4,14 +4,7 @@ namespace App\Admin\Controllers\Finance; use App\Admin\Controllers\AdminController; use App\Admin\Services\Finance\ReimbursementService; -use App\Enums\ReimbursementStatus; -use App\Models\Reimbursement; -use App\Traits\HasCheckActions; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; -use Illuminate\Validation\Rule; use Slowlyo\OwlAdmin\Admin; -use Slowlyo\OwlAdmin\Renderers\DialogAction; use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Page; @@ -20,8 +13,6 @@ use Slowlyo\OwlAdmin\Renderers\Page; */ class ReimbursementController extends AdminController { - use HasCheckActions; - protected string $serviceName = ReimbursementService::class; public function list(): Page @@ -40,16 +31,10 @@ class ReimbursementController extends AdminController ->source(admin_url('api/keywords/tree-list?parent_key=reimbursement_type')) ->labelField('name') ->valueField('key'), - // amis()->SelectControl('status', __('finance.reimbursement.status')) - // ->multiple() - // ->options(ReimbursementStatus::options()), - ]), - amis()->GroupControl()->mode('horizontal')->body([ amis()->InputDatetimeRange() - ->name('datetime_range') + ->name('created_at') ->label(__('finance.reimbursement.created_at')) - ->format('YYYY-MM-DD HH:mm:ss') - ->columnRatio(4), + ->format('YYYY-MM-DD HH:mm:ss'), ]), ])) ->columns([ @@ -58,11 +43,6 @@ class ReimbursementController extends AdminController amis()->TableColumn()->name('expense')->label(__('finance.reimbursement.expense')), amis()->TableColumn()->name('reason')->label(__('finance.reimbursement.reason')), amis()->TableColumn()->name('type.name')->label(__('finance.reimbursement.type')), - // amis()->TableColumn() - // ->name('reimbursement_status') - // ->label(__('finance.reimbursement.status')) - // ->type('mapping') - // ->map(ReimbursementStatus::labelMap()), amis()->TableColumn()->name('created_at')->label(__('finance.reimbursement.created_at')), $this->rowActions([ $this->rowShowButton()->visible(Admin::user()->can('admin.finance.reimbursements.view')), @@ -80,7 +60,6 @@ class ReimbursementController extends AdminController ['label' => __('finance.reimbursement.expense'), 'content' => '${expense}'], ['label' => __('finance.reimbursement.reason'), 'content' => '${reason}'], ['label' => __('finance.reimbursement.type'), 'content' => '${type.name}'], - // ['label' => __('finance.reimbursement.status'), 'content' => amis()->Mapping()->map(ReimbursementStatus::labelMap())->value('${reimbursement_status}')], ['label' => __('finance.reimbursement.created_at'), 'content' => '${created_at}'], ['label' => __('finance.reimbursement.photos'), 'content' => amis()->Images()->enlargeAble()->source('${photos}')->enlargeWithGallary(), 'span' => 3], ]), diff --git a/app/Admin/Controllers/Finance/StoreMasterCommissionController.php b/app/Admin/Controllers/Finance/StoreMasterCommissionController.php index 00052a0..5aa0531 100644 --- a/app/Admin/Controllers/Finance/StoreMasterCommissionController.php +++ b/app/Admin/Controllers/Finance/StoreMasterCommissionController.php @@ -4,11 +4,6 @@ namespace App\Admin\Controllers\Finance; use App\Admin\Controllers\AdminController; use App\Admin\Services\Finance\StoreMasterCommissionService; -use App\Enums\StoreMasterCommissionApprovalStatus; -use App\Models\StoreMasterCommission; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Validator; -use Illuminate\Validation\Rule; use Slowlyo\OwlAdmin\Admin; use Slowlyo\OwlAdmin\Renderers\Form; use Slowlyo\OwlAdmin\Renderers\Page; diff --git a/app/Admin/Controllers/Finance/StoreStatisticController.php b/app/Admin/Controllers/Finance/StoreStatisticController.php index 9861b0e..e2dfba9 100644 --- a/app/Admin/Controllers/Finance/StoreStatisticController.php +++ b/app/Admin/Controllers/Finance/StoreStatisticController.php @@ -3,7 +3,6 @@ namespace App\Admin\Controllers\Finance; use App\Admin\Controllers\AdminController; -use App\Admin\Filters\LedgerFilter; use App\Admin\Filters\LedgerItemFilter; use App\Admin\Filters\StoreFilter; use App\Models\Ledger; diff --git a/app/Admin/Filters/LedgerFilter.php b/app/Admin/Filters/LedgerFilter.php index 6c2e6fc..91b08d7 100644 --- a/app/Admin/Filters/LedgerFilter.php +++ b/app/Admin/Filters/LedgerFilter.php @@ -17,11 +17,6 @@ class LedgerFilter extends ModelFilter $this->whereBetween('date', explode(',', $dateRange)); } - public function status($status) - { - $this->whereIn('ledger_status', explode(',', $status)); - } - public function region($region) { if (array_key_exists('store_id', $this->input) || ! is_array($region)) { diff --git a/app/Admin/Filters/ReimbursementFilter.php b/app/Admin/Filters/ReimbursementFilter.php index ccd1a1d..1f53c3e 100644 --- a/app/Admin/Filters/ReimbursementFilter.php +++ b/app/Admin/Filters/ReimbursementFilter.php @@ -16,9 +16,9 @@ class ReimbursementFilter extends ModelFilter $this->where('reimbursement_type_id', explode(',', $id)); } - public function datetimeRange($datetimeRange) + public function createdAt($createdAt) { - $this->whereBetween('created_at', explode(',', $datetimeRange)); + $this->whereBetween('created_at', explode(',', $createdAt)); } public function status($status) diff --git a/app/Admin/Services/Finance/LedgerService.php b/app/Admin/Services/Finance/LedgerService.php index 6dae004..a2294b9 100644 --- a/app/Admin/Services/Finance/LedgerService.php +++ b/app/Admin/Services/Finance/LedgerService.php @@ -4,9 +4,7 @@ namespace App\Admin\Services\Finance; use App\Admin\Filters\LedgerFilter; use App\Admin\Services\BaseService; -use App\Enums\LedgerStatus; use App\Models\Ledger; -use Illuminate\Support\Facades\Validator; class LedgerService extends BaseService { @@ -16,32 +14,8 @@ class LedgerService extends BaseService protected array $withRelationships = ['store']; - public function update($primaryKey, $data): bool + public function sortColumn() { - Validator::validate($data, [ - 'actual_commission' => ['bail', 'required', 'numeric'], - 'actual_income' => ['bail', 'required', 'numeric'], - ], [], [ - 'actual_commission' => __('finance.ledger.actual_commission'), - 'actual_income' => __('finance.ledger.actual_income'), - ]); - - $model = $this->query()->whereKey($primaryKey)->firstOrFail(); - - switch ($model->ledger_status) { - case LedgerStatus::Processing: - abort(400, '不能编辑待审核的上报数据'); - break; - - case LedgerStatus::Passed: - abort(400, '不能编辑已完成的上报数据'); - break; - } - - return $model->update([ - 'actual_commission' => $data['actual_commission'], - 'actual_income' => $data['actual_income'], - 'ledger_status' => LedgerStatus::Processing, - ]); + return 'id'; } } diff --git a/app/Admin/Services/Finance/ReimbursementService.php b/app/Admin/Services/Finance/ReimbursementService.php index fd3c72e..661d5e6 100644 --- a/app/Admin/Services/Finance/ReimbursementService.php +++ b/app/Admin/Services/Finance/ReimbursementService.php @@ -13,4 +13,9 @@ class ReimbursementService extends BaseService protected string $modelFilterName = ReimbursementFilter::class; protected array $withRelationships = ['employee', 'type']; + + public function sortColumn() + { + return 'id'; + } } diff --git a/app/Admin/Services/Finance/StoreMasterCommissionService.php b/app/Admin/Services/Finance/StoreMasterCommissionService.php index fded0e0..8275e65 100644 --- a/app/Admin/Services/Finance/StoreMasterCommissionService.php +++ b/app/Admin/Services/Finance/StoreMasterCommissionService.php @@ -4,7 +4,6 @@ namespace App\Admin\Services\Finance; use App\Admin\Filters\StoreMasterCommissionFilter; use App\Admin\Services\BaseService; -use App\Enums\StoreMasterCommissionApprovalStatus; use App\Models\Store; use App\Models\StoreMasterCommission; use Illuminate\Support\Facades\Validator; @@ -19,59 +18,78 @@ class StoreMasterCommissionService extends BaseService public function store($data): bool { - $validated = Validator::validate($data, [ - 'month' => ['bail', 'required', 'date_format:Y-m'], - 'store_id' => ['bail', 'required', 'int'], - 'commission' => ['bail', 'required', 'numeric'], - 'daily_expenses' => ['bail', 'required', 'numeric'], - 'employee_expenses' => ['bail', 'required', 'numeric'], - 'other_expenses' => ['bail', 'required', 'numeric'], - ], [], [ - 'month' => __('finance.store_master_commission.month'), - 'store_id' => __('finance.store_master_commission.store'), - 'commission' => __('finance.store_master_commission.commission'), - 'daily_expenses' => __('finance.store_master_commission.daily_expenses'), - 'employee_expenses' => __('finance.store_master_commission.employee_expenses'), - 'other_expenses' => __('finance.store_master_commission.other_expenses'), - ]); - - $store = Store::findOrFail($validated['store_id']); - - $this->modelName::create( - array_merge($validated, ['store_master_id' => $store->master_id]) + $validator = Validator::make( + data: $data, + rules: [ + 'month' => ['bail', 'required', 'date_format:Y-m'], + 'store_id' => ['bail', 'required', 'int'], + 'commission' => ['bail', 'required', 'numeric'], + 'daily_expenses' => ['bail', 'required', 'numeric'], + 'employee_expenses' => ['bail', 'required', 'numeric'], + 'other_expenses' => ['bail', 'required', 'numeric'], + ], + attributes: [ + 'month' => __('finance.store_master_commission.month'), + 'store_id' => __('finance.store_master_commission.store'), + 'commission' => __('finance.store_master_commission.commission'), + 'daily_expenses' => __('finance.store_master_commission.daily_expenses'), + 'employee_expenses' => __('finance.store_master_commission.employee_expenses'), + 'other_expenses' => __('finance.store_master_commission.other_expenses'), + ], ); + admin_abort_if($validator->fails(), $validator->errors()->first()); + + $attributes = $validator->validated(); + + $store = Store::findOrFail($attributes['store_id']); + + $attributes['store_master_id'] = $store->master_id; + + $this->modelName::create($attributes); + return true; } public function update($primaryKey, $data): bool { - $validated = Validator::validate($data, [ - 'month' => ['bail', 'required', 'date_format:Y-m'], - 'store_id' => ['bail', 'required', 'int'], - 'commission' => ['bail', 'required', 'numeric'], - 'daily_expenses' => ['bail', 'required', 'numeric'], - 'employee_expenses' => ['bail', 'required', 'numeric'], - 'other_expenses' => ['bail', 'required', 'numeric'], - ], [], [ - 'month' => __('finance.store_master_commission.month'), - 'store_id' => __('finance.store_master_commission.store'), - 'commission' => __('finance.store_master_commission.commission'), - 'daily_expenses' => __('finance.store_master_commission.daily_expenses'), - 'employee_expenses' => __('finance.store_master_commission.employee_expenses'), - 'other_expenses' => __('finance.store_master_commission.other_expenses'), - ]); + $validator = Validator::make( + data: $data, + rules: [ + 'month' => ['filled', 'required', 'date_format:Y-m'], + 'store_id' => ['filled', 'required', 'int'], + 'commission' => ['filled', 'required', 'numeric'], + 'daily_expenses' => ['filled', 'required', 'numeric'], + 'employee_expenses' => ['filled', 'required', 'numeric'], + 'other_expenses' => ['filled', 'required', 'numeric'], + ], + attributes: [ + 'month' => __('finance.store_master_commission.month'), + 'store_id' => __('finance.store_master_commission.store'), + 'commission' => __('finance.store_master_commission.commission'), + 'daily_expenses' => __('finance.store_master_commission.daily_expenses'), + 'employee_expenses' => __('finance.store_master_commission.employee_expenses'), + 'other_expenses' => __('finance.store_master_commission.other_expenses'), + ], + ); + + admin_abort_if($validator->fails(), $validator->errors()->first()); + + $attributes = $validator->validated(); $model = $this->query()->whereKey($primaryKey)->firstOrFail(); - if ($model->approval_status !== StoreMasterCommissionApprovalStatus::Rejected) { - abort(400, '只能编辑状态是“未通过”的店长提成'); + // 如果门店发生改变,则更新店长 + if ($model->store_id != $attributes['store_id']) { + $store = Store::findOrFail($attributes['store_id']); + $attributes['store_master_id'] = $store->master_id; } - $attributes = array_merge( - $validated, ['approval_status' => StoreMasterCommissionApprovalStatus::Pending] - ); - return $model->update($attributes); } + + public function sortColumn() + { + return 'id'; + } }