Платежный адрес 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/

Другие вопросы по тегам