gruene-seele/resources/views/admin/inventory/suppliers/form.blade.php
Kevin Adametz 78679e0c55 Warenwirtschaft: AP-00 bis AP-08 + aktualisierter Entwicklungsplan
Umsetzung der Warenwirtschafts-/Produktmanagement-Erweiterung gemaess
Entwicklungsplan V4.0:

- AP-00: Regressionsbasis fuer 5.1-Features (ProductPhase51Test)
- AP-01: URL-Bugfixes B1/B2 (suppliers/packaging-items, breitere url-Spalten)
- AP-04/04.1: iPad-taugliche, vereinheitlichte Tabellen-Aktionen
- AP-05: Einstellungen "Allgemein" mit UST-Saetzen (tax_rates) und
  Lieferzeit-Vorlagen (delivery_times, inkl. Tage-Feld)
- AP-06: Lieferanten um Bestellweg, Bestell-Mail/-URL und Lieferzeit erweitert
- AP-07/07.1: INCI um Lieferanten-Mehrfachwahl, UST und Lieferzeit erweitert;
  Lieferanten-Detailansicht im Modal mit pflegbaren INCI-/Verpackungslisten
- AP-08: Einkauf um UST-Snapshot, Netto/Brutto-Automatik und Duplizieren erweitert

Entwicklungsplan aktualisiert: alle Klaerungspunkte (§5) vom Kunden beantwortet
und in die jeweiligen APs eingearbeitet (AP-02/03/09/13/15), neues AP-18
(Hinweise-Doku unter Einstellungen) ergaenzt. Naechster Schritt eindeutig
markiert: AP-09 (Produktion auf Hersteller-Rezeptur, kein Fallback, Warnung).
2026-06-02 16:30:42 +00:00

223 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@extends('layouts.layout-2')
@section('content')
@php
$selectedCategoryIds = old(
'supplier_category_ids',
$model->exists ? $model->supplierCategories->pluck('id')->all() : [],
);
@endphp
<div class="card">
<h6 class="card-header">{{ $model->exists ? __('Lieferant bearbeiten') : __('Lieferant anlegen') }}</h6>
<div class="card-body">
<form method="post"
action="{{ $model->exists ? route('admin.inventory.suppliers.update', $model) : route('admin.inventory.suppliers.store') }}">
@csrf
@if ($model->exists)
@method('PUT')
@endif
<div class="form-group">
<label for="name">{{ __('Name') }}</label>
<input type="text" name="name" id="name"
class="form-control @error('name') is-invalid @enderror" value="{{ old('name', $model->name) }}"
required>
@error('name')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="supplier_category_ids">{{ __('Kategorien') }}</label>
<div class="light-style">
<select name="supplier_category_ids[]" id="supplier_category_ids" class="w-100" multiple="multiple"
data-placeholder="{{ __('Kategorien wählen') }}">
@foreach ($supplierCategories as $cat)
<option value="{{ $cat->id }}" @selected(in_array($cat->id, $selectedCategoryIds, true))>{{ $cat->name }}
</option>
@endforeach
</select>
</div>
@error('supplier_category_ids')
<div class="text-danger small">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="country_id">{{ __('Land') }}</label>
<select name="country_id" id="country_id" class="form-control @error('country_id') is-invalid @enderror"
required>
<option value="">{{ __('Bitte wählen') }}</option>
@foreach ($countries as $country)
<option value="{{ $country->id }}" @selected((string) old('country_id', $model->country_id) === (string) $country->id)>
{{ $country->de }} ({{ $country->code }})
</option>
@endforeach
</select>
@error('country_id')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="url">{{ __('Webseite') }}</label>
<input type="text" name="url" id="url"
class="form-control @error('url') is-invalid @enderror" value="{{ old('url', $model->url) }}"
placeholder="https://">
@error('url')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
@php
$orderMethod = old('order_method', $model->order_method);
@endphp
<div class="form-row">
<div class="form-group col-md-6">
<label for="order_method">{{ __('Bestellweg') }}</label>
<select name="order_method" id="order_method"
class="form-control custom-select @error('order_method') is-invalid @enderror">
<option value="" @selected($orderMethod === null || $orderMethod === '')>{{ __('Keine Angabe') }}</option>
<option value="email" @selected($orderMethod === 'email')>{{ __('Per E-Mail') }}</option>
<option value="online_shop" @selected($orderMethod === 'online_shop')>{{ __('Online-Shop') }}</option>
</select>
@error('order_method')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group col-md-4">
<label for="delivery_time">{{ __('Lieferzeit') }}</label>
<input type="text" name="delivery_time" id="delivery_time" list="delivery_time_options"
class="form-control @error('delivery_time') is-invalid @enderror"
value="{{ old('delivery_time', $model->delivery_time) }}"
placeholder="{{ __('z. B. 35 Werktage') }}">
<datalist id="delivery_time_options">
@foreach ($deliveryTimes as $deliveryTime)
<option value="{{ $deliveryTime->label }}" data-days="{{ $deliveryTime->days }}"></option>
@endforeach
</datalist>
@error('delivery_time')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group col-md-2">
<label for="delivery_time_days">{{ __('Tage') }}</label>
<input type="number" name="delivery_time_days" id="delivery_time_days" min="0" max="65535"
class="form-control @error('delivery_time_days') is-invalid @enderror"
value="{{ old('delivery_time_days', $model->delivery_time_days) }}"
placeholder="{{ __('z. B. 5') }}">
@error('delivery_time_days')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<div class="form-group js-order-email" @if ($orderMethod !== 'email') style="display: none;" @endif>
<label for="order_email">{{ __('Bestell-E-Mail') }} <small
class="text-muted">{{ __('(falls abweichend)') }}</small></label>
<input type="email" name="order_email" id="order_email"
class="form-control @error('order_email') is-invalid @enderror"
value="{{ old('order_email', $model->order_email) }}">
@error('order_email')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group js-order-url" @if ($orderMethod !== 'online_shop') style="display: none;" @endif>
<label for="order_url">{{ __('Bestell-URL') }} <small
class="text-muted">{{ __('(falls abweichend)') }}</small></label>
<input type="text" name="order_url" id="order_url"
class="form-control @error('order_url') is-invalid @enderror"
value="{{ old('order_url', $model->order_url) }}" placeholder="https://">
@error('order_url')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="contact_person">{{ __('Ansprechpartner') }}</label>
<input type="text" name="contact_person" id="contact_person"
class="form-control @error('contact_person') is-invalid @enderror"
value="{{ old('contact_person', $model->contact_person) }}">
@error('contact_person')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group col-md-6">
<label for="email">{{ __('E-Mail') }}</label>
<input type="email" name="email" id="email"
class="form-control @error('email') is-invalid @enderror"
value="{{ old('email', $model->email) }}">
@error('email')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
</div>
<div class="form-group">
<label for="phone">{{ __('Telefon') }}</label>
<input type="text" name="phone" id="phone"
class="form-control @error('phone') is-invalid @enderror"
value="{{ old('phone', $model->phone) }}">
@error('phone')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label for="notes">{{ __('Notizen') }}</label>
<textarea name="notes" id="notes" rows="3" class="form-control @error('notes') is-invalid @enderror">{{ old('notes', $model->notes) }}</textarea>
@error('notes')
<div class="invalid-feedback">{{ $message }}</div>
@enderror
</div>
<div class="form-group">
<label class="custom-control custom-checkbox">
<input type="checkbox" name="active" value="1" class="custom-control-input"
@checked(old('active', $model->active))>
<span class="custom-control-label">{{ __('Aktiv') }}</span>
</label>
</div>
<button type="submit" class="btn btn-primary">{{ __('Speichern') }}</button>
<a href="{{ route('admin.inventory.suppliers.index') }}"
class="btn btn-outline-secondary">{{ __('Zurück') }}</a>
</form>
</div>
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function() {
$('#supplier_category_ids').select2({
theme: 'default',
placeholder: '{{ __('Kategorien wählen') }}',
width: '100%',
closeOnSelect: false
});
function toggleOrderFields() {
var method = $('#order_method').val();
$('.js-order-email').toggle(method === 'email');
$('.js-order-url').toggle(method === 'online_shop');
}
$('#order_method').on('change', toggleOrderFields);
toggleOrderFields();
$('#delivery_time').on('input change', function () {
var value = $(this).val();
var option = $('#delivery_time_options option').filter(function () {
return this.value === value;
}).first();
if (option.length && option.data('days') !== undefined && option.data('days') !== '') {
$('#delivery_time_days').val(option.data('days'));
}
});
});
</script>
@endsection