在magento中获取Mage_Tax_Model_Calculation :: getRate中的客户

时间:2010-11-05 09:04:14

标签: magento e-commerce

我已覆盖Mage_Tax_model_Calculation::getRate,因此我不想对某些客户征税。我没有特别的客户课程。

我的客户模型中有一个自定义字段,我想在我加载客户模型后检查该字段,如果此字段有值,我不会对他征税,否则我会调用parent::getRate($request)

是否可以在函数中获得它。

2 个答案:

答案 0 :(得分: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中加载会话似乎有副作用。见上文。

重新编辑:为后代整合您的修补程序。

答案 1 :(得分:1)

尝试此操作以加载当前登录的客户:

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

干杯, JD