Frage

Ich möchte die Reihenfolge basierend auf einem Administrator einschränken. Zum Beispiel hätte der Administrator ein Attribut, das einer bestimmten Region (Gruppe von Zipcodes) zugeordnet ist. Wenn sich der Benutzer anmeldet, konnten sie nur die Bestellungen für seine Region sehen.

Ich bin mir auf allem ziemlich klar, außer dem Ereignis, um das Netz zu zeigen. Ich möchte dies erreichen, ohne den Kerncode zu überschreiben.

War es hilfreich?

Lösung

Hier ist ein Weg - obwohl ich nicht besonders aufgeregt bin. Vielleicht hat jemand einen besseren Gedanken:

Um potenzielle Probleme mit Ihrem Administrator -Panel zu vermeiden, die Sperrungen in Ihren Verkaufstabellen verursachen (denken Sie an sales_flat_order_address) Ich würde entsprechende Spalten für den Filter zum Filter hinzufügen sales_flat_order_grid Tabelle, die Ihre Abrechnungsregion hat. Sie müssen diese nicht mit einem anzeigen addColumn - Sie werden nur zur Anwendung eines Standardfilters auf die Sammlung verwendet.

Mit der Veranstaltung sales_order_grid_collection_load_before:

class Yc_Ym_Model_Observer
{

    public function gridCollectionLoadBefore($observer)
    {
       $allowedRegionId = Mage::getSingleton('admin/session')->getAllowedRegionId();
       $collection = $observer->getEvent()->getOrderGridCollection();
       $collection->addFieldToFilter('billing_region',array('eq'=>$allowedRegionId));

    }

}

Auf diese Weise können Sie die Sammlung standardmäßig filtern. Sie können diesen gesamten Block bedingt überspringen (zum Beispiel Super -Administratoren, die alle Regionen anzeigen können), indem Sie a Mage::getSingleton('admin/session')->isAllowed() Dies führt im Wesentlichen eine ACL -Prüfung, um diese Filteranwendung zu überspringen. Sie wären für die Festlegung dieser ACL verantwortlich.

Andere Tipps

Ich würde empfehlen, das Laden von MAGE_SALES_MODEL_RESOURCE_ORDER_COLLECTION und EIN Ereignis hinzuzufügen, um Ihre Filter hinzuzufügen. sales_order_collection_load_before sollte die Veranstaltung sein, die man sich ansehen muss.

Versuchen Sie es mit dieser Veranstaltung admin_session_user_login_success

Für weitere Nützlichkeit beziehen Sie sich folgende URLs.

http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events http://www.nicksays.co.uk/magento-events-ceat-sheet-1-7/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top