Back to PhocacartStock class

Method handleStockAttributeOption

public static
handleStockAttributeOption
(mixed $optionId, mixed $orderStatusId, mixed $quantity, mixed $stockMovement = '')

Method handleStockAttributeOption - Source code

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