Разделите заказ на отдельные заказы и рассчитайте доставку отдельно с ups и fedex и разными адресами отправления


8

Когда покупатель приходит в наш магазин и проверяет несколько товаров, мне нужно написать модуль для расчета стоимости доставки на основе нескольких факторов. Из моего исследования я определил, что должно произойти следующее:

Во-первых, мне нужно разделить элементы корзины на разные заказы для расчета доставки. Я хочу, чтобы заказы были отсортированы по значению атрибута "vendor". «Продавец» - это атрибут, который мы добавили в систему, который применим ко всем простым продуктам. Например, в корзине есть розовая рубашка со значением «vendor» «1», карандаш со значением «vendor» «1» и синяя рубашка со значением «vendor» «2». Все товары со значением «vendor» «1» должны быть одного заказа, в то время как товары со значением «vendor» «2» должны быть другого заказа. Я вижу, что этот другой вопрос отвечает этой дилемме, но затем поднимает другой.

Во-вторых, мне нужно рассчитать доставку с использованием стандартных функций доставки UPS и FedEx по умолчанию в Magento, но с исходным адресом, который определяется по значению «vendor» (хранится в отдельной таблице базы данных). Любые предложения приветствуются!

Я использую фрагменты кода, чтобы начать меня отсюда и здесь .

У меня, вероятно, будет несколько вопросов, но первые из них выделены жирным шрифтом выше.

ОБНОВЛЕНИЕ Я решил, что было бы лучше переопределить модуль ядра magento для нескольких поставок, чтобы сделать то, что я пытаюсь сделать. Пожалуйста, помогите мне найти, где и что положить, чтобы манипулировать многофункциональными функциями Magento, чтобы разбить элементы заказа на партии на основе атрибута "vendor"! Я борюсь с этим.


1
Multishipping Magento делает это изначально. Возможно, вы можете использовать функцию многократной доставки, не показывая ее клиенту?
Филвинкл

Не по теме: Не могли бы вы принять ответы или закрыть свои старые открытые вопросы? Мы очень стараемся повысить скорость ответов во время бета-тестирования. Спасибо.
Philwinkle

1
Сейчас я посмотрю как на многократные, так и на непринятые ответы. Часто я не принимал, потому что я перешел к чему-то другому и вернусь к этому. Тем не менее, я посмотрю и посмотрю, если я что-то пропустил
CaitlinHavener

Другой альтернативой является реализация чего-то вроде Unirgy uDropship, который также включает в себя функциональность типа поставщика, которую вы в настоящее время пишете; но он предоставляет поставщикам портал для отправки, генерирует этикетки для доставки и многое другое. Я не работаю на Unirgy и не поддерживаю его.
Philwinkle

1
Я не хочу использовать расширение челнока. Есть много факторов, почему я не могу.
CaitlinHavener

Ответы:


3

Здесь следует учесть, что вам может потребоваться только применить некоторые косметические изменения внешнего интерфейса к шаблонам многократной отправки ( template/checkout/multishipping/), чтобы два заказа просто отображались для клиента как один заказ. shipping.phtmlИ overview.phtmlшаблоны разделить на два порядка, каждый из которых имеет заголовок (Адрес 1 из 2, и т.д.) и другой копии , чтобы показать , что на два порядка.

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

Следующий бит будет обрабатывать разные источники доставки на основе атрибута vendor. Это может быть сделано в Mage_Shipping_Model_Shipping. Справа вверху вы можете видеть, где Magento получает адрес отправления из конфигурации, а затем далее в requestToShipment()методе элементы адреса отправителя назначаются запросу на отправку (который, как я полагаю, будет использоваться позже, в зависимости от способа доставки). называется).

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


Как тогда будет рассчитываться отгрузка для каждой отправки, которая связана с атрибутом поставщика?
CaitlinHavener

Расчет отгрузки не изменится, поскольку Mage_Shipping_Model_Shippingон просто заменит адрес отправителя в запросе на отправку отправителем, назначенным этому поставщику. Затем Magento продолжит свою деятельность и отберет все тарифы на доставку, которые будут применяться к этому заказу. Я мог бы увидеть один из полезных модулей доставки WebShopApps здесь, поскольку он позволяет вам назначать методы доставки на основе различных критериев. - опять же, это все в теории, я раньше такого не делал, поэтому могут быть некоторые предостережения (всегда есть). -
pspahn

Я проверяю эти расширения webshopapp. Я думаю, что меня сейчас смущает то, что класс / метод говорит классу Mage_Shipping_Model_Shipping: «Эй, это заказ, и это его элементы». Где я могу найти это?
CaitlinHavener

1
Посмотрите /app/code/core/Mage/Sales/Model/Quote.php- Имейте в виду , что Magento не столь линейна , как и другие тележками. Спуститесь по кроличьей норе и посмотрите, как котировки меняются на заказы (и кредиты и т. Д.). В какой-то момент вы найдете методы, которые вы хотели бы изменить. Опять же, как я уже говорил ранее, часто выгодно просто инвестировать в качественный бэкэнд-модуль (и, что не менее важно, поддержку), который быстро выполнит то, что вам нужно. Некоторые гайки и болты не любят, когда меняют.
pspahn

Если вам нужна более подробная информация, пожалуйста, помогите! Большое спасибо за помощь здесь. Ты спас меня! Это самый сложный проект Magento, который мне приходилось встречать! magento.stackexchange.com/questions/7635/…
CaitlinHavener
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.