retailcrm / opencart-module

OpenCart integration plugin
http://www.retailcrm.pro
MIT License
22 stars 43 forks source link

Два одинаковых товара в заказе с разными ценами #199

Closed klaos27 closed 3 years ago

klaos27 commented 4 years ago

Добрый день! Прошу подсказать в какую сторону (файл) смотреть.

На сайте, при определенной сумме заказа (пусть будет 5000), добавляется подарок (определенный товар с нулевой ценой). Если покупатель добавит к заказу такой же товар, но только с нормальной ценой, то в CRM залетит из двух одинаковых товаров только подарочный с нулевой ценой.

Например имеем такой состав заказа: 1) Товар больше 5000 руб. 2) Подарочный товар с нулевой ценой 3) Товар как подарочный, только с нормальной ценой

В админке сайте получаем заказ где будут все три позиции. В retailCRM приходит только первые две позиции.

Пытался в catalog/model/extension/retailcrm/order.php $orderProducts = isset($order_data['products']) ? $order_data['products'] : $order_data['order_product']; заменить на $orderProducts = array_merge($orderProducts, $this->cart->getGifts()); как это сделано для файлов оформления заказа на сайте, но результата не дало.

Версия движка - 2.3 Версия модуля - 2.4.1

iyzoer commented 4 years ago

В Вашем случае сборка товаров происходит здесь, API retailCRM при объединении товаров с одним внешним кодом торгового предложения оставляет только последний. Единственный выход - это использовать order[items][][externalIds] для добавления нескольких аналогичных позиций.

yukor83 commented 3 years ago

RetailCRM 7 вроде поддерживает одинаковые товары с разной ценой. В настройках видел такой пункт.

iyzoer commented 3 years ago

@klaos27 подскажите, пожалуйста, добавление подарка производится каким то модулем?

klaos27 commented 3 years ago

И да, и нет. Когда-то был модуль, но сейчас от него осталась только админка. Фронт практически на 100% переделан под нужды.

iyzoer commented 3 years ago

Сам Opencart не позволяет добавлять один и тот же товар в разные товарные позиции, поэтому какая-либо доработка модуля в этом плане не имеет смысла. В случае кастомизации магазина необходима кастомизация модуля, как описано выше - https://github.com/retailcrm/opencart-module/issues/199#issuecomment-725315848. В RetailCRM поддержка товаров в разных товарных позициях есть.

klaos27 commented 3 years ago

Добрый день! Обновили модуль до 4.1.4 Настройка "Возможность добавлять в заказ одинаковые торговые предложения как разные позиции" включена. В RetailCrm одинаковые позиции в заказе присутствуют, но у заказа статус "Неудавшийся".

В логах модуля следующее: 2021-01-19 15:38:24 - [ordersEdit] Order is not loaded 2021-01-19 15:38:24 - Specify ID or external ID for order item.

Подскажите, как это можно поправить?

iyzoer commented 3 years ago

Можете скинуть данные массива items в ошибочном запросе?

klaos27 commented 3 years ago

Как получить эти данные?

iyzoer commented 3 years ago

Можно например здесь посмотреть какие данные отправляются. Судя по ошибке неправильно передается поле с внешним кодом торгового предложения.

klaos27 commented 3 years ago

При создании заказа в лог записывается следующее retail.txt

iyzoer commented 3 years ago

Судя по тому, что в логе, ошибки Specify ID or external ID for order item. не будет, но передадутся только две позиции.

klaos27 commented 3 years ago

Сделал новый заказ. Выгрузил в лог немного другую информацию. retail var2.txt Статус данного заказа в опенкарте - https://yadi.sk/i/ErDUO5TFHbf-tA Статус данного заказа в retailCRM - https://yadi.sk/i/rKEJZmqUY4uooQ Настройка соответствия статусов заказа на вкладке "Справочники" - https://yadi.sk/i/BY2NF1__CU_p3g Состав заказа в retailCRM - https://yadi.sk/i/vRGFL1NVLVm_Hg

iyzoer commented 3 years ago

Необходимо передавать данные о внешнем коде позиции в заказе - items[][externalIds][], и данные о внешнем коде торгового предложения - items[][offer][externalId]

klaos27 commented 3 years ago

Благодарю за помощь! Все получилось.