Ho esteso modulo informazioni sui clienti di Magento per memorizzare un attributo aggiuntivo per il cliente. Lo chiamo 'customer_referrer_id'.Come ottenere i dati per un'entità (ad esempio cliente) dalla tabella eav_attribute per essere mostrato nella griglia dei clienti per admin
Ho un ruolo di ‘referente‘che ha accesso alla rete del cliente e la griglia solo su ordinazione. Ma, voglio limitare una referrer per vedere solo i clienti nella griglia che hanno la customer_referrer_id impostato come ID del referrer che ha effettuato l'accesso. Allo stesso modo per gli ordini, connesso in referrer sarà in grado di vedere solo gli ordini effettuati da clienti che avere customer_referrer_id = loggedin_referrer_id.
so già come ignorare un modulo e che devo ignorare principalmente Adminhtml/blocchi/clienti/griglia :: _ prepareCollection e Adminhtml/blocchi/Vendite/ordine/griglia :: _ prepareCollection
Sto usando Magento 1.4.1.1
Questo è il mio file di dichiarazione del modulo in app/etc/modules/Myproject_Adminhtml
<?xml version="1.0"?>
<config>
<modules>
<Myproject_Adminhtml>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Sales />
</depends>
</Myproject_Adminhtml>
</modules>
</config>
E il mio moduli Config.xml in local/myproject/Adminhtml/etc/è la seguente:
<config>
<modules>
<Myproject_Adminhtml>
<version>1.0.0</version>
</Myproject_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>Myproject_Adminhtml_Block_Sales_Order_Grid</sales_order_grid>
<customer_grid>Myproject_Adminhtml_Block_Customer_Grid</customer_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
E
class Myproject_Adminhtml_Block_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('customer/customer_collection')
->addNameToSelect()
->addAttributeToSelect('email')
->addAttributeToSelect('created_at')
->addAttributeToSelect('group_id')
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');
$this->setCollection($collection);
$referrer_id = Mage::getSingleton('admin/session')->getUser()->getId();
Mage::log('Logged in admin has id: ' . $referrer_id);
return parent::_prepareCollection();
}
}
Non ho provato nulla per questo caso, eccetto provare a utilizzare collection-> getSelect() -> joinLeft(). Ma non sono stato in grado di scoprire quali parametri richiede esattamente. Oltre a questo ho cercato di ottenere customer_group_id dalla tabella sales_flat_order nella griglia ordine, utilizzando joinAttribute ('order', 'main_entity.entity_id = order.entity_id', 'customer_group_id'), ma non ha funzionato neanche per me. –
Vedo il messaggio "HURRAY" in /var/log/system.log –