Warenwirtschaft: AP-09 bis AP-13 (Produktbestand, Set-Produkte, Ausschuss, Konzepte)
- AP-09 Produktbestand inkl. Bewegungshistorie (product_stock_movements, ProductStockService) - AP-10 Rohstoffbestand-Ansicht je Lager (RawMaterialStockController) - AP-11 Bestandsschwellen / Out-of-Stock-Handling fuer Produkte und Shop - AP-12 Ausgang/Ausschuss (stock_disposals, StockDisposalController, InventoryService) - Set-Produkte (product_set_items) inkl. Aufloesung - Produktentwicklung & Hinweise-Verwaltung (Notices) - AP-13 Entwicklungskonzept Shop-Bestandsabzug im Plan dokumentiert - Feature-Tests fuer neue Module + aktualisierter Entwicklungsplan Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
78679e0c55
commit
3ee2d756e9
63 changed files with 5968 additions and 901 deletions
|
|
@ -29,15 +29,18 @@ class ProductionController extends Controller
|
|||
]);
|
||||
}
|
||||
|
||||
public function create(): View
|
||||
public function create(Request $request): View
|
||||
{
|
||||
$defaultLocationId = Location::query()->where('name', 'like', '%öln%')->value('id')
|
||||
?? Location::query()->where('active', true)->first()?->id;
|
||||
|
||||
$defaultProductId = (int) $request->query('product_id') ?: null;
|
||||
|
||||
return view('admin.inventory.productions.create', [
|
||||
'products' => Product::query()->where('active', 1)->orderBy('name')->get(['id', 'name']),
|
||||
'products' => Product::query()->where('active', 1)->where('is_set', false)->orderBy('name')->get(['id', 'name']),
|
||||
'locations' => Location::query()->where('active', true)->orderBy('name')->get(),
|
||||
'defaultLocationId' => $defaultLocationId,
|
||||
'defaultProductId' => $defaultProductId,
|
||||
'model' => null,
|
||||
]);
|
||||
}
|
||||
|
|
@ -99,7 +102,8 @@ class ProductionController extends Controller
|
|||
|
||||
return view('admin.inventory.productions.edit', [
|
||||
'model' => $production,
|
||||
'products' => Product::query()->where('active', 1)
|
||||
'products' => Product::query()
|
||||
->where(fn ($q) => $q->where('active', 1)->where('is_set', false))
|
||||
->orWhere('id', $production->product_id)
|
||||
->orderBy('name')->get(['id', 'name']),
|
||||
'locations' => Location::query()->where('active', true)->orderBy('name')->get(),
|
||||
|
|
@ -148,7 +152,7 @@ class ProductionController extends Controller
|
|||
|
||||
return view('admin.inventory.productions.create', [
|
||||
'model' => $production,
|
||||
'products' => Product::query()->where('active', 1)->orderBy('name')->get(['id', 'name']),
|
||||
'products' => Product::query()->where('active', 1)->where('is_set', false)->orderBy('name')->get(['id', 'name']),
|
||||
'locations' => Location::query()->where('active', true)->orderBy('name')->get(),
|
||||
'defaultLocationId' => $defaultLocationId,
|
||||
]);
|
||||
|
|
@ -158,12 +162,13 @@ class ProductionController extends Controller
|
|||
{
|
||||
$locationId = (int) $request->query('location_id', 0);
|
||||
$quantity = (int) $request->query('quantity', 1);
|
||||
$excludeProductionId = (int) $request->query('exclude_production', 0) ?: null;
|
||||
if ($locationId < 1) {
|
||||
return response()->json(['message' => __('location_id erforderlich')], 422);
|
||||
}
|
||||
|
||||
return response()->json(
|
||||
$this->productionService->buildRecipePayload($product, $locationId, max(1, $quantity))
|
||||
$this->productionService->buildRecipePayload($product, $locationId, max(1, $quantity), $excludeProductionId)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue