Статусы товаров и их покупка

zek24

Мой дом здесь!
Команда форума
Модератор
Регистрация
14 Ноя 2009
Сообщения
811
Реакции
310
  • Автор темы
  • Модер.
  • #1
Привет,
требуется на ОК1551+ настроить три варианта статусов товаров следующим образом:
1. В наличии - товар можно купить
2. Отутствует - товар нельзя купить
3. Предзаказ - товар можно купить
Первые два пункта работают как нужно, но проблема с третьим.
Если кол-во товара со статусом предзаказ в БД = 0, то в карточке товара пишется "предзаказ", но купить его нельзя. Если установить кол-во товара > 0, то в карточке статус меняется на "В наличии", а нужно чтобы оставался "предзаказ" при любом кол-ве товара и была возможность купить (оформить заказ).
 
В админке в system/settings/options установить Stock Checkout в yes, Out of Stock Status установить в Pre-Order.
Тогда при кол-во товара > 0 товар в наличии и его можно купить, а при кол-во товара = 0 товар в предзаказе и его можно купить.
 
  • Автор темы
  • Модер.
  • #3
В админке в system/settings/options установить Stock Checkout в yes, Out of Stock Status установить в Pre-Order.
Тогда при кол-во товара > 0 товар в наличии и его можно купить, а при кол-во товара = 0 товар в предзаказе и его можно купить.
Пробовал нечто подобное.
Но тогда товары, которых нет в наличии, так же можно купить.
 
Тоже попал на это. Сейчас как раз товар в пути, второго товара до весны не будет. Как на первый товар сделать предзаказ без возможности покупки второго ?
 
В opencart со статусами товаров такая логика:
1. При добавлении товара можно указать его статус, этот статус затем хранится в БД в таблице product, в столбце stock_status_id.
2. Если товар есть в наличии, а точнее если в БД его количество больше 0, то ему присваивается статус "в наличии"

Чтобы вывести определённому товару определённый статус можно: во-первых назначить этому товару нужный статус (через админку например), во вторых в файле \catalog\controller\product\product.php заменить
Код:
        if ($product_info['quantity'] <= 0) {
                $this->data['stock'] = $product_info['stock_status'];
            } elseif ($this->config->get('config_stock_display')) {
                $this->data['stock'] = $product_info['quantity'];
            } else {
                $this->data['stock'] = $this->language->get('text_instock');
            }
на
Код:
        if ($product_info['quantity'] <= 999) {
                $this->data['stock'] = $product_info['stock_status'];
            } elseif ($this->config->get('config_stock_display')) {
                $this->data['stock'] = $product_info['quantity'];
            } else {
                $this->data['stock'] = $this->language->get('text_instock');
            }
После этого когда количество товара в наличии <999, то будет выдаваться статус товара из БД (указаный через админку), при количестве товара >998 будет выдаваться что товар в наличии.

P.S. Проверял на версии OcStore 1.5.4
 
Последнее редактирование:
  • Нравится
Реакции: Lery
Назад
Сверху