Neue Anforderungen (docs/) interpretiert und als Entwicklungsplan V5.0 (AP-20 bis AP-28) aufgenommen; erste drei Pakete umgesetzt: AP-26 Ausschuss-Gründe konfigurierbar: - Stammdaten-Tabelle disposal_reasons + CRUD unter Einstellungen → Allgemein - StockDisposalController liest aktive DB-Gründe statt hartkodierter Liste - Seeder übernimmt die bisherigen 6 Gründe idempotent AP-25 Lieferbestand — Datum statt Tage: - "Nicht vorrätig" wird über Datepicker "Wieder lieferbar ab" gepflegt; Resttage-Hinweis zählt täglich automatisch herunter - Interne Bestellliste wieder kaufbar: Hinweis erscheint zusätzlich zu den Mengen-Buttons (VP entscheidet selbst) AP-22 Produktbestand-Erweiterungen: - Default-Sortierung nach Dringlichkeit, Status-Kopf toggelt - Alle vier Status-Kacheln als Filter klickbar - Neue Spalte "Verbrauch/Monat" (Ø Abgänge der letzten 6 Monate) - Produkt-Flag "Im Produktbestand anzeigen" (products.show_in_product_stock) Tests: 77 grün (DisposalReasonSettings 8, ProductOutOfStock 8, ProductStock 13 + Regression). Hinweise-Doku + Plan-Protokoll fortgeschrieben; nächster Schritt laut Plan: AP-21 (INCI-Erweiterungen). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
176 lines
9.1 KiB
PHP
176 lines
9.1 KiB
PHP
@extends('layouts.layout-2')
|
||
|
||
@section('content')
|
||
@include('admin.inventory.partials.wawi-ui')
|
||
|
||
<div class="wawi-page">
|
||
<div class="wawi-page-head">
|
||
<div>
|
||
<h1 class="wawi-page-head__title">{{ __('Einstellungen') }}</h1>
|
||
<p class="wawi-page-head__subtitle">{{ __('Umsatzsteuersätze, Lieferzeit-Vorlagen und Ausschuss-Gründe') }}</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="wawi-card">
|
||
<div class="wawi-card__header">
|
||
<span>{{ __('Umsatzsteuersätze') }}</span>
|
||
<a href="{{ route('admin.inventory.tax-rates.create') }}" class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
|
||
</div>
|
||
<div class="table-responsive">
|
||
<table class="table wawi-table">
|
||
<thead>
|
||
<tr>
|
||
<th style="max-width: 60px;"> </th>
|
||
<th>{{ __('Name') }}</th>
|
||
<th>{{ __('Satz') }}</th>
|
||
<th>{{ __('Status') }}</th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
@forelse($taxRates as $taxRate)
|
||
<tr>
|
||
<td>
|
||
<a href="{{ route('admin.inventory.tax-rates.edit', $taxRate) }}"
|
||
class="btn icon-btn btn-sm btn-primary">
|
||
<span class="far fa-edit"></span>
|
||
</a>
|
||
</td>
|
||
<td>{{ $taxRate->name }}</td>
|
||
<td>{{ number_format($taxRate->percent, 2, ',', '.') }} %</td>
|
||
<td>
|
||
@if ($taxRate->active)
|
||
<span class="wawi-pill wawi-pill--ok">{{ __('Aktiv') }}</span>
|
||
@else
|
||
<span class="wawi-pill wawi-pill--danger">{{ __('Inaktiv') }}</span>
|
||
@endif
|
||
</td>
|
||
<td>
|
||
<form action="{{ route('admin.inventory.tax-rates.destroy', $taxRate) }}" method="post"
|
||
class="d-inline" onsubmit="return confirm('{{ __('Really delete entry?') }}');">
|
||
@csrf
|
||
@method('DELETE')
|
||
<button type="submit" class="btn btn-link text-danger p-0"
|
||
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="5"><div class="wawi-empty">{{ __('Noch keine Umsatzsteuersätze angelegt.') }}</div></td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="wawi-card">
|
||
<div class="wawi-card__header">
|
||
<span>{{ __('Lieferzeit-Vorlagen') }}</span>
|
||
<a href="{{ route('admin.inventory.delivery-times.create') }}" class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
|
||
</div>
|
||
<div class="table-responsive">
|
||
<table class="table wawi-table">
|
||
<thead>
|
||
<tr>
|
||
<th style="max-width: 60px;"> </th>
|
||
<th>{{ __('Bezeichnung') }}</th>
|
||
<th>{{ __('Tage') }}</th>
|
||
<th>{{ __('Status') }}</th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
@forelse($deliveryTimes as $deliveryTime)
|
||
<tr>
|
||
<td>
|
||
<a href="{{ route('admin.inventory.delivery-times.edit', $deliveryTime) }}"
|
||
class="btn icon-btn btn-sm btn-primary">
|
||
<span class="far fa-edit"></span>
|
||
</a>
|
||
</td>
|
||
<td>{{ $deliveryTime->label }}</td>
|
||
<td>{{ $deliveryTime->days !== null ? $deliveryTime->days : '–' }}</td>
|
||
<td>
|
||
@if ($deliveryTime->active)
|
||
<span class="wawi-pill wawi-pill--ok">{{ __('Aktiv') }}</span>
|
||
@else
|
||
<span class="wawi-pill wawi-pill--danger">{{ __('Inaktiv') }}</span>
|
||
@endif
|
||
</td>
|
||
<td>
|
||
<form action="{{ route('admin.inventory.delivery-times.destroy', $deliveryTime) }}"
|
||
method="post" class="d-inline"
|
||
onsubmit="return confirm('{{ __('Really delete entry?') }}');">
|
||
@csrf
|
||
@method('DELETE')
|
||
<button type="submit" class="btn btn-link text-danger p-0"
|
||
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="5"><div class="wawi-empty">{{ __('Noch keine Lieferzeit-Vorlagen angelegt.') }}</div></td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="wawi-card">
|
||
<div class="wawi-card__header">
|
||
<span>{{ __('Ausschuss-Gründe') }}</span>
|
||
<a href="{{ route('admin.inventory.disposal-reasons.create') }}" class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
|
||
</div>
|
||
<div class="table-responsive">
|
||
<table class="table wawi-table">
|
||
<thead>
|
||
<tr>
|
||
<th style="max-width: 60px;"> </th>
|
||
<th>{{ __('Bezeichnung') }}</th>
|
||
<th>{{ __('Status') }}</th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
@forelse($disposalReasons as $disposalReason)
|
||
<tr>
|
||
<td>
|
||
<a href="{{ route('admin.inventory.disposal-reasons.edit', $disposalReason) }}"
|
||
class="btn icon-btn btn-sm btn-primary">
|
||
<span class="far fa-edit"></span>
|
||
</a>
|
||
</td>
|
||
<td>{{ $disposalReason->label }}</td>
|
||
<td>
|
||
@if ($disposalReason->active)
|
||
<span class="wawi-pill wawi-pill--ok">{{ __('Aktiv') }}</span>
|
||
@else
|
||
<span class="wawi-pill wawi-pill--danger">{{ __('Inaktiv') }}</span>
|
||
@endif
|
||
</td>
|
||
<td>
|
||
<form action="{{ route('admin.inventory.disposal-reasons.destroy', $disposalReason) }}"
|
||
method="post" class="d-inline"
|
||
onsubmit="return confirm('{{ __('Really delete entry?') }}');">
|
||
@csrf
|
||
@method('DELETE')
|
||
<button type="submit" class="btn btn-link text-danger p-0"
|
||
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="4"><div class="wawi-empty">{{ __('Noch keine Ausschuss-Gründe angelegt.') }}</div></td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
@endsection
|