Beispiel #1
0
 /**
  * Manages the after_save observer
  * @param Varien_Event_Observer $o
  * @return TBT_Rewards_Model_Tag_Observer
  */
 public function afterSaveTag(Varien_Event_Observer $o)
 {
     $tag = $this->_wrapperModel->wrap($o->getEvent()->getDataObject());
     //If the tag becomes approved, approve all associated pending tranfser
     if ($this->oldData['status'] == Mage_Tag_Model_Tag::STATUS_PENDING && $tag->getTag()->getStatus() == Mage_Tag_Model_Tag::STATUS_APPROVED) {
         $tag->approvePendingTransfers();
     } elseif ($this->oldData['status'] == Mage_Tag_Model_Tag::STATUS_PENDING && $tag->getTag()->getStatus() == Mage_Tag_Model_Tag::STATUS_DISABLED) {
         $tag->discardPendingTransfers();
         //If the tag is new (hence not having an id before) get applicable rules,
         //and create a pending transfer for each one
     } elseif ($tag->getTag()->getTagId() && !isset($this->oldData['tag_id'])) {
         $tag->ifNewTag();
     }
     return $this;
 }
Beispiel #2
0
 /**
  * Do the points transfer for the tag
  *
  * @param  TBT_Rewards_Model_Tag_Wrapper $tag
  * @param  int $rule       : Special Rule
  * @return boolean            : whether or not the point-transfer succeeded
  */
 public function transferTagPoints($tag, $rule)
 {
     $num_points = $rule->getPointsAmount();
     $currency_id = $rule->getPointsCurrencyId();
     $tag_id = $tag->getId();
     $rule_id = $rule->getId();
     $transfer = $this->initTransfer($num_points, $currency_id, $rule_id);
     if (!$transfer) {
         return false;
     }
     // get the default starting status - usually Pending
     if (!$transfer->setStatus(null, Mage::helper('rewards/config')->getInitialTransferStatusAfterTag())) {
         return false;
     }
     $transfer->setTagId($tag_id)->setCustomerId(Mage::getModel('tag/tag')->load($tag_id)->getFirstCustomerId())->setComments(Mage::getStoreConfig('rewards/transferComments/tagEarned'))->save();
     return true;
 }