Carrito de compras Regla de precio para países de la Unión Europea
-
29-09-2020 - |
Pregunta
En la regla del precio del carrito de compras puedo establecer la condición como "país de envío" "es" o "no es".Necesito extender esta condición a todos los países de la Unión Europea.Dado que Magento tiene esta configuración en
system > configuration > general > countries options
Hay una manera de usarlo en la condición de precio del precio del carro de la compra?
Solución
No hay característica estándar. Para tal regla, debe usar el tipo de tipo en condiciones:
En caso de que desee extender el modelo de condición estándar, debe hacer la reescritura y agregar la condición apropiada como esta:
en clase donde reescribe 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;
}
y
/**
* 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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange