Magento - добавить атрибуты к пунктам счетов - PullRequest
2 голосов
/ 03 августа 2011

Я хотел бы добавить атрибут «epagine_download» для пунктов счета. Я создал Observer, который прослушивает событие sales_order_invoice_pay. Идея состоит в том, что наблюдатель заполнит этот атрибут «epagine_download» URL-адресом, специфичным для клиента (и фактически будет получен путем вызова внешнего веб-сервиса).

Мне удалось создать атрибут с помощью следующего кода:

    $setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttribute('invoice_item', 'epagine_download', array(
    'label'                       => 'Download',
    'type'                        => 'varchar',
    'input'                       => 'text'  ,
    'visible'                     => false,
    'required'                    => false  
))

Это мой конфиг наблюдателя:

<?xml version="1.0"?>
<config>
    <global>
        <models>
            <eboeksales>
                <class>Eboek_Sales_Model</class>
            </eboeksales>
        </models>
        <events>
            <sales_order_invoice_pay>
                <observers>
                    <eboek_sales_pay_observer>
                        <type>singleton</type>
                        <class>Eboek_Sales_Model_Pay_Observer</class>
                        <method>handle_sales_invoice_paid</method>
                    </eboek_sales_pay_observer>

                </observers>
            </sales_order_invoice_pay>    
        </events>
    </global>

</config>

Теперь я застрял в реализации наблюдателя. Похоже, getData не перенастраивает мой новый атрибут «epagine_download». Что мне не хватает? Я проверяю это, создав счет в модуле admin. По какой-то причине я не могу использовать var_dump здесь, поэтому я использую Mage :: log. Я также вызываю несуществующую функцию GetBlahBlah, чтобы получить исключение и тем самым предотвратить создание счета-фактуры, поэтому мне не нужно создавать новый заказ каждый раз, когда я хочу проверить.

class Eboek_Sales_Model_Pay_Observer {
    public function __construct()
    {

    }
    /**
     *
     * @param Varien_Event_Observer $observer
     * @return Eboek_Sales_Model_Pay_Observer
     */
    public function handle_sales_invoice_paid($observer)
    {

        $event = $observer->getEvent();
        Mage::log("Hello8812");
        $inv=$event->getInvoice();

        #Mage::log($inv);
        $a= $inv->getAllItems();

        Mage::log("=========================================================================");
        Mage::log($a[0]->getOrderItem()->getData());
        Mage::log("=========================================================================");
        Mage::log($a[0]->getData());
        Mage::log("=========================================================================");
        $event->GetBlahBlah();

        return $this;
    }
}

(версия Magento - 1.4) Спасибо за отзыв ...

...