public function getFormFields(Order $order)
{
$member = Member::currentUser() ?: $order->Member();
if (!$member || !$member->exists() || !$member->AddressBook()->exists()) {
return parent::getFormFields($order);
}
$options = [];
$default = $this->getDefaultAddress($member);
$params = ['addfielddescriptions' => $this->formfielddescriptions];
$addressFields = $default->getFrontEndFields($params);
if ($this->allowSaveAsNew) {
$addressFields->push(CheckboxField::create('saveAsNew', _t('AlternateAddressBookCheckoutComponent.SAVE_AS_NEW', 'Save as new address')));
}
$options[] = SelectionGroup_Item::create('address-' . $default->ID, HasOneCompositeField::create('address-' . $default->ID, $default, $addressFields), _t('AlternateAddressBookCheckoutComponent.USE_DEFAULT', '{address}', ['address' => $default->Title]));
if ($member->AddressBook()->exclude('ID', $default->ID)->exists()) {
foreach ($member->AddressBook()->exclude('ID', $default->ID) as $address) {
$addressFields = $address->getFrontEndFields($params);
$addressFields->push(CheckboxField::create('saveAsNew', _t('AlternateAddressBookCheckoutComponent.SAVE_AS_NEW', 'Save as new address')));
if ($member->DefaultShippingAddressID != $address->ID) {
$addressFields->push(CheckboxField::create('useAsDefaultShipping', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_SHIPPING', 'Use as default shipping address')));
}
if ($member->DefaultBillingAddressID != $address->ID) {
$addressFields->push(CheckboxField::create('useAsDefaultBilling', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_BILLING', 'Use as default billing address')));
}
$options[] = SelectionGroup_Item::create('address-' . $address->ID, HasOneCompositeField::create('address-' . $address->ID, $address, $addressFields), _t('AlternateAddressBookCheckoutComponent.SHIP_TO_SELECTED_ADDRESS', '{address}', ['address' => $address->Title]));
}
}
if ($this->allowNew) {
$addressFields = parent::getFormFields($order);
$addressFields->push(CheckboxField::create('useAsDefaultShipping', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_SHIPPING', 'Use as default shipping address')));
$addressFields->push(CheckboxField::create('useAsDefaultBilling', _t('AlternateAddressBookCheckoutComponent.USE_AS_DEFAULT_BILLING', 'Use as default billing address')));
$options[] = SelectionGroup_Item::create('new', HasOneCompositeField::create('new', Address::create(), $addressFields), _t('AlternateAddressBookCheckoutComponent.' . $this->addresstype . '_TO_NEW_ADDRESS', 'New ' . ucfirst($this->addresstype) . ' Address'));
}
return FieldList::create(TabbedSelectionGroup::create('Use', $options)->setTitle(_t('ShippingDetails.' . $this->addresstype . '_ADDRESS', ucfirst($this->addresstype) . ' Address'))->setLabelTab(true)->showAsDropdown(true));
}