2015-04-15 5 views
2

Я использую модуль проверки одной страницы от AheadWorks, и я пытаюсь получить только адреса фактурирования из зарегистрированных участников.Почтовый адрес Magento

В настоящее время выпадающее меню для выбора своего адреса для выставления счета показывает все адреса, созданные зарегистрированным членом. Также судоходные адреса. Я бы хотел, чтобы это показывало только биллинговые адреса. Есть ли способ сделать это? Я уже заглянул внутрь блока, который нужно использовать, но, к сожалению, я не понимаю.

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 и поместить это подразделение внутри самой сущности. Однако для этого потребуется переписать некоторую часть кода, которая будет широкой, чтобы дать точный ответ здесь.

В качестве альтернативы вы можете попытаться определить, является ли адрес фактурированием или отправкой, пройдя предыдущие заказы пользователя и проверив, какой тип он был там.