2010-10-08 4 views
5

Je construis un magasin Magento en utilisant un seul catalogue sur 4 domaines: 1 pour les États-Unis et 3 pour l'Europe (Royaume-Uni, français et allemand). Il y a 1 entrepôt de traitement des commandes en Europe, 1 aux États-Unis et une sorte d'entrepôt non officiel/interne aux États-Unis où les cadeaux sont respectés et nous ne suivons pas les niveaux d'inventaire dans Magento. Nous devons suivre des types de transactions particuliers tels que les ventes en ligne et les commandes internes/administratives comme les ventes hors site, les cadeaux publicitaires, les commandes commerciales, etc. Mon plan consiste à étendre le modèle de commande principal et à ajouter un type de commande/transaction puis, lors du placement d'une commande, traiter les données de la commande et diriger vers quel entrepôt il est envoyé pour l'exécution en fonction de l'identifiant du magasin et de la valeur du «type de commande». Étant nouveau sur Magento, je veux savoir si ce type d'installation est une mauvaise idée pour une raison ou pour une autre. Est-ce que je me tire dans le pied? Y a-t-il une raison pour qu'un seul catalogue soit problématique? Existe-t-il un moyen plus simple ou plus efficace de gérer ce flux? Existe-t-il un moyen d'ajouter des attributs personnalisés aux commandes comme vous le pouvez pour les produits?Attributs/champs personnalisés Magento? Me tirant dans le pied?

Répondre

15

Vous vous dirigez dans la bonne direction, mais (comme avec la plupart des choses Magento), il existe plusieurs options. Le principe le plus important ici est que l'architecture des modifications ne doit pas conduire à la situation où les mises à niveau/correctifs sur le noyau sont compromises. Ce qui est intéressant à ce sujet, c'est que Magento s'est éloigné du modèle EAV hautement extensible et sans danger pour la mise à niveau (principalement) pour Mage_Sales_Model_Order (et les objets associés) dans la version actuelle. Cela rend plus difficile d'ajouter des attributs d'une manière mise à niveau en toute sécurité, à mon humble avis.

Je vous recommande d'utiliser le système Observer pour ajouter vos nouvelles valeurs d'attribut, mais dans un modèle associé. Autrement dit, plutôt que d'ajouter l'attribut dans le modèle Order lui-même, créez un modèle qui contient un order_id et vos attributs personnalisés. Accédez à l'événement approprié (probablement sales_convert_quote_to_order pour toutes les commandes ou checkout_type_onepage_save_order_after pour les commandes frontales) et examinez les éléments de devis pour définir les valeurs dans votre modèle personnalisé. Lorsque vous exécutez votre processus pour transmettre des ordres à la maison d'exécution, vous pouvez rechercher les attributs personnalisés via le order_id.

+1

Excellente réponse. +1 pour créer une nouvelle table afin de garantir la mise à niveau du magasin en toute sécurité. – silvo

+0

Merci Jonathan, ça a l'air parfait! –

Questions connexes