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)); } } }