本文整理汇总了PHP中Mage_SalesRule_Model_Rule::validate方法的典型用法代码示例。如果您正苦于以下问题:PHP Mage_SalesRule_Model_Rule::validate方法的具体用法?PHP Mage_SalesRule_Model_Rule::validate怎么用?PHP Mage_SalesRule_Model_Rule::validate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mage_SalesRule_Model_Rule
的用法示例。
在下文中一共展示了Mage_SalesRule_Model_Rule::validate方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: validate
public function validate(Varien_Object $object)
{
if (substr($this->getCouponCode(), 0, 6) != 'points') {
return parent::validate($object);
}
$customerId = Mage::getModel('customer/session')->getCustomerId();
$reward_model = Mage::getModel('rewardpoints/stats');
$current = $reward_model->getPointsCurrent($customerId, Mage::app()->getStore()->getId());
if ($current < $this->getPointsAmt()) {
Mage::getSingleton('checkout/session')->addError('Not enough points available.');
Mage::helper('checkout/cart')->getCart()->getQuote()->setRewardpointsQuantity(NULL)->setRewardpointsDescription(NULL)->setBaseRewardpoints(NULL)->setRewardpoints(NULL)->save();
return false;
}
$step_apply = Mage::getStoreConfig('rewardpoints/default/step_apply', Mage::app()->getStore()->getId());
$step = Mage::getStoreConfig('rewardpoints/default/step_value', Mage::app()->getStore()->getId());
if ($step > $this->getPointsAmt() && $step_apply) {
Mage::getSingleton('checkout/session')->addError('The minimum required points is not reached.');
return false;
}
if ($step_apply) {
if ($this->getPointsAmt() % $step != 0) {
Mage::getSingleton('checkout/session')->addError('Amount of points wrongly used.');
return false;
}
}
return true;
}
示例2: _canProcessRule
/**
* Check if rule can be applied for specific address/quote/customer
*
* @param Mage_SalesRule_Model_Rule $rule
* @param Mage_Sales_Model_Quote_Address $address
* @return bool
*/
protected function _canProcessRule($rule, $address)
{
if ($rule->hasIsValidForAddress($address) && !$address->isObjectNew()) {
return $rule->getIsValidForAddress($address);
}
/**
* check per coupon usage limit
*/
if ($rule->getCouponType() != Mage_SalesRule_Model_Rule::COUPON_TYPE_NO_COUPON) {
$couponCode = $address->getQuote()->getCouponCode();
if (strlen($couponCode)) {
$coupon = Mage::getModel('salesrule/coupon');
$coupon->load($couponCode, 'code');
if ($coupon->getId()) {
// check entire usage limit
if ($coupon->getUsageLimit() && $coupon->getTimesUsed() >= $coupon->getUsageLimit()) {
$rule->setIsValidForAddress($address, false);
return false;
}
// check per customer usage limit
$customerId = $address->getQuote()->getCustomerId();
if ($customerId && $coupon->getUsagePerCustomer()) {
$couponUsage = new Varien_Object();
Mage::getResourceModel('salesrule/coupon_usage')->loadByCustomerCoupon($couponUsage, $customerId, $coupon->getId());
if ($couponUsage->getCouponId() && $couponUsage->getTimesUsed() >= $coupon->getUsagePerCustomer()) {
$rule->setIsValidForAddress($address, false);
return false;
}
}
}
}
}
/**
* check per rule usage limit
*/
$ruleId = $rule->getId();
if ($ruleId && $rule->getUsesPerCustomer()) {
$customerId = $address->getQuote()->getCustomerId();
$ruleCustomer = Mage::getModel('salesrule/rule_customer');
$ruleCustomer->loadByCustomerRule($customerId, $ruleId);
if ($ruleCustomer->getId()) {
if ($ruleCustomer->getTimesUsed() >= $rule->getUsesPerCustomer()) {
$rule->setIsValidForAddress($address, false);
return false;
}
}
}
$rule->afterLoad();
/**
* quote does not meet rule's conditions
*/
if (!$rule->validate($address)) {
$rule->setIsValidForAddress($address, false);
return false;
}
/**
* passed all validations, remember to be valid
*/
$rule->setIsValidForAddress($address, true);
return true;
}
示例3: _canProcessRule
/**
* Check if rule can be applied for specific address/quote/customer
*
* @param Mage_SalesRule_Model_Rule $rule
* @param Mage_Sales_Model_Quote_Address $address
* @return bool
*/
protected function _canProcessRule($rule, $address)
{
if (!$rule->hasIsValid()) {
/**
* too many times used in general
*/
if ($rule->getUsesPerCoupon() && $rule->getTimesUsed() >= $rule->getUsesPerCoupon()) {
$rule->setIsValid(false);
return false;
}
/**
* too many times used for this customer
*/
$ruleId = $rule->getId();
if ($ruleId && $rule->getUsesPerCustomer()) {
$customerId = $address->getQuote()->getCustomerId();
$ruleCustomer = Mage::getModel('salesrule/rule_customer');
$ruleCustomer->loadByCustomerRule($customerId, $ruleId);
if ($ruleCustomer->getId()) {
if ($ruleCustomer->getTimesUsed() >= $rule->getUsesPerCustomer()) {
$rule->setIsValid(false);
return false;
}
}
}
$rule->afterLoad();
/**
* quote does not meet rule's conditions
*/
if (!$rule->validate($address)) {
$rule->setIsValid(false);
return false;
}
/**
* passed all validations, remember to be valid
*/
$rule->setIsValid(true);
}
return $rule->getIsValid();
}