Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Разделение товаров и услуг в корзине


Recommended Posts

Здравствуйте! Нужен совет по реализации разделения товаров и услуг. В магазине пока одна услуга, которая относится к товарам определенной группы, и она добавляется через опции. Минус такого решения - услуга плюсуется к стоимости товара. 

 

Ищу выход, чтобы в корзине выводилась таблица товаров и отдельно таблица услуг. Это понадобится для того, чтобы в чеке отдельно пробивались товары и услуги.

Создал категорию "Услуги" добавил в нее товар "Настройка гитары" (id = 38).

 

Controller -> Checkout - > Cart.php

Внутри foreach ( $products as $product) {} нахожу массив

$data['products'][] = array(
'cart_id'   => $product['cart_id'],
'thumb'     => $image,
'name'      => $product['name'],
'model'     => $product['model'],
'option'    => $option_data,
'recurring' => $recurring,
'quantity'  => $product['quantity'],
'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
'price'     => $price,
'total'     => $total,
'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
);

Мне нужно чтобы, если это обычный продукт, записывался массив $data['products'], а если услуга, в другой массив

if ($product_id != 38) { $data['products'][] = array......}else{ "То, что мне поможет"  }

 

Правильный ли ход моих мыслей? Как лучше сделать? Как записать массив, если условие не выполняется?

Надіслати
Поділитися на інших сайтах


Добрый день.

Всё описанное будет очень сложно в реализации. 

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

 

Мне кажется, проще решить данный вопрос отдельным товаром. И просто его закидывать в корзину вместе с нужным товаром.

Опишу ориентировочные шаги.

1) Заводим ныжные товары, например: Устуга1, Услуга2 и т.д.

2) В поле upc у товаров указываем id товара услуги.

3) Если у товара заполнено поле upc, то вытягиваем цену товара с названием и выводим это как опцию в товаре с галочкой

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

 

Такой подход позволит удалять услугу из корзины, отдельно от товара. 

И не нарушит соместимость со всеми остальными модулями по оформлению заказа.

 

Без детальной постановки задачи сложно сказать подробнее.

Надіслати
Поділитися на інших сайтах

@tiranozavr и вывести в карточку товара вот этим

 

Надіслати
Поділитися на інших сайтах


27 минут назад, mpn2005 сказал:

Добрый день.

Всё описанное будет очень сложно в реализации. 

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

 

Мне кажется, проще решить данный вопрос отдельным товаром. И просто его закидывать в корзину вместе с нужным товаром.

Опишу ориентировочные шаги.

1) Заводим ныжные товары, например: Устуга1, Услуга2 и т.д.

2) В поле upc у товаров указываем id товара услуги.

3) Если у товара заполнено поле upc, то вытягиваем цену товара с названием и выводим это как опцию в товаре с галочкой

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

 

Такой подход позволит удалять услугу из корзины, отдельно от товара. 

И не нарушит соместимость со всеми остальными модулями по оформлению заказа.

 

Без детальной постановки задачи сложно сказать подробнее.

Спасибо за идею с upc, я воспользуюсь этим. Я и написал о том, что добавил услугу как товар. Это верное решение. 

 

Но важно не то, как товар-услуга попадает в корзину (из каталога или как опция), а как она представлена в корзине. К оплате у меня должны быть разделены товары и услуги, чтобы в чеке было:

 

Товары:

Гитара акустическая - 8000р

Струны нейлоновые - 500р

 

Услуги:

Настройка гитары - 500р

 

Checkout, конечно, тоже придется править, но в этом и есть смысл. А доставка этому товару-услуге не требуется, это несколько облегчает задачу

Змінено користувачем tiranozavr
Надіслати
Поділитися на інших сайтах


28 минут назад, tiranozavr сказал:

Но важно не то, как товар-услуга попадает в корзину (из каталога или как опция), а как она представлена в корзине. К оплате у меня должны быть разделены товары и услуги, чтобы в чеке было:

 

Товары:

Гитара акустическая - 8000р

Струны нейлоновые - 500р

 

Услуги:

Настройка гитары - 500р

 

Checkout, конечно, тоже придется править, но в этом и есть смысл. А доставка этому товару-услуге не требуется, это несколько облегчает задачу

Точно так же в корзине.

Заводите прзнак услуги. Например в другом свободном поле.

И просто выводите их раздельно, но с общим итогом.

Это будет минимальная доработка в шаблоне вывода.

Надіслати
Поділитися на інших сайтах

14 минут назад, mpn2005 сказал:

Точно так же в корзине.

Заводите прзнак услуги. Например в другом свободном поле.

И просто выводите их раздельно, но с общим итогом.

Это будет минимальная доработка в шаблоне вывода.

Понял. То есть признак услуги искать в шаблоне вывода, а не в контроллере. Также можно будет использовать этот признак услуги при оплате.

Спасибо Вам за помощь! Упростили задачу)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.