Question

Je souhaite afficher le prix sans taxes dans le catalogue pour les clients B2B, mais calculer avec les taxes comme d'habitude.

Je sais que cela peut être fait avec une deuxième vue du magasin, mais est-ce possible sans une deuxième vue ?

Était-ce utile?

La solution

Même s'il s'agit d'une question à réponse acceptée, je souhaite donner quelques conseils supplémentaires :

Comme je n'ai pas créé d'observateur mais cloné app/code/core/Mage/Tax/Model/Config.php en local, j'ai changé le getPriceDisplayType fonction avec quelques ajouts.

La réponse acceptée vérifie uniquement l’identifiant du groupe.Je suis allé plus loin et j'ai vérifié le TaxClassId.Il est désormais codé en dur, mais pourrait également être effectué via un paramètre de configuration dans le backend, lorsqu'il est enveloppé dans un observateur ou une extension.

Mes fonctions modifiées ressemblent à

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);
    }
}

Cela a fait tout ce dont j'avais besoin et je n'ai pas eu d'affichage ou d'"erreur" logique jusqu'à présent.

Les paramètres sont un peu « allemands » car les grands totaux sont affichés avec taxe tandis que les autres valeurs sont sans taxe.J'espère que cela aidera les autres aussi.

Autres conseils

Aller à System> Configuration> Taxe et là, recherchez la dernière onglet "Affichage".Dans "Prix du produit" choisit "y compris la taxe", puis enregistrez la configuration.

basé sur https://github.com/astorm/chaos J'ai créé un observateur qui changeLa valeur de configuration de tax/calculation/price_includes_tax sur temporaire Voir les prix sans impôt en fonction de la page et du groupe d'utilisateurs.

Ceci est court sur les commentaires mais cela pourrait aider quelqu'un:

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;
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top