generated from liutk/owl-admin-base
Update
parent
5935145ce0
commit
dcdaa909c7
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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],
|
||||
]),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,4 +13,9 @@ class ReimbursementService extends BaseService
|
|||
protected string $modelFilterName = ReimbursementFilter::class;
|
||||
|
||||
protected array $withRelationships = ['employee', 'type'];
|
||||
|
||||
public function sortColumn()
|
||||
{
|
||||
return 'id';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue