ඉන්වෙන්ටරි කළමනාකරණය සහ Events & Listeners
තොග මට්ටම් නිරීක්ෂණය සහ අඩු-තොග ඇඟවීම් සඳහා පද්ධතියක් නිර්මාණය කිරීම. එමෙන්ම, යෙදුමේ ප්රධාන ක්රියාවලීන් (core logic) එකිනෙකින් වෙන් කර, වඩාත් නඩත්තු කළ හැකි සහ පුළුල් කළ හැකි කේතයක් ලිවීම සඳහා Laravel Events සහ Listeners භාවිතා කිරීමට ඉගෙන ගැනීම.
සුපිරි වෙළඳසැලක මෙහෙයුම් සඳහා තොග කළමනාකරණය අත්යවශ්ය වේ. අපි තොග ප්රමාණය සහ නැවත ඇණවුම් කළ යුතු මට්ටම (`reorder_level`) සංසන්දනය කර, අවසන් වීමට ආසන්න නිෂ්පාදන සඳහා ඇඟවීම් පෙන්වන පිටුවක් නිර්මාණය කරමු.
පළමුව, `products` වගුවට `reorder_level` තීරුව එක් කිරීමට නව migration එකක් සෑදිය යුතුය.
ඉන්පසු, එම migration ගොනුවේ `up()` method එක තුළ schema එක නිර්වචනය කර `php artisan migrate` කරන්න.
Events සහ Listeners යනු **Observer design pattern** එක ක්රියාත්මක කිරීමකි. සරලවම, යම් සිදුවීමක් (Event) සිදු වූ විට, ඊට සවන් දෙන (Listen) එකක් හෝ කිහිපයක් ක්රියාත්මක වීමයි.
අපගේ උදාහරණය:
මෙම ක්රමය මගින්, POS පද්ධතියේ Controller එකට, තොග අඩු කරන්නේ කෙසේදැයි දැනගැනීමට අවශ්ය නැත. එහි එකම වගකීම වන්නේ විකිණීම අවසන් වූ පසු `SaleProcessed` event එක `dispatch` කිරීම (සිදුවීම ප්රකාශයට පත් කිරීම) පමණි. ඉතිරි කාර්යය Listener එක මගින් බලා ගනී.
පියවර 1: Event (`SaleProcessed.php`) සහ Listener (`UpdateStockQuantity.php`) සකස් කිරීම
`app/Events/SaleProcessed.php` ගොනුව විවෘත කර, constructor එක තුළ, සිදු වූ විකිණීමට අදාළ `Sale` model එක ලබාගැනීමට සකසන්න.
ඉන්පසු, `app/Listeners/UpdateStockQuantity.php` ගොනුවේ `handle()` method එක තුළ, එම `Sale` model එකෙන් විකිණූ භාණ්ඩ (sale items) ලබාගෙන, `@foreach` loop එකක් මගින් එක් එක් නිෂ්පාදනයේ `quantity` එක අඩු කිරීමට අවශ්ය Eloquent කේතය ලියන්න.
පියවර 2: POS Component එකෙන් Event එක Dispatch කිරීම
අප 6 වන මොඩියුලයේදී සෑදූ `PointOfSale` Livewire component එකේ (හෝ ඔබගේ POS Controller එකේ), විකිණීම දත්ත සමුදායේ සටහන් කළ වහාම, `SaleProcessed` event එක dispatch කරන්න.
පියවර 3: ඉන්වෙන්ටරි පිටුව (`inventory.blade.php`) නිර්මාණය කිරීම
`InventoryController` එකක් සහ ඊට අදාළ route එකක් සාදන්න. Controller එකේ `index` method එක තුළ, තොග අඩු (`quantity <= reorder_level`) සහ සියලුම නිෂ්පාදන ලබාගෙන view එකට යවන්න. View එක තුළ, Bootstrap table භාවිතයෙන් එම දත්ත පෙන්වන්න. තොග අඩු භාණ්ඩ සඳහා විශේෂ වර්ණයක් යොදන්න.
දැන්, POS පද්ධතියෙන් විකිණීමක් සිදු කර, ඉන්වෙන්ටරි පිටුවට ගොස් බලන්න. අදාළ නිෂ්පාදනවල තොග ප්රමාණය ස්වයංක්රීයව අඩු වී ඇත්නම්, ඔබ මෙම මොඩියුලය සාර්ථකව නිම කර ඇත!