store-manage/app/Admin/Services/Finance/LedgerService.php

48 lines
1.4 KiB
PHP

<?php
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
{
protected string $modelName = Ledger::class;
protected string $modelFilterName = LedgerFilter::class;
protected array $withRelationships = ['store'];
public function update($primaryKey, $data): bool
{
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,
]);
}
}