2

AheadWorks の 1 ページ チェックアウト モジュールを使用しており、ログインしているメンバーからのみ請求先住所を取得しようとしています。

現在、請求先の住所を選択するためのドロップダウン メニューには、ログインしたメンバーが作成したすべての住所が表示されます。発送先も。請求先住所のみを表示したいと思います。そうする方法はありますか?使うべきブロックの中身は既に調べたのですが、残念ながらわかりません。

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 '';
}
4

2 に答える 2

2

簡単な答えはノーです。それはできません。原則として、magento には顧客エンティティと顧客アドレス エンティティがあります。顧客の住所は、請求または配送のタイプを持つことができますが、これは見積もりと注文にのみ適用されます。ただし、アドレスが顧客アドレスに保存されている場合、それがどちらであるかは示されないため、両方のステップで使用できます。

長い答え。必要なものを達成するには、magento の顧客アドレス エンティティを拡張し、この部門をエンティティ自体の内部に配置する必要があります。ただし、これには、ここで正確な答えを得るには広すぎるコードの一部を書き直す必要があります。

または、ユーザーの以前の注文を調べて、そこにあったタイプを確認することにより、住所が請求または配送であるかどうかを判断しようとすることもできます。

于 2015-04-15T21:46:15.673 に答える