我已覆盖Mage_Tax_model_Calculation::getRate
,因此我不想对某些客户征税。我没有特别的客户课程。
我的客户模型中有一个自定义字段,我想在我加载客户模型后检查该字段,如果此字段有值,我不会对他征税,否则我会调用parent::getRate($request)
是否可以在函数中获得它。
答案 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