Когда покупатель приходит в наш магазин и проверяет несколько товаров, мне нужно написать модуль для расчета стоимости доставки на основе нескольких факторов. Из моего исследования я определил, что должно произойти следующее:
Во-первых, мне нужно разделить элементы корзины на разные заказы для расчета доставки. Я хочу, чтобы заказы были отсортированы по значению атрибута "vendor". «Продавец» - это атрибут, который мы добавили в систему, который применим ко всем простым продуктам. Например, в корзине есть розовая рубашка со значением «vendor» «1», карандаш со значением «vendor» «1» и синяя рубашка со значением «vendor» «2». Все товары со значением «vendor» «1» должны быть одного заказа, в то время как товары со значением «vendor» «2» должны быть другого заказа. Я вижу, что этот другой вопрос отвечает этой дилемме, но затем поднимает другой.
Во-вторых, мне нужно рассчитать доставку с использованием стандартных функций доставки UPS и FedEx по умолчанию в Magento, но с исходным адресом, который определяется по значению «vendor» (хранится в отдельной таблице базы данных). Любые предложения приветствуются!
Я использую фрагменты кода, чтобы начать меня отсюда и здесь .
У меня, вероятно, будет несколько вопросов, но первые из них выделены жирным шрифтом выше.
ОБНОВЛЕНИЕ Я решил, что было бы лучше переопределить модуль ядра magento для нескольких поставок, чтобы сделать то, что я пытаюсь сделать. Пожалуйста, помогите мне найти, где и что положить, чтобы манипулировать многофункциональными функциями Magento, чтобы разбить элементы заказа на партии на основе атрибута "vendor"! Я борюсь с этим.
Ответы:
Здесь следует учесть, что вам может потребоваться только применить некоторые косметические изменения внешнего интерфейса к шаблонам многократной отправки (
template/checkout/multishipping/
), чтобы два заказа просто отображались для клиента как один заказ.shipping.phtml
Иoverview.phtml
шаблоны разделить на два порядка, каждый из которых имеет заголовок (Адрес 1 из 2, и т.д.) и другой копии , чтобы показать , что на два порядка.Вместо значения по умолчанию я мог бы предложить проявить немного креативности в этих шаблонах, чтобы два заказа были просто разделены, чтобы они просто отображались как две отдельные позиции.
Следующий бит будет обрабатывать разные источники доставки на основе атрибута vendor. Это может быть сделано в Mage_Shipping_Model_Shipping. Справа вверху вы можете видеть, где Magento получает адрес отправления из конфигурации, а затем далее в
requestToShipment()
методе элементы адреса отправителя назначаются запросу на отправку (который, как я полагаю, будет использоваться позже, в зависимости от способа доставки). называется).Это может быть, по крайней мере, направление, в котором нужно идти. Читая ваш вопрос и ваше обновление, у меня складывается впечатление, что вы делаете это сложнее, чем необходимо. Всегда помните, что, как правило, лучше всего позволить Magento делать то, что он хочет, и изменять только мелкие фрагменты, чтобы справиться с вашими конкретными случаями. Большая часть того, что вам нужно, уже выполнена в ядре, поэтому кажется немного глупым переписывать компоненты с несколькими отправками, когда возможны более простые варианты.
источник
Mage_Shipping_Model_Shipping
он просто заменит адрес отправителя в запросе на отправку отправителем, назначенным этому поставщику. Затем Magento продолжит свою деятельность и отберет все тарифы на доставку, которые будут применяться к этому заказу. Я мог бы увидеть один из полезных модулей доставки WebShopApps здесь, поскольку он позволяет вам назначать методы доставки на основе различных критериев. - опять же, это все в теории, я раньше такого не делал, поэтому могут быть некоторые предостережения (всегда есть). -/app/code/core/Mage/Sales/Model/Quote.php
- Имейте в виду , что Magento не столь линейна , как и другие тележками. Спуститесь по кроличьей норе и посмотрите, как котировки меняются на заказы (и кредиты и т. Д.). В какой-то момент вы найдете методы, которые вы хотели бы изменить. Опять же, как я уже говорил ранее, часто выгодно просто инвестировать в качественный бэкэнд-модуль (и, что не менее важно, поддержку), который быстро выполнит то, что вам нужно. Некоторые гайки и болты не любят, когда меняют.