【发布时间】:2010-11-05 09:04:14
【问题描述】:
我已经覆盖了Mage_Tax_model_Calculation::getRate,所以我不想对某些客户征税。我没有针对他们的特殊客户类别。
我的客户模型中有一个自定义字段,我想在我能够加载我的客户模型后检查它,如果这个字段有值,我不向他征税,否则我打电话给parent::getRate($request)
是否可以在函数中得到它。
【问题讨论】:
标签: magento e-commerce
我已经覆盖了Mage_Tax_model_Calculation::getRate,所以我不想对某些客户征税。我没有针对他们的特殊客户类别。
我的客户模型中有一个自定义字段,我想在我能够加载我的客户模型后检查它,如果这个字段有值,我不向他征税,否则我打电话给parent::getRate($request)
是否可以在函数中得到它。
【问题讨论】:
标签: magento e-commerce
试试这样的:
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 中加载会话似乎有副作用。见上文。
重新编辑:合并您的修复以供后代使用。
【讨论】:
$customer_id = $admin_session->getCustomerId() 其次,我将测试if($admin_session && $admin_session->getCustomerId()) 分成两部分,因此即使admin_session 为真,我们也不会尝试加载customer/session
试试这个来加载当前登录的客户:
$session = Mage::getSingleton('customer/session');
$customer = Mage::getModel('customer/customer')->load($session->getCustomerId());
$customValue = $customer->getCustomFieldName();
干杯, 京东
【讨论】: