عرض السعر بدون ضرائب في الواجهة الأمامية لمجموعة العملاء

magento.stackexchange https://magento.stackexchange.com//questions/58794

سؤال

أرغب في عرض السعر بدون الضرائب في الكتالوج لعملاء B2B ولكن مع احتساب الضرائب كالمعتاد.

أعلم أنه يمكن القيام بذلك من خلال عرض ثانٍ للمتجر ولكن هل هذا ممكن بدون عرض ثانٍ؟

هل كانت مفيدة؟

المحلول

حتى لو كان هذا سؤالًا مقبولاً للإجابة، أريد تقديم بعض النصائح الإضافية:

لأنني لم أقم بإنشاء مراقب ولكن تم استنساخه app/code/core/Mage/Tax/Model/Config.php إلى المحلية، لقد قمت بتغيير getPriceDisplayType وظيفة مع بعض الإضافات.

تتحقق الإجابة المقبولة من معرف المجموعة فقط.لقد ذهبت أبعد من ذلك وتحققت من TaxClassId.لقد تم ترميزه بشكل ثابت الآن ولكن يمكن إجراؤه عبر إعداد التكوين أيضًا في الواجهة الخلفية، عند تضمينه في مراقب أو ملحق.

تبدو وظائفي المعدلة

public function getPriceDisplayType($store = null)
{
    $customerGroupId = Mage::getModel('customer/customer')->getGroupId();
    $customerGroup = Mage::getModel('customer/group')->load($customerGroupId);
    $customerTaxId = $customerGroup->getTaxClassId($customerGroupId);

    if ($customerTaxId == 5) {
        $this->changeConfigTemp('tax/cart_display/price', '1');
        $this->changeConfigTemp('tax/cart_display/subtotal', '1');
        $this->changeConfigTemp('tax/display/type', '1');
        $this->changeConfigTemp('tax/sales_display/price', '1');
        $this->changeConfigTemp('tax/sales_display/subtotal', '1');
        $this->changeConfigTemp('tax/display/show_in_catalog', '1');
    } else {
        return (int)$this->_getStoreConfig(self::CONFIG_XML_PATH_PRICE_DISPLAY_TYPE, $store);
    }
}

لقد فعل هذا كل ما أحتاجه ولم أواجه عرضًا أو "خطأ" منطقيًا حتى الآن.

الإعدادات تشبه إلى حد ما "الألمانية" حيث يتم عرض الإجماليات الشاملة بما في ذلك الضريبة بينما تكون القيم الأخرى بدون ضريبة.نأمل أن يساعد هذا الآخرين أيضا.

نصائح أخرى

انتقل إلى النظام> التكوين> الضريبة وهناك، ابحث عن علامة تبويب الاخيرة "عرض".في "عرض أسعار المنتج" يختار "بما في ذلك واستبعاد الضريبة" ثم حفظ التكوين.

مرتكز على https://github.com/astorm/Chaos لقد قمت بإنشاء مراقب يقوم بتغيير قيمة التكوين الخاصة بـ tax/calculation/price_includes_tax لعرض الأسعار بشكل مؤقت بدون ضريبة حسب الصفحة ومجموعة المستخدمين.

هذا مختصر للتعليقات ولكنه قد يساعد شخصًا ما:

class YourThing_TaxChanger_Model_Observer
{
    static protected $_hasRun = false;

    public function setup($observer)
    {
        if($this->_shouldBail($observer))
        {
            return;
        }

        $roleId = Mage::getSingleton('customer/session')->getCustomerGroupId();
        //echo Mage::getSingleton('customer/group')->load($roleId)->getData('customer_group_code');
        $page = Mage::app()->getFrontController()->getRequest()->getControllerName();

        // check user group and page
        if ($roleId == 2 && (in_array($page, array('product', 'category', 'result'))))
        {
            // show price without tax
            $this->changeConfigTemp('tax/calculation/price_includes_tax', '1');
            // germansetup tax info
            //$this->changeConfigTemp('tax/sales_display/price', Mage_Tax_Model_Config::DISPLAY_TYPE_EXCLUDING_TAX);
        }
    }

    /**
     * Change a config value without saving it.
     */
    protected function changeConfigTemp($path, $value)
    {
        $config = Mage::getConfig();
        $store = Mage::app()->getStore();
        $code  = $store->getCode();
        $config->setNode("stores/$code/" . $path, $value);
    }

    protected function _shouldBail($observer)
    {
        $config = Mage::getConfig();
        if(!$config)
        {
            return true;
        }
        if(Mage::app()->getStore()->isAdmin())
        {
            return true;
        }

        return false;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top