Платежный адрес Magento
Я использую одностраничный модуль проверки из AheadWorks и пытаюсь получить платежные адреса только от зарегистрированных пользователей.
В настоящее время в раскрывающемся меню выбора адреса для выставления счета отображаются все адреса, созданные зарегистрированным пользователем. Также доставка адресов. Я хотел бы, чтобы это показывало только адреса биллинга. Есть ли способ сделать это? Я уже заглянул внутрь блока, который нужно использовать, но, к сожалению, я не понимаю.
public function getAddressesHtmlSelect($type)
{
if ($this->isCustomerLoggedIn()) {
$options = array();
foreach ($this->getCustomer()->getAddresses() as $address) {
$options[] = array(
'value' => $address->getId(),
'label' => $address->format('oneline')
);
}
$addressDetails = Mage::getSingleton('checkout/session')->getData('aw_onestepcheckout_form_values');
if (isset($addressDetails[$type.'_address_id'])) {
if (empty($addressDetails[$type.'_address_id'])) {
$addressId = 0;
} else {
$addressId = $addressDetails[$type.'_address_id'];
}
} else {
$addressId = $this->getQuote()->getBillingAddress()->getCustomerAddressId();
}
if (empty($addressId) && $addressId !== 0) {
$address = $this->getCustomer()->getPrimaryBillingAddress();
if ($address) {
$addressId = $address->getId();
}
}
$select = $this->getLayout()->createBlock('core/html_select')
->setName($type.'_address_id')
->setId($type.'-address-select')
->setClass('address-select')
->setValue($addressId)
->setOptions($options);
return $select->getHtml();
}
return '';
}
2 ответа
Простой ответ - нет, вы не можете этого сделать. В принципе, у magento есть сущность клиента и сущность адреса клиента. Адрес клиента может иметь тип биллинга или доставки, но это относится только к расценкам и заказам. Но когда адрес сохраняется в адресах клиентов, он не указывает, какой он есть, поэтому вы можете использовать его для обоих этапов.
Длинный ответ Чтобы достичь того, что вам нужно, вы должны расширить адресную сущность magento и поместить это разделение в саму сущность. Однако для этого потребуется переписать некоторую часть кода, которая должна быть широкой, чтобы дать здесь точный ответ.
В качестве альтернативы вы можете попытаться определить, является ли адрес платежным или отгрузочным, пройдя предыдущие заказы пользователя и проверив, какой тип он был там.
Я тоже искал это, вот что я нашел, попробуйте: http://www.magebuzz.com/blog/disable-shipping-address-in-magento-checkout/