예제 #1
0
파일: Cart.php 프로젝트: jeffhorus/sepatuku
 static function _subtractProductObjStock($obj, $item, $controller, $isInverse, $configKey = NULL)
 {
     if ($controller->getObjKrcoConfig('track_inventory', $configKey) === FALSE) {
         return;
     }
     if (!$obj) {
         return;
     }
     $agg = NULL;
     $needsUpdate = FALSE;
     if (!is_null($controller->getKrcoConfigValue('cart', 'custom_track_inventory'))) {
         $tracker = $controller->getKrcoConfigValue('cart', 'custom_track_inventory');
         $tracker($obj, $item);
         $needsUpdate = TRUE;
     }
     if (is_callable(array($obj, 'getTotalInventory'))) {
         $qty = $obj->getTotalInventory();
         $q = $item->getQuantity();
         if ($isInverse) {
             $q *= -1;
         }
         $newStock = $obj->getTotalInventory() - $q;
         $obj->setTotalInventory($newStock);
         self::applySoldStockChange($obj, $q);
         if ($agg = self::getAggregator($obj, $controller)) {
             self::applySoldStockChange($agg, $q);
         }
         self::_processLowStock($obj, $controller);
         $needsUpdate = TRUE;
     }
     if ($needsUpdate) {
         $theConfigKey = 'products';
         if ($configKey) {
             $theConfigKey = $configKey;
         }
         $db_name = $controller->getKrcoConfigValue($theConfigKey, 'db');
         $update_method = 'update' . $controller->getKrcoConfigValue($theConfigKey, 'db_name');
         $controller->dbUpdateObject($db_name, $update_method, array($obj));
         Helper_Krco::afterUpdateProduct($controller, $obj);
         if (!empty($agg)) {
             $controller->dbUpdateObject($db_name, $update_method, array($agg));
         }
     }
 }