Frage

In Warenkorb-Preisregel Ich kann die Bedingung als „Versandland“, „ist“ oder „ist nicht“ festlegen.Ich muss diese Bedingung auf alle Länder der Europäischen Union ausweiten.Da Magento diese Konfiguration hat

system > configuration > general > countries options

Gibt es eine Möglichkeit, es in der Preisbedingung „Warenkorbpreis“ zu verwenden?

War es hilfreich?

Lösung

Es gibt keine Standardfunktion.Für eine solche Regel sollten Sie in den Bedingungen den Typ ANY verwenden:

enter image description here

Wenn Sie das Standardbedingungsmodell erweitern möchten, sollten Sie die entsprechende Bedingung wie folgt umschreiben und hinzufügen:

Im Unterricht, wo Umschreiben Mage_SalesRule_Model_Rule_Condition_Address:

public function loadAttributeOptions()
{
    $attributes = parent::loadAttributeOptions()->getAttributeOption();
    $additionalAttributes = array(
        'eu' => Mage::helper('salesrule')->__('Europe Union Country'),
    );
    $attributes = array_merge($attributes, $additionalAttributes);
    $this->setAttributeOption($attributes);

    return $this;
}

Und

/**
 * Validate Address Rule Condition
 *
 * @param Varien_Object $object
 * @return bool
 */
public function validate(Varien_Object $object)
{
    $address = $object;
    if (!$address instanceof Mage_Sales_Model_Quote_Address) {
        if ($object->getQuote()->isVirtual()) {
            $address = $object->getQuote()->getBillingAddress();
        }
        else {
            $address = $object->getQuote()->getShippingAddress();
        }
    }
    // Eu check start
    if ('eu' == $this->getAttribute() && !$address->getEu()) {
        $this->setValue(boolval($this->getValue()));
        $euCountries = explode(',', Mage::getStoreConfig('general/country/eu_countries'));
        if (empty($euCountries)) {
            $euCountries = array();
        }
        $isEu = in_array($address->getCountry(), $euCountries);
        $address->setEu($isEu);
    }
    // Eu check end

    return parent::validate($address);
}

Das Feld erscheint in den Bedingungen:enter image description here

In den Regeln sollte alles korrekt funktionieren:enter image description here enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top