Reputation: 2985
I've had a good look around, but I can't figure out how to get and set reward points in Magento Enterprise Edition
How do I do something like this:
$customer = Mage::getModel('customer/customer')->load($customer_id);
Mage::getModel('enterprise_reward/reward')->setPoints($customer, $points);
$points = Mage::getModel('enterprise_reward/reward')->getPoints($customer);
Upvotes: 3
Views: 4863
Reputation: 835
I found the accepted answer to cause a lot of errors, such as double points.
Here's the solution I came up wth
/*REWARD POINTS ADD START*/
$customerId = 1;
$order_id = 100000689;
$points = 10;
$customer = Mage::getModel('customer/customer')->load($customerId);
$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
$reward = Mage::getModel('enterprise_reward/reward')
->setCustomer($customer)
->setWebsiteId(Mage::app()->getWebsite()->getId())
->loadByCustomer();
$reward->setPointsDelta($points)
->setAction(Enterprise_Reward_Model_Reward::REWARD_ACTION_REVERT)
->setActionEntity($order)
->setComment('Added from affiliate program')
->updateRewardPoints();
/*END*/
This way it created the points, has the ActionEntity, updates the balance correctly and sets the history/
Upvotes: 1
Reputation: 2985
Figured it out. Do something like the following:
public function getPoints($customer_id = false) {
$customer = Mage::getModel('customer/customer')->load($customer_id);
$reward = Mage::getModel('enterprise_reward/reward')
->setCustomer($customer)
->setWebsiteId(Mage::app()->getWebsite()->getId())
->loadByCustomer();
$balance = $reward->getPointsBalance();
return $balance;
}
public function setPoints($customer_id = false, $points = false, $comment = 'Adjustment', $action = 0) {
$customer = Mage::getModel('customer/customer')->load($customer_id);
$reward = Mage::getModel('enterprise_reward/reward')
->setCustomer($customer)
->setWebsiteId(Mage::app()->getWebsite()->getId())
->loadByCustomer();
$reward->setPointsBalance($points)
->setAction($action) // Enterprise_Reward_Model_Reward::REWARD_ACTION_ADMIN
->setComment($comment)
->updateRewardPoints();
$history = Mage::getModel('enterprise_reward/reward_history')
->setReward($reward)->prepareFromReward()->save();
}
Upvotes: 5