Warenwirtschaft: OPT-2 Settings-CRUD-Basisklasse

- Abstrakte SettingCrudController-Basis für die kleinen Stammdaten-CRUDs
- TaxRate/DeliveryTime/DisposalReason/MaterialQuality/Location/SupplierCategory/PackagingMaterial auf ~25-Zeilen-Konfiguration reduziert
- Identische Update*Request-Klassen entfernt (Update nutzt Store-Request, via updateRequestClass() überschreibbar)
- Bilanz -441/+73 Zeilen; Grundlage für die Lagerort-CRUDs in AP-21

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-06 10:05:35 +00:00
parent 65f949dd7a
commit 8c90d95c69
16 changed files with 216 additions and 445 deletions

View file

@ -2,53 +2,28 @@
namespace App\Http\Controllers\Admin\Inventory;
use App\Http\Controllers\Controller;
use App\Http\Requests\Inventory\StoreDisposalReasonRequest;
use App\Http\Requests\Inventory\UpdateDisposalReasonRequest;
use App\Models\DisposalReason;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
class DisposalReasonController extends Controller
class DisposalReasonController extends SettingCrudController
{
public function create(): View
protected function modelClass(): string
{
return view('admin.inventory.disposal-reasons.form', [
'model' => new DisposalReason(['active' => true, 'pos' => 0]),
]);
return DisposalReason::class;
}
public function store(StoreDisposalReasonRequest $request): RedirectResponse
protected function viewPrefix(): string
{
DisposalReason::create($request->validated());
\Session::flash('alert-save', '1');
return redirect()->route('admin.inventory.general');
return 'admin.inventory.disposal-reasons';
}
public function edit(DisposalReason $disposalReason): View
protected function redirectRoute(): string
{
return view('admin.inventory.disposal-reasons.form', [
'model' => $disposalReason,
]);
return 'admin.inventory.general';
}
public function update(UpdateDisposalReasonRequest $request, DisposalReason $disposalReason): RedirectResponse
protected function storeRequestClass(): string
{
$disposalReason->update($request->validated());
\Session::flash('alert-save', '1');
return redirect()->route('admin.inventory.general');
}
public function destroy(DisposalReason $disposalReason): RedirectResponse
{
$disposalReason->delete();
\Session::flash('alert-success', __('Eintrag gelöscht'));
return redirect()->route('admin.inventory.general');
return StoreDisposalReasonRequest::class;
}
}