Добавление товара в заказ


RHCk
 Поделиться

Рекомендуемые сообщения

Приветствую!

 

Есть необходимость в заказ покупателя добавить товар. Заходим в редактирование заказа -> Вкладка 2.Товары, раздел Добавить товар(ы), поле Выберите товар.

Подбор товара - при наборе наименования товара поиск осуществляется с начала наименования.

Вопрос 1 - можно ли сделать подбор по сочетанию символов в любом месте наименования товара и артикула?

Вопрос 2 - можно ли это использовать для поиска товара покупателем?

Вопрос 3 - исключительно интереса ради, все пользуют обычный поиск OC или всё же прикручивают "живой" поиск?

 

С уважением.

 

P.S. Нашёл модуль поиска (для v2.0.X), могу выложить. Возможно кто-то сможет проверить работоспособность и "допилить".

Ссылка на комментарий
Поделиться на других сайтах

Версия движка? У меня в 1.5.6.4 при вводе первых букв названия товара выпадает список в админке. Касаемо поиска в магазине, стоит живой поиск.

Ссылка на комментарий
Поделиться на других сайтах

OC.PRO v2.1.0.1.8

 

У меня на несколько другой сборке версии 1.5.1.1.2 тоже стоит. Интересно решение для OC.PRO.

Просто не совсем понятно, либо все используют сторонние шаблоны уже с живым поиском, либо используют платные модули, либо он просто никому не нужен:)

В приобретении модуля проблемы нет, не понятна невостребованность данного функционала.

Ссылка на комментарий
Поделиться на других сайтах

Модуль полезный, если большое количество товара, пользователю легче найти интересующий товар) Я думаю должны быть уже и бесплатные решения, в платных просто больше фишек.

Ссылка на комментарий
Поделиться на других сайтах

Я сделал две замены:

Замена 1 (в строке 436):
$sql .= " AND pd.name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
$sql .= " AND pd.name LIKE '%" . $this->db->escape($data['filter_name']) . "%'";

Замена 2 (в строке 440):
$sql .= " AND p.model LIKE '" . $this->db->escape($data['filter_model']) . "%'";
$sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'";

 

Поиск по сочетанию в наименовании работает, по артикулу не работает.

Что-то сделал не так?:)

Ссылка на комментарий
Поделиться на других сайтах

4 часа назад, savage4pro сказал:

так это же только модель, теперь есть возможность поиска товаров по любой части наименования либо артикула там, где собственно и происходит вызов метода

Так вот выше я и хотел сказать, что после произведенных мной двух замен, по наименованию всё отлично ищется, а по артикулу нет.

 

Для общего развития ваше решение полезно (из предыдущего сообщения), но оставлю пока всё как есть. Сделанных изменений достаточно для работы. Ну и есть вероятность того, что это поправят со временем в первоисточнике.

 

Спасибо!

Ссылка на комментарий
Поделиться на других сайтах

не за что )

 

6 минут назад, RHCk сказал:

по наименованию всё отлично ищется, а по артикулу нет

 

по артикулу ищется, например, здесь ("Код товара")

/admin/index.php?route=catalog/product

Ссылка на комментарий
Поделиться на других сайтах

Уговорили:)))

 

Получается, что при очень большой необходимости проще будет здесь admin/index.php?route=sale/order/edit (вкладка Товар) добавить отдельное поле для кода товара, т.е. сделать аналогично тому, что имеется здесь  admin/index.php?route=catalog/product. Или проще не будет?:)

Ссылка на комментарий
Поделиться на других сайтах

  • 3 года спустя...
В 06.12.2015 at 03:37, savage4pro сказал:

решение касается только шаблона редактирования заказа, поэтому дополнение писать - пустое занятие, по этой же причине и в howto ему делать особо нечего, засорять только

 

шаблон admin/view/template/sale/order_form.tpl

находим


                      <label class="col-sm-2 control-label" for="input-product"><?php echo $entry_product; ?></label>
                      <div class="col-sm-10">
                        <input type="text" name="product" value="" id="input-product" class="form-control" />
                        <input type="hidden" name="product_id" value="" />
                      </div>

и после него добавляем


                      <label class="col-sm-2 control-label" for="input-product-model"></label>
                      <div class="col-sm-10">
                        <input type="text" name="product_model" value="" id="input-product-model" class="form-control" />
                      </div>

 

находим блок


$('#tab-product input[name=\'product\']').autocomplete({
...
});

заменяем его целиком на содержимое спойлера

  Показать содержимое



var product_selection = function(item) {
    $('#tab-product input[name=\'product\']').val(item['name']);
    $('#tab-product input[name=\'product_model\']').val(item['model']);
    $('#tab-product input[name=\'product_id\']').val(item['value']);

    if (item['option'] != '') {
      html  = '<fieldset>';
            html += '  <legend><?php echo $entry_option; ?></legend>';

      for (i = 0; i < item['option'].length; i++) {
        option = item['option'][i];

        if (option['type'] == 'select') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10">';
          html += '    <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">';
          html += '      <option value=""><?php echo $text_select; ?></option>';

          for (j = 0; j < option['product_option_value'].length; j++) {
            option_value = option['product_option_value'][j];

            html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name'];

            if (option_value['price']) {
              html += ' (' + option_value['price_prefix'] + option_value['price'] + ')';
            }

            html += '</option>';
          }

          html += '    </select>';
          html += '  </div>';
          html += '</div>';
        }

        if (option['type'] == 'radio') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10">';
          html += '    <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">';
          html += '      <option value=""><?php echo $text_select; ?></option>';

          for (j = 0; j < option['product_option_value'].length; j++) {
            option_value = option['product_option_value'][j];

            html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name'];

            if (option_value['price']) {
              html += ' (' + option_value['price_prefix'] + option_value['price'] + ')';
            }

            html += '</option>';
          }

          html += '    </select>';
          html += '  </div>';
          html += '</div>';
        }

        if (option['type'] == 'checkbox') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10">';
          html += '    <div id="input-option' + option['product_option_id'] + '">';

          for (j = 0; j < option['product_option_value'].length; j++) {
            option_value = option['product_option_value'][j];

            html += '<div class="checkbox">';

            html += '  <label><input type="checkbox" name="option[' + option['product_option_id'] + '][]" value="' + option_value['product_option_value_id'] + '" /> ' + option_value['name'];

            if (option_value['price']) {
              html += ' (' + option_value['price_prefix'] + option_value['price'] + ')';
            }

            html += '  </label>';
            html += '</div>';
          }

          html += '    </div>';
          html += '  </div>';
          html += '</div>';
        }

        if (option['type'] == 'image') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10">';
          html += '    <select name="option[' + option['product_option_id'] + ']" id="input-option' + option['product_option_id'] + '" class="form-control">';
          html += '      <option value=""><?php echo $text_select; ?></option>';

          for (j = 0; j < option['product_option_value'].length; j++) {
            option_value = option['product_option_value'][j];

            html += '<option value="' + option_value['product_option_value_id'] + '">' + option_value['name'];

            if (option_value['price']) {
              html += ' (' + option_value['price_prefix'] + option_value['price'] + ')';
            }

            html += '</option>';
          }

          html += '    </select>';
          html += '  </div>';
          html += '</div>';
        }

        if (option['type'] == 'text') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" id="input-option' + option['product_option_id'] + '" class="form-control" /></div>';
          html += '</div>';
        }

        if (option['type'] == 'textarea') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10"><textarea name="option[' + option['product_option_id'] + ']" rows="5" id="input-option' + option['product_option_id'] + '" class="form-control">' + option['value'] + '</textarea></div>';
          html += '</div>';
        }

        if (option['type'] == 'file') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label">' + option['name'] + '</label>';
          html += '  <div class="col-sm-10">';
          html += '    <button type="button" id="button-upload' + option['product_option_id'] + '" data-loading-text="<?php echo $text_loading; ?>" class="btn btn-default"><i class="fa fa-upload"></i> <?php echo $button_upload; ?></button>';
          html += '    <input type="hidden" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" id="input-option' + option['product_option_id'] + '" />';
          html += '  </div>';
          html += '</div>';
        }

        if (option['type'] == 'date') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-3"><div class="input-group date"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="YYYY-MM-DD" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>';
          html += '</div>';
        }

        if (option['type'] == 'datetime') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-3"><div class="input-group datetime"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="YYYY-MM-DD HH:mm" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>';
          html += '</div>';
        }

        if (option['type'] == 'time') {
          html += '<div class="form-group' + (option['required'] ? ' required' : '') + '">';
          html += '  <label class="col-sm-2 control-label" for="input-option' + option['product_option_id'] + '">' + option['name'] + '</label>';
          html += '  <div class="col-sm-3"><div class="input-group time"><input type="text" name="option[' + option['product_option_id'] + ']" value="' + option['value'] + '" placeholder="' + option['name'] + '" data-date-format="HH:mm" id="input-option' + option['product_option_id'] + '" class="form-control" /><span class="input-group-btn"><button type="button" class="btn btn-default"><i class="fa fa-calendar"></i></button></span></div></div>';
          html += '</div>';
        }
      }

      html += '</fieldset>';

      $('#option').html(html);

      $('.date').datetimepicker({
        pickTime: false
      });

      $('.datetime').datetimepicker({
        pickDate: true,
        pickTime: true
      });

      $('.time').datetimepicker({
        pickDate: false
      });
    } else {
      $('#option').html('');
    }
}

$('#tab-product input[name=\'product\']').autocomplete({
  'source': function(request, response) {
    $.ajax({
      url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request),
      dataType: 'json',
      success: function(json) {
        response($.map(json, function(item) {
          return {
            label: item['name'],
            value: item['product_id'],
            name: item['name'],
            model: item['model'],
            option: item['option'],
            price: item['price']
          }
        }));
      }
    });
  },
  'select': function(item) {
    product_selection(item);
  }
});

$('#tab-product input[name=\'product_model\']').autocomplete({
  'source': function(request, response) {
    $.ajax({
      url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_model=' +  encodeURIComponent(request),
      dataType: 'json',
      success: function(json) {
        response($.map(json, function(item) {
          return {
            label: item['model'],
            value: item['product_id'],
            name: item['name'],
            model: item['model'],
            option: item['option'],
            price: item['price']
          }
        }));
      }
    });
  },
  'select': function(item) {
    product_selection(item);
  }
});

 

 

в итоге в блоке "Выберите товар" будет 2 поля, первое - так и остается поиском по имени, второе - по артикулу

После данных изменений вылазит ошибка при добавлении товара "Product can not be bought from the store you have choosen!" 

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Показать вместо этого как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Нельзя вставлять изображения напрямую. Загрузите или вставьте изображения по URL.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу