public static
handleStockProductKey
(mixed $productKey, mixed $orderStatusId, mixed $quantity, mixed $stockMovement = '')
public static function handleStockProductKey($productKey, $orderStatusId, $quantity, $stockMovement = '')
{
$app = Factory::getApplication();
$paramsC = PhocacartUtils::getComponentParameters();
$negative_stocks = $paramsC->get('negative_stocks', 1);
// We know the stock movement, ignore the status
if ($stockMovement == '+' || $stockMovement == '-') {
$status = array();
$status['stock_movements'] = $stockMovement;
} else {
$status = PhocacartOrderStatus::getStatus((int) $orderStatusId);
}
if (isset($status['stock_movements']) && $status['stock_movements'] == '+') {
$db = Factory::getDBO();
$query = 'UPDATE #__phocacart_product_stock SET stock = stock + ' . (int) $quantity . ' WHERE product_key = ' . $db->quote($productKey);
$db->setQuery($query);
$db->execute();
} else {
if (isset($status['stock_movements']) && $status['stock_movements'] == '-') {
$db = Factory::getDBO();
if ($negative_stocks == 0) {
// we cannot have negative values in stock
$query = 'UPDATE #__phocacart_product_stock SET stock = GREATEST(0, stock - ' . (int) $quantity . ') WHERE product_key = ' . $db->quote($productKey);
} else {
$query = 'UPDATE #__phocacart_product_stock SET stock = stock - ' . (int) $quantity . ' WHERE product_key = ' . $db->quote($productKey);
}
$db->setQuery($query);
$db->execute();
}
}
return true;
}