J'ai étendu le formulaire d'information client de Magento pour stocker un attribut supplémentaire pour le client. Appelons-le 'customer_referrer_id'.Comment obtenir des données pour une entité (par exemple client) de la table eav_attribute à afficher dans Customer Grid pour l'administrateur
J'ai un rôle de 'référant' qui a accès à la grille de client et à la grille de commande seulement. Mais, je veux restreindre un référent à ne voir que les clients de la grille qui ont l'ID client_referrer comme ID du référent qui s'est connecté. De même pour les commandes, le référent connecté ne pourra voir que les commandes effectuées par les clients qui ayez customer_referrer_id = loggedin_referrer_id.
Je sais déjà comment passer outre un module et que je dois remplacer principalement Adminhtml/Bloc/Client/Grille :: _ prepareCollection et Adminhtml/Bloc/Ventes/commande/Grille :: _ prepareCollection
J'utilise Magento 1.4.1.1
Ceci est mon fichier de déclaration du module dans 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>
Et mes modules config.xml dans local/Myproject/Adminhtml/etc/est la suivante:
<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>
Et
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();
}
}
Je n'ai rien essayé pour ce cas, sauf essayer d'utiliser collection-> getSelect() -> joinLeft(). Mais je n'ai pas été en mesure de déterminer quels paramètres sont exactement requis.En plus de cela, j'ai essayé d'obtenir customer_group_id de la table sales_flat_order en grille de commande, en utilisant joinAttribute ('order', 'main_entity.entity_id = order.entity_id', 'customer_group_id'), mais cela n'a pas fonctionné pour moi non plus. –
Je vois le message "HURRAY" dans /var/log/system.log –