2010-10-08 13 views
5

Estoy construyendo una tienda Magento usando un solo catálogo en 4 dominios: 1 para los EE. UU. Y 3 para Europa (Reino Unido, Francia y Alemania). Hay 1 almacén de despacho en Europa, 1 en los EE. UU. Y una especie de "almacén" no oficial/interno en los EE. UU. Donde se cumplen los obsequios, y no estamos haciendo un seguimiento de los niveles de inventario en Magento. Necesitamos rastrear tipos de transacciones particulares como ventas web simples junto con órdenes internas/administrativas como ventas no web, regalos, órdenes de ferias, etc. Mi plan es extender el modelo de orden central y agregar algún tipo de "orden/tipo de transacción" campo y luego, al realizar un pedido, procesar los datos del pedido y dirigir el almacén al que se envía para su cumplimiento en función del ID de la tienda y el valor del "tipo de orden".Atributo/campos de orden personalizada Magento? Dispararme en el pie?

Siendo nuevo en Magento, quiero saber si este tipo de configuración es una mala idea por algún motivo. ¿Me estoy disparando en el pie? ¿Hay alguna razón por la cual un solo catálogo podría ser problemático? ¿Hay una manera más fácil o mejor de manejar este flujo? ¿Hay alguna forma de agregar atributos personalizados a pedidos como tú a los productos?

Respuesta

15

Está yendo en la dirección correcta, pero (como con la mayoría de las cosas de Magento), hay un par de opciones. El principio más importante aquí es que la arquitectura de las modificaciones no debe llevar a una situación en la que las actualizaciones/parches en el núcleo estén comprometidas. Lo interesante de esto es que Magento se ha alejado del modelo de EAV altamente extensible y de actualización (principalmente) para Mage_Sales_Model_Order (y objetos relacionados) en la versión actual. Eso hace que sea más difícil agregar atributos de una manera segura para la actualización, en mi humilde opinión.

Yo recomendaría que use el sistema Observer para agregar sus nuevos valores de atributo, pero en un Modelo relacionado. Es decir, en lugar de agregar el atributo en el modelo de pedido en sí, cree un modelo que contenga un order_id y sus atributos personalizados. Enganche en el evento apropiado (probablemente sales_convert_quote_to_order para todos los pedidos o checkout_type_onepage_save_order_after para pedidos frontend) y examine los Elementos de cotización para establecer los valores en su Modelo personalizado. Cuando ejecuta su proceso para transmitir pedidos a la casa de cumplimiento, puede buscar los atributos personalizados a través del order_id.

+1

Excelente respuesta. +1 para crear una nueva tabla para garantizar que la tienda se mantenga segura. – silvo

+0

Gracias Jonathan, ¡eso suena perfecto! –

Cuestiones relacionadas