Como obter dados de uma entidade (por exemplo, cliente) da tabela eav_attribute para serem mostrados na Grade do Cliente para administrador

Estendi o formulário de informações do cliente do Magento para armazenar um atributo adicional para o cliente. Vamos chamá-lo de 'customer_referrer_id'.

Tenho um papel de referenciador que tem acesso apenas à grade do cliente e à grade de pedidos. Porém, quero restringir um referenciador para ver apenas os clientes na grade que possuem o customer_referrer_id definido como o ID do referenciador que efetuou login. Da mesma forma, para pedidos, o referenciador conectado poderá ver apenas os pedidos feitos por clientes que have customer_referrer_id = login_referrer_id.

Eu já sei como substituir um módulo e preciso substituir principalmente Adminhtml / Block / Customer / Grid :: _ prepareCollection e Adminhtml / Block / Sales / Order / Grid :: _ prepareCollection

Estou usando o Magento 1.4.1.1

Este é o arquivo de declaração do meu módulo em 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 meus módulos config.xml em local / Myproject / Adminhtml / etc / são os seguintes:

<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();
    }  
}

questionAnswers(1)

yourAnswerToTheQuestion