![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/inventory.corals.io/Corals/modules/Inventory/Observers/ |
<?php namespace Corals\Modules\Inventory\Observers; use Corals\Modules\Inventory\Classes\Scopes\InventoryItemScope; use Corals\Modules\Inventory\Models\InventoryItem; use Corals\Modules\Inventory\Models\Transaction; class TransactionObserver { /** * @param Transaction $transaction */ public function created(Transaction $transaction) { $this->handleTransactionCreateUpdate($transaction); } public function updated(Transaction $transaction) { $this->handleTransactionCreateUpdate($transaction); } public function deleted(Transaction $transaction) { $this->handleTransactionCreateUpdate($transaction); } protected function handleTransactionCreateUpdate(Transaction $transaction) { $inTotal = Transaction::inDirection(); (new InventoryItemScope())->apply($inTotal, $transaction->inventory_id, $transaction->item_id); $inTotal = $inTotal->sum('quantity'); $outTotal = Transaction::outDirection(); (new InventoryItemScope())->apply($outTotal, $transaction->inventory_id, $transaction->item_id); $outTotal = $outTotal->sum('quantity'); $result = $inTotal - $outTotal; $query = InventoryItem::query(); (new InventoryItemScope())->apply($query, $transaction->inventory_id, $transaction->item_id); $query->update(['inventory_value' => $result]); } }