예제 #1
0
 protected function _checkSaleAmount($params, $source)
 {
     $parts = explode(AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_SEPARATOR, $this->getSaleAmount(), 2);
     if (count($parts) < 2) {
         return true;
     }
     list($condition, $value) = $parts;
     if (!$condition || !$value) {
         return true;
     }
     if (isset($params[$source])) {
         $saleAmount = $params[$source]->getGrandTotal();
         $currencyModel = Mage::getModel('directory/currency');
         $_baseCurrency = $currencyModel->getConfigBaseCurrencies();
         if ($_baseCurrency && is_array($_baseCurrency)) {
             $_baseCurrency = $_baseCurrency[0];
             $_currencyTo = $params[$source]->getData('order_currency_code');
             if (is_null($_currencyTo)) {
                 $_currencyTo = $params[$source]->getData('store_currency_code');
             }
             $saleAmount = Mage::helper('followupemail')->convertPrice($saleAmount, $_currencyTo, $_baseCurrency);
         }
     } else {
         return 'No source for sale amount condition';
     }
     if ($saleAmount === false) {
         return 'Order currency convertation error';
     }
     switch (array_search($condition, AW_Followupemail_Model_Source_Rule_Saleamount::getConditions())) {
         case AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_EQ:
             $result = $saleAmount == $value;
             break;
         case AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_GT:
             $result = $saleAmount > $value;
             break;
         case AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_EGT:
             $result = $saleAmount >= $value;
             break;
         case AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_LT:
             $result = $saleAmount < $value;
             break;
         case AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_ELT:
             $result = $saleAmount <= $value;
             break;
         case AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_NE:
             $result = $saleAmount != $value;
             break;
         default:
             return 'Unknown condition';
     }
     return true === $result ? true : 'Sale amount is not ' . $condition . ' ' . $value . ' (' . $saleAmount . ')';
 }
 public function editAction()
 {
     if (Mage::helper('followupemail')->checkVersion('1.4')) {
         $this->_title('Follow Up Rules Manager');
         $this->_title('Rule Edit');
     }
     $session = Mage::getSingleton('adminhtml/session');
     $ruleId = $this->getRequest()->getParam('id');
     $data = Mage::getModel('followupemail/rule')->load($ruleId)->getData();
     if (!empty($data) || $ruleId == 0) {
         $sessionData = Mage::getSingleton('adminhtml/session')->getFollowupemailData(true);
         if (is_array($sessionData)) {
             $data = array_merge($data, $sessionData);
         }
         $session->setFollowupemailData(false);
         if (isset($data['cancel_events']) && !is_array($data['cancel_events'])) {
             $data['cancel_events'] = explode(',', $data['cancel_events']);
         } else {
             $data['cancel_events'] = array();
         }
         if (!$ruleId) {
             $data['store_ids'] = array(0);
         }
         if (!isset($data['customer_groups']) || !$data['customer_groups'] || !count(is_array($data['customer_groups']) ? $data['customer_groups'] : ($data['customer_groups'] = explode(',', $data['customer_groups']))) || in_array(AW_Followupemail_Model_Source_Customer_Group::CUSTOMER_GROUP_ALL, $data['customer_groups']) && count($data['customer_groups']) > 1) {
             $data['customer_groups'] = array(AW_Followupemail_Model_Source_Customer_Group::CUSTOMER_GROUP_ALL);
         }
         if (Mage::helper('followupemail')->canUseAN()) {
             if (!isset($data['anl_segments']) || !$data['anl_segments'] || !count(is_array($data['anl_segments']) ? $data['anl_segments'] : ($data['anl_segments'] = explode(',', $data['anl_segments']))) || in_array(AW_Followupemail_Model_Mysql4_Rule::ADVANCED_NEWSLETTER_SEGMENTS_ALL, $data['anl_segments']) && count($data['anl_segments']) > 1) {
                 $data['anl_segments'] = array(AW_Followupemail_Model_Mysql4_Rule::ADVANCED_NEWSLETTER_SEGMENTS_ALL);
             }
         } elseif (!isset($data['anl_segments'])) {
             $data['anl_segments'] = false;
         }
         if (!isset($data['chain'])) {
             $data['chain'] = array();
         } elseif (!is_array($data['chain'])) {
             $data['chain'] = @unserialize($data['chain']);
         }
         if (!isset($data['product_type_ids']) || !$data['product_type_ids']) {
             $data['product_type_ids'] = array('all');
         } elseif (is_string($data['product_type_ids'])) {
             $data['product_type_ids'] = explode(',', $data['product_type_ids']);
         }
         if (!isset($data['sale_amount_condition']) && !isset($data['sale_amount_value']) && isset($data['sale_amount']) && $data['sale_amount'] && is_array($saleAmount = explode(AW_Followupemail_Model_Source_Rule_Saleamount::CONDITION_SEPARATOR, $data['sale_amount'], 2)) && count($saleAmount) > 1) {
             $data['sale_amount_condition'] = array_search($saleAmount[0], AW_Followupemail_Model_Source_Rule_Saleamount::getConditions());
             if (!$data['sale_amount_condition']) {
                 $data['sale_amount_condition'] = '0';
             }
             $data['sale_amount_value'] = $saleAmount[1];
         } else {
             $data['sale_amount_condition'] = '0';
             $data['sale_amount_value'] = '';
         }
         if (!isset($data['test_objects'])) {
             $data['test'] = array();
         } elseif (!isset($data['test'])) {
             $data['test'] = unserialize($data['test_objects']);
         }
         Mage::register('followupemail_data', $data);
         $this->loadLayout();
         $this->_setActiveMenu('followupemail/items');
         $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);
         $this->_addContent($this->getLayout()->createBlock('followupemail/adminhtml_rule_edit'))->_addLeft($this->getLayout()->createBlock('followupemail/adminhtml_rule_edit_tabs'));
         $this->renderLayout();
     } else {
         Mage::getSingleton('adminhtml/session')->addError($this->__('The rule does not exist'));
         $this->_redirect('*/*/');
     }
 }