- N-2: Letzter Netto-Preis je Lieferant nur aus tatsächlichen Eingängen (status received). - N-3: Verbrauchsfenster exakt (kein startOfDay-Off-by-one). - N-4: Kritisch-Zählung vereinheitlicht — Controller liefert die Kachel-Zählweise (inkl. critical_ordered), tote View-Überschreibung entfernt; Sidenav-Badge bleibt bewusst ohne bestellte Kritische. - N-5: Ausschuss-Liste zeigt das 500er-Limit an + "Alle anzeigen" (?all=1), analog OPT-3. - N-7: parseQuantity parst Strings konsequent im deutschen Format — Server und UI-Ampel interpretieren "1.500" jetzt identisch. - N-8: Produktions-Kopie übernimmt keine alten Chargen-Nummern mehr (Auto-Vorschlag Präfix+ttmmjj greift). - N-9: recordProductionStock lädt Produkte withTrashed — Korrektur- Gegenbuchungen soft-gelöschter Output-Produkte werden nicht mehr übersprungen. - N-15: Hinweise/Leitfaden-Markdown mit html_input=strip + allow_unsafe_links=false gerendert. Bewusst offen (Kundenentscheid/Design): N-1 (Chargen-Gruppierung ohne supplier_id), N-6 (reFormatNumber-Konvention app-weit), N-10 (manuelle Bewegung darf ins Minus, Inventur-Korrekturen), N-13 (mfg_row_phase- Fallback auf phasenlos). Suite: 231 grün, 823 Assertions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
44 lines
1.3 KiB
PHP
44 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin\Inventory;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\File;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\View\View;
|
|
|
|
class NoticeController extends Controller
|
|
{
|
|
public function index(): View
|
|
{
|
|
return $this->renderMarkdown(
|
|
'hinweise.md',
|
|
__('Hinweise'),
|
|
__('Allgemeine Hinweise zur Warenwirtschaft'),
|
|
__('Noch keine Hinweise hinterlegt.')
|
|
);
|
|
}
|
|
|
|
public function guide(): View
|
|
{
|
|
return $this->renderMarkdown(
|
|
'testleitfaden.md',
|
|
__('Leitfaden'),
|
|
__('Testleitfaden durch die neuen Funktionen der Warenwirtschaft'),
|
|
__('Noch kein Leitfaden hinterlegt.')
|
|
);
|
|
}
|
|
|
|
protected function renderMarkdown(string $file, string $title, string $subtitle, string $fallback): View
|
|
{
|
|
$path = resource_path('docs/'.$file);
|
|
$markdown = File::exists($path) ? File::get($path) : $fallback;
|
|
|
|
return view('admin.inventory.notices.index', [
|
|
'title' => $title,
|
|
'subtitle' => $subtitle,
|
|
// Audit N-15: Roh-HTML im Markdown strippen (Defense-in-Depth).
|
|
'content' => Str::markdown($markdown, ['html_input' => 'strip', 'allow_unsafe_links' => false]),
|
|
]);
|
|
}
|
|
}
|