Esempio n. 1
0
 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);
         }
     }
 }
Esempio n. 2
0
 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}");
 }