2010-10-08 2 views
5

Я строю магазин Magento, используя один каталог из 4 доменов: 1 для США и 3 для Европы (Великобритания, французский и немецкий). В Европе есть 1 склад справки, 1 в США и своего рода неофициальный/внутренний «склад» в США, где распродажи и так выполняются, и мы не отслеживаем уровни запасов в Magento. Нам нужно отслеживать конкретные типы транзакций, такие как продажа в обычном режиме, а также заказы на внутреннем/административном уровне, такие как не-интернет-продажи, раздачи подарков, заказы на выставку и т. Д. Мой план состоит в том, чтобы расширить модель основного заказа и добавить какой-то «тип заказа/транзакции», и затем, после размещения заказа, обработайте данные заказа и направьте тот склад, который он отправлен, для выполнения на основе идентификатора магазина и значения типа заказа.Magento пользовательский атрибут заказа/поля? Стрелять себе в ногу?

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

ответ

15

Вы направляетесь в правильном направлении, но (как и большинство вещей Magento), есть несколько вариантов. Наиболее важный принцип здесь заключается в том, что архитектура изменений не должна приводить к сглаживанию ситуации, когда исправления/исправления на ядре скомпрометированы. Интересно, что Magento отошел от сильно расширяемой и модернизированной (в основном) модели EAV для Mage_Sales_Model_Order (и связанных объектов) в текущей версии. Это затрудняет добавление атрибутов безопасным способом, IMHO.

Я бы рекомендовал вам использовать систему Observer для добавления новых значений атрибутов, но в соответствующую модель. То есть вместо добавления атрибута в модель заказа, создайте модель, содержащую order_id и ваши пользовательские атрибуты. Подключитесь к соответствующему событию (возможно, sales_convert_quote_to_order для всех ордеров или checkout_type_onepage_save_order_after для заказов на внешний заказ) и просмотрите элементы Quote, чтобы установить значения в вашей пользовательской модели. Когда вы выполняете свой процесс для передачи заказов в дом исполнения, вы можете искать пользовательские атрибуты через order_id.

+1

Отличный отклик. +1 для создания новой таблицы для обеспечения безопасности хранилища. – silvo

+0

Спасибо, Джонатан, это звучит отлично! –

Смежные вопросы