Проверка доступности товара на каждом из этапов работы с этим товаром. Положил в корзину - если есть, значит положил. Плюсуешь еще один такой же товар в корзину. Есть товар? Положили...нету - говорим, что остаток 0.
Кто то в эту же секунду положил такой же товар в свою корзину и успел первым его заказать, то нам при оформлении заказа так же будет выведено, что текущий товар уже недоступен, т.к. на момент отправки заказа опять же был пересчет доступного.
Кол-во остатка на складе нужно писать везде и проверять везде.
Себя на место покупателя поставьте. Пришли, полчаса выбирали, дошли до оформления, а оказалось, что товара нет. Хрень, не правда ли?