Я работаю над модулем пользовательских баллов лояльности. Во время оформления заказа клиент имеет возможность обменять свои баллы.
В настройках модуля я создал eav_attribute redeem_points (он присутствует в таблице eav_attribute), и я добавил атрибут в цитату, ну вроде ...
Вот как я это сделал:
- в mysql4-install-0.1.0.php я вызываю $ installer-> installEntities ();
в Namespace_Module_Model_Resource_Eav_Mysql4_Setup (который расширяет Mage_Eav_Model_Entity_Setup) есть только 1 метод открытая функция getDefaultEntities () , которая только возвращает массив, содержащий: *
'quote' => array(
'entity_model' => 'sales/quote',
'table' => 'sales/quote',
'attributes' => array(
'redeemed_points' => array('type' => 'static')
),
),
снова в mysql4-install-0.1.0.php Я создаю столбец в таблице sales_flat_quote, как это
//add redeemed_points to quote table
$installer->getConnection()->addColumn($installer->getTable('sales/quote'), 'redeemed_points', 'bigint(20)');
$installer->addAttribute('quote', 'redeemed_points', array('type'=>'static'));
В кассе, когда я выкупаю баллы, вызывается метод savePoints ($ data) из моего класса, который расширяет Mage_Checkout_Model_Type_Onepage:
public function savePoints($data)
{
//save data
if ($data == 1) {
$redeemedPoints = Mage::helper('points')->getRedeemablePoints();
$this->getQuote()->setRedeemedPoints($redeemedPoints['points']);
} else {
$this->getQuote()->setRedeemedPoints(0);
}
$this->getQuote()->collectTotals()->save();
$this->getCheckout()
->setStepData('points', 'complete', true);
if ($this->getQuote()->isVirtual()) {
$this->getCheckout()->setStepData('payment', 'allow', true);
} else {
$this->getCheckout()->setStepData('shipping_method', 'allow', true);
}
Mage::helper('firephp')->debug($this->getQuote()->debug());
return array();
}
Вы заметите, что я отлаживаю объект цитаты в firephp: в этот момент (на этом этапе оформления заказа просто сохраните его в цитате) я вижу атрибут redeemed_points с правильным значением.
Моя проблема в том, что на следующем шаге этот атрибут удален из объекта цитаты: (
Итак, я понимаю, что мне не удалось включить мой атрибут redeemed_points в объект цитаты, но я действительно не знаю, что мне не хватает ...
Кто-нибудь смеется?