Warenwirtschaft: AP-21 INCI-Erweiterungen
- Lagerort-Stammdaten Raum/Regal/Fach (storage_rooms/shelves/slots) mit CRUD auf Einstellungen -> Allgemein (SettingCrudController-Kinder, ein gemeinsamer StoreStorageSegmentRequest, generische Partials setting-list-card/-segment-form) - Ingredient: alt_name (Handelsname), Lagerort-FKs + storageLabel(), scopeUsedInActiveRecipes() - INCI-Formular: Lieferanten-Repeater mit Shop-URL je Lieferant (leer = Mail), Alternativname, drei Lagerort-Dropdowns - INCI-Liste: Filter "nur aktive (in Rezeptur aktiver Produkte)" + Spalte Alternativer Name - Rohstoffbestand-Detail: Bestellweg pro INCI-Lieferant (Pivot-URL statt order_method-Fallback), Kopf zeigt Alternativname + Lagerort - Hinweise-Doku fortgeschrieben inkl. Chargen-Format-Entscheid ttmmjj (AP-24) Tests: StorageSettingsTest, IngredientActiveRecipeFilterTest, IngredientOrderFieldsTest (Repeater-Format), RawMaterialStockTest erweitert (volle Suite 170 gruen, 613 Assertions) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
8c90d95c69
commit
d05df498d3
34 changed files with 1091 additions and 45 deletions
|
|
@ -5,6 +5,9 @@ namespace App\Http\Controllers\Admin\Inventory;
|
|||
use App\Http\Controllers\Controller;
|
||||
use App\Models\DeliveryTime;
|
||||
use App\Models\DisposalReason;
|
||||
use App\Models\StorageRoom;
|
||||
use App\Models\StorageShelf;
|
||||
use App\Models\StorageSlot;
|
||||
use App\Models\TaxRate;
|
||||
use Illuminate\Contracts\View\View;
|
||||
|
||||
|
|
@ -16,6 +19,9 @@ class GeneralSettingController extends Controller
|
|||
'taxRates' => TaxRate::query()->orderBy('pos')->orderBy('percent')->get(),
|
||||
'deliveryTimes' => DeliveryTime::query()->orderBy('pos')->orderBy('label')->get(),
|
||||
'disposalReasons' => DisposalReason::query()->orderBy('pos')->orderBy('label')->get(),
|
||||
'storageRooms' => StorageRoom::query()->orderBy('pos')->orderBy('label')->get(),
|
||||
'storageShelves' => StorageShelf::query()->orderBy('pos')->orderBy('label')->get(),
|
||||
'storageSlots' => StorageSlot::query()->orderBy('pos')->orderBy('label')->get(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Inventory;
|
||||
|
||||
use App\Http\Requests\Inventory\StoreStorageSegmentRequest;
|
||||
use App\Models\StorageRoom;
|
||||
|
||||
class StorageRoomController extends SettingCrudController
|
||||
{
|
||||
protected function modelClass(): string
|
||||
{
|
||||
return StorageRoom::class;
|
||||
}
|
||||
|
||||
protected function viewPrefix(): string
|
||||
{
|
||||
return 'admin.inventory.storage-rooms';
|
||||
}
|
||||
|
||||
protected function redirectRoute(): string
|
||||
{
|
||||
return 'admin.inventory.general';
|
||||
}
|
||||
|
||||
protected function storeRequestClass(): string
|
||||
{
|
||||
return StoreStorageSegmentRequest::class;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Inventory;
|
||||
|
||||
use App\Http\Requests\Inventory\StoreStorageSegmentRequest;
|
||||
use App\Models\StorageShelf;
|
||||
|
||||
class StorageShelfController extends SettingCrudController
|
||||
{
|
||||
protected function modelClass(): string
|
||||
{
|
||||
return StorageShelf::class;
|
||||
}
|
||||
|
||||
protected function viewPrefix(): string
|
||||
{
|
||||
return 'admin.inventory.storage-shelves';
|
||||
}
|
||||
|
||||
protected function redirectRoute(): string
|
||||
{
|
||||
return 'admin.inventory.general';
|
||||
}
|
||||
|
||||
protected function storeRequestClass(): string
|
||||
{
|
||||
return StoreStorageSegmentRequest::class;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin\Inventory;
|
||||
|
||||
use App\Http\Requests\Inventory\StoreStorageSegmentRequest;
|
||||
use App\Models\StorageSlot;
|
||||
|
||||
class StorageSlotController extends SettingCrudController
|
||||
{
|
||||
protected function modelClass(): string
|
||||
{
|
||||
return StorageSlot::class;
|
||||
}
|
||||
|
||||
protected function viewPrefix(): string
|
||||
{
|
||||
return 'admin.inventory.storage-slots';
|
||||
}
|
||||
|
||||
protected function redirectRoute(): string
|
||||
{
|
||||
return 'admin.inventory.general';
|
||||
}
|
||||
|
||||
protected function storeRequestClass(): string
|
||||
{
|
||||
return StoreStorageSegmentRequest::class;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue