public function subtractStock($orderRow, $quantity, $walletID) { //Grab the characters from the db try { $trackingGroup = $this->getUsersGroup($walletID); } catch (Exception $e) { $trackingGroup = 1; } $members = $this->getMembersAsArray($trackingGroup); $sqlarray = '(' . implode(',', $members) . ')'; $criteria = new CDbCriteria(); $criteria->condition = "typeID=:typeID AND remaining > 0 AND characterID IN " . $sqlarray; $criteria->params = array(":typeID" => $orderRow->typeID); $criteria->order = "transactionDateTime DESC"; $stock = Inventory::Model()->find($criteria); if ($stock != NULL) { //Check to see if the quantity we need to subtract is greater than this record if ($quantity >= $stock->remaining) { $stockLeft = $stock->remaining; $stock->remaining = 0; $stock->save(); $log = new InventoryLog(); $log->sourceTransactionID = $orderRow->transactionID; $log->targetTransactionID = $stock->transactionID; $log->quantity = $stockLeft; $log->save(); } else { $stock->remaining = $stock->remaining - $quantity; $stock->save(); $log = new InventoryLog(); $log->sourceTransactionID = $orderRow->transactionID; $log->targetTransactionID = $stock->transactionID; $log->quantity = $quantity; $log->save(); } $quantity = $quantity - $stock->quantity; //If we're out of stock to remove if ($quantity <= 0) { return; } else { $this->subtractStock($orderRow, $quantity); } } }
public function actionPersonal($page, $id) { //Fetch the sale $criteria = new CDbCriteria(); $criteria->condition = 'transactionID=:transactionID'; $criteria->params = array(':transactionID' => $id); $transaction = Wallet::Model()->find($criteria); $stock = Inventory::Model()->findByPk($id); if ($transaction->personal) { $transaction->personal = 0; $transaction->save(); if ($stock != NULL) { $stock->personal = 0; $stock->save(); } } else { $transaction->personal = 1; $transaction->save(); if ($stock != NULL) { $stock->personal = 1; $stock->save(); } } $this->redirect("index.php?r=wallet/index&Wallet_page={$page}"); }