Back to PhocacartStock class

Method handleStockProductKey

public static
handleStockProductKey
(mixed $productKey, mixed $orderStatusId, mixed $quantity, mixed $stockMovement = '')

Method handleStockProductKey - Source code

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