public static
handleStockAttributeOption
(mixed $optionId, mixed $orderStatusId, mixed $quantity, mixed $stockMovement = '')
public static function handleStockAttributeOption($optionId, $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_attribute_values SET stock = stock + ' . (int) $quantity . ' WHERE id = ' . (int) $optionId;
$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_attribute_values SET stock = GREATEST(0, stock - ' . (int) $quantity . ') WHERE id = ' . (int) $optionId;
} else {
$query = 'UPDATE #__phocacart_attribute_values SET stock = stock - ' . (int) $quantity . ' WHERE id = ' . (int) $optionId;
}
$db->setQuery($query);
$db->execute();
}
}
return true;
}