feat(basicdata): tambahkan fitur relasi parent-child pada cabang
- Menambahkan kolom `parent_id` pada tabel `branches` dengan migrasi baru. - Update model `Branch`: - Menambahkan relasi `parent()` untuk mendapatkan cabang induk. - Menambahkan relasi `children()` untuk mendapatkan anak cabang. - Update `BranchController`: - Menampilkan daftar cabang induk saat membuat atau mengedit cabang. - Cek validasi agar cabang tidak bisa menjadi induk dirinya sendiri. - Tambahkan larangan hapus cabang jika memiliki anak cabang, baik untuk hapus tunggal maupun multiple. - Update validation rules pada `BranchRequest` untuk memastikan validitas `parent_id`. - Update tampilan: - Formulir pembuatan/edit cabang: Menampilkan dropdown untuk memilih cabang induk. - Daftar cabang: Menampilkan kolom untuk cabang induk. - Tambahkan test unit: - Validasi relasi parent-child pada penyimpanan dan pembaruan cabang. - Melarang penghapusan cabang yang memiliki anak. - Memastikan perilaku relasi parent-child sesuai ekspektasi. Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
@@ -46,6 +46,26 @@
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||
<label class="form-label max-w-56">
|
||||
Parent Branch
|
||||
</label>
|
||||
<div class="flex flex-wrap items-baseline w-full">
|
||||
<select class="input @error('parent_id') border-danger bg-danger-light @enderror" name="parent_id">
|
||||
<option value="">-- Select Parent Branch --</option>
|
||||
@foreach($branches as $parentBranch)
|
||||
@if(!isset($branch->id) || $parentBranch->id != $branch->id)
|
||||
<option value="{{ $parentBranch->id }}" {{ (isset($branch->parent_id) && $branch->parent_id == $parentBranch->id) ? 'selected' : '' }}>
|
||||
{{ $parentBranch->code }} - {{ $parentBranch->name }}
|
||||
</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
@error('parent_id')
|
||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-end">
|
||||
@if(isset($branch->id))
|
||||
@can('basic-data.update')
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
<span class="sort"> <span class="sort-label"> Cabang </span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[250px]" data-datatable-column="name">
|
||||
<span class="sort"> <span class="sort-label"> Cabang Induk</span>
|
||||
<span class="sort-icon"> </span> </span>
|
||||
</th>
|
||||
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -168,6 +172,9 @@
|
||||
name: {
|
||||
title: 'Cabang',
|
||||
},
|
||||
parent_id: {
|
||||
title: 'Cabang Induk',
|
||||
},
|
||||
actions: {
|
||||
title: 'Status',
|
||||
render: (item, data) => {
|
||||
|
||||
Reference in New Issue
Block a user