индивидуальная стоимость доставки для каждого товара

Тема в разделе "OpenCart", создана пользователем cherkas, 23 ноя 2018.

  1. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    Здравствуйте, есть необходимость в очень гибкой стоимости доставки, при этом появилась идея, что проще всего стоимость доставки для каждого товара прописать в каком то из свободных полей, например в поле MPN. Дефолтное поле хочу использовать что бы можно было через модули импорта/экспорта быстро редактировать стоимость.

    Логика простая, если в корзине один товар, то берем его стоимость доставки, если несколько то наименьшую.

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

    Прошу знающих людей прокомментировать такую задумку, может что то подсказать, или может уже есть готовое решение/модуль.

    Спасибо
     
  2. settr

    settr

    Регистрация:
    12 окт 2016
    Сообщения:
    67
    Симпатии:
    54
    Вы уже по-сути все правильно расписали, осталось внести некоторые правки.
    В catalog/model/shipping/flat.php
    PHP:
    $quote_data['flat'] = array(
                    
    'code'         => 'flat.flat',
                    
    'title'        => $this->language->get('text_description'),
                    
    'cost'         => $this->config->get('flat_cost'),
                    
    'tax_class_id' => $this->config->get('flat_tax_class_id'),
                    
    'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
                  );
    ставим
    PHP:
    $quote_data['flat'] = array(
                    
    'code'         => 'flat.flat',
                    
    'title'        => $this->language->get('text_description'),
                    
    // редактируем это
                    
    'cost'         => $this->getCost,
                    
    'tax_class_id' => $this->config->get('flat_tax_class_id'),
                    
    'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
                  );
    и добавляем метод getCost() в этот-же класс
    PHP:
    function getCost() {
           
    $products $this->cart->getProducts(); // товары в корзине
           
    $delivery_costs = [];
           foreach (
    $products as $product) {
               
    $delivery_costs[] = $product['delivery'];
           }
         
           return 
    min($delivery_costs);
       }
    При этом в system/library/cart.php
    PHP:
    $this->data[$key] = array(
    ...
    'delivery'           => ($product_query->row['MPN']) ? $product_query->row['MPN'] : ,
    ...
    Работоспособность не проверял, возможны ошибки ))
    P.S. OC 1.5.5
     
    cherkas нравится это.
  3. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    у меня опенкарт 2.3. но суть ясна, так примерно и планирровал делать
     
  4. Asmastar

    Asmastar

    Регистрация:
    18 ноя 2018
    Сообщения:
    6
    Симпатии:
    1
    Сможете для 3.0.2.0 написать тоже))) Я просто в коде осёл))) а тут такое)))
     
  5. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    до тройки я пока не добрался, даже не смотрел ее внутри, по этому трудно что то подсказать Вам конкретное, но принцип доработок будет такой же.
     
  6. Asmastar

    Asmastar

    Регистрация:
    18 ноя 2018
    Сообщения:
    6
    Симпатии:
    1
    Раньше не думал что на прежних версиях намного всё проще делается, а сейчас уже и не изменить ничего)
    А вообще что лучше?)
     
  7. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    по моему мнению на данный момент хорошие релизы это опенкарт.про 2.3, и окстор 2.3, но лично мне с опенкарт.про легче и удобнее работать.
     
  8. Asmastar

    Asmastar

    Регистрация:
    18 ноя 2018
    Сообщения:
    6
    Симпатии:
    1
    А можно как-нибудь с 3.0.2.0 на 2.3 перейти?
     
    cherkas нравится это.
  9. cherkas

    cherkas

    Регистрация:
    25 фев 2013
    Сообщения:
    451
    Симпатии:
    57
    можно конечно, устанавливаете с нуля опенкарт, потом шаблон, модули, всё настраиваете, подгоняете дизайн, переносите товары, покупателей....