Magento - Настройка оператора для каждого продукта

Я работаю в магазине, в котором есть два типа продуктов: скоропортящиеся продукты и товары общего назначения. Еда всегда должна быть отправлена ​​в ночное время через FedEx, а другие товары всегда должны быть отправлены через USPS. Если кто-то заказывает товары из обеих категорий, они должны быть отправлены отдельно.

Знаете ли вы о существующем модуле или настройках конфигурации, которые позволили бы это сделать?

Если нет, похоже, что другим решением будет пользовательский модуль. В этом случае, каков наилучший подход? Я думаю, что это будет разделение заказа на многоадресную доставку с использованием одного и того же адреса для обоих, но с разными способами доставки. К сожалению, я не уверен, как это сделать программно, поэтому любые учебники/образцы/ресурсы будут очень признательны.


person Colin O'Dell    schedule 28.06.2011    source источник


Ответы (2)


Вероятно, самый разумный способ решить эту проблему — создать два заказа для каждого типа продукта, каждый из которых будет доставляться разными перевозчиками на один и тот же адрес. Это также IMO имеет больше смысла с точки зрения отслеживания магазинов, поскольку вы можете обрабатывать каждый независимо друг от друга.

Чтобы направить вас на правильный путь (поскольку Magento особенно загадочен в этой своей части), вы должны прочитать Inchoo программно создает заказ в Magento и написан тем же автором Программно создайте клиента и заказ в Magento с полномасштабной оплатой на одной странице.

В основном, как я вижу, это происходит:

  1. Получить заказ клиента
  2. Перебрать каждый продукт внутри заказа и разделить его на два массива для каждого типа продукта.
  3. Создайте отдельный заказ для каждого типа продукта и используйте разные способы доставки для каждого.

Вам, вероятно, придется расширить некоторые контроллеры ИЛИ сделать это нестандартным способом и использовать для этого вспомогательные функции, сложные части будут интегрировать модули оплаты / доставки в ваш процесс заказа. Пойдя по этому пути, вы создадите полный процесс оформления заказа, поскольку оформление заказа на одной странице, предоставляемое Magento, на самом деле не будет работать, и это слишком сложно для работы из-за того, как он использует AJAX.

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

Более простым подходом было бы использование настраиваемого поля, которое определяет способ доставки вашего продукта, таким образом, вы просто добавляете его и не заботитесь о пользовательских заказах. Вы просто реагируете на это, однако отслеживание станет практически невозможным IMO.

person unknownnf    schedule 28.06.2011
comment
Спасибо за ответ и ссылки на ресурсы! Хотя ваша идея имеет смысл и решит проблему, я не уверен, что это правильное решение для этого магазина, так как оформление заказа на одной странице и покупка сразу являются обязательными для этого сайта. Тем не менее, я думаю, что могу попробовать вариант вашей идеи, но вместо того, чтобы создавать отдельные заказы на шаге 3, просто разделите их на разные поставки в разделе «Доставка» оформления заказа в зависимости от типа продукта. - person Colin O'Dell; 29.06.2011
comment
На самом деле, похоже, что мультидоставка даже не использует одностраничную проверку, так что этот аргумент недействителен :P Чем больше я думаю об этом, тем больше я думаю, что ваш подход имеет смысл. Мой единственный вопрос заключается в следующем: как я могу взимать плату с клиента? Есть ли безопасный/простой способ списать их один раз за оба заказа вместе, или будет два отдельных списания? - person Colin O'Dell; 30.06.2011
comment
Поскольку вы будете отвечать за весь процесс оформления заказа, вы можете взимать плату один раз за оба. Для вас это будет просто бэкэнд, вам уже нужно переписать процесс оформления заказа, чтобы отсортировать оба заказа, проще всего было бы взимать ОДИН РАЗ за большой заказ со всеми продуктами, а затем разделить их на два подпункта. -заказы для каждого адреса доставки. Есть много способов пройти через это, но вам нужно найти тот, который удобен для магазина, однако это единственный подход, который я вижу, который даст вам необходимую гибкость в управлении данными. - person unknownnf; 30.06.2011

Переопределить модуль бесплатной доставки.

Вы можете установить правило продаж, которое применяется к определенным продуктам и делает их «Бесплатной доставкой», оставляя другие продукты выбранному вами основному поставщику доставки.

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

person ʍǝɥʇɐɯ    schedule 01.07.2011