generated from liutk/owl-admin-base
78 lines
3.1 KiB
PHP
78 lines
3.1 KiB
PHP
<?php
|
|
|
|
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;
|
|
|
|
class StoreMasterCommissionService extends BaseService
|
|
{
|
|
protected array $withRelationships = ['store', 'master'];
|
|
|
|
protected string $modelName = StoreMasterCommission::class;
|
|
|
|
protected string $modelFilterName = StoreMasterCommissionFilter::class;
|
|
|
|
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])
|
|
);
|
|
|
|
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'),
|
|
]);
|
|
|
|
$model = $this->query()->whereKey($primaryKey)->firstOrFail();
|
|
|
|
if ($model->approval_status !== StoreMasterCommissionApprovalStatus::Rejected) {
|
|
abort(400, '只能编辑状态是“未通过”的店长提成');
|
|
}
|
|
|
|
$attributes = array_merge(
|
|
$validated, ['approval_status' => StoreMasterCommissionApprovalStatus::Pending]
|
|
);
|
|
|
|
return $model->update($attributes);
|
|
}
|
|
}
|