【问题标题】:Get customer in Mage_Tax_Model_Calculation::getRate in magento在 magento 中获取客户 Mage_Tax_Model_Calculation::getRate
【发布时间】:2010-11-05 09:04:14
【问题描述】:

我已经覆盖了Mage_Tax_model_Calculation::getRate,所以我不想对某些客户征税。我没有针对他们的特殊客户类别。

我的客户模型中有一个自定义字段,我想在我能够加载我的客户模型后检查它,如果这个字段有值,我不向他征税,否则我打电话给parent::getRate($request)

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

【问题讨论】:

    标签: magento e-commerce


    【解决方案1】:

    试试这样的:

    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
    【解决方案2】:

    试试这个来加载当前登录的客户:

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

    干杯, 京东

    【讨论】:

    • 谢谢,这在客户订购时会起作用,但管理员也可以为客户订购。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    相关资源
    最近更新 更多