2010-11-05 18 views
1

我已覆盖Mage_Tax_model_Calculation::getRate,因此我不想为某些客户征税。我没有特别的客户课。在magento中获取Mage_Tax_Model_Calculation :: getRate中的客户

我有一个自定义字段在我的客户模型,这是我想检查我可以载入我的客户模型后,如果该字段的值我不含税他,否则我叫parent::getRate($request)

是它有可能在功能中得到。

回答

2

尝试是这样的:

function getRate($request) { 
    // find a customer ID 
    $admin_session = Mage::getSingleton('adminhtml/session_quote'); 
    if($admin_session) { 
     if($admin_session->getCustomerId()) { 
      $customer_id = $admin_session->getCustomerId(); 
     } 
    } else { 
     $customer_id = Mage::getSingleton("customer/session")->getCustomerId(); 
    } 

    // find customer attr 
    if($customer_id) { 
     $customer = Mage::getModel("customer/customer")->load($customer_id); 
     if($customer->getSomeColumnValue()) { 
      return 0; 
     } 
    } 

    // fallthrough 
    return parent::getRate($request); 
} 

希望帮助!

谢谢, 乔


编辑:好点;)

翻翻adminhtml代码,它似乎比正常的客户代码几乎没什么用处。我希望打个电话给Mage :: register,但那没有发生。我发现了一个可能的解决方案,但在Magento中加载会话似乎有副作用。往上看。

重新编辑:将您的修复程序纳入后人。

+0

谢谢,这会在客户订购时起作用,但管理员也有可能为客户订购。 – 2010-11-05 12:48:29

+0

谢谢,它的工作。除了一个小错误。第二,如果($ admin_session && $ admin_session-> getCustomerId())' '这个测试打破了测试 两个如此平坦如果admin_session为true,我们不会尝试加载'customer/session' – 2010-11-05 14:23:37

+0

好想法:) – 2010-11-05 18:33:52

1

尝试使用此方法加载当前登录的用户:

$session = Mage::getSingleton('customer/session'); 
$customer = Mage::getModel('customer/customer')->load($session->getCustomerId()); 
$customValue = $customer->getCustomFieldName(); 

干杯, JD

+0

谢谢,这可以在客户订购时起作用,但管理员也有可能为客户订购。 – 2010-11-05 12:48:55

相关问题