/**
  * customize backend fields
  *
  * @return FieldList the form fields for the backend
  * 
  * @author Roland Lehmann <*****@*****.**>, Sebastian Diel <sdiel@Ï€ixeltricks.de>
  * @since 28.01.2013
  */
 public function getCMSFields()
 {
     $this->markAsSeen();
     $fields = SilvercartDataObject::getCMSFields($this);
     //add the shipping/invloice address fields as own tab
     $address = singleton('SilvercartAddress');
     $fields->findOrMakeTab('Root.ShippingAddressTab', $this->fieldLabel('ShippingAddressTab'));
     $fields->findOrMakeTab('Root.InvoiceAddressTab', $this->fieldLabel('InvoiceAddressTab'));
     $fields->addFieldToTab('Root.ShippingAddressTab', new LiteralField('sa__Preview', '<p>' . Convert::raw2xml($this->getShippingAddressSummary(true)) . '</p>'));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__TaxIdNumber', $address->fieldLabel('TaxIdNumber'), $this->SilvercartShippingAddress()->TaxIdNumber));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Company', $address->fieldLabel('Company'), $this->SilvercartShippingAddress()->Company));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__FirstName', $address->fieldLabel('FirstName'), $this->SilvercartShippingAddress()->FirstName));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Surname', $address->fieldLabel('Surname'), $this->SilvercartShippingAddress()->Surname));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Addition', $address->fieldLabel('Addition'), $this->SilvercartShippingAddress()->Addition));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Street', $address->fieldLabel('Street'), $this->SilvercartShippingAddress()->Street));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__StreetNumber', $address->fieldLabel('StreetNumber'), $this->SilvercartShippingAddress()->StreetNumber));
     $fields->addFieldToTab('Root.ShippingAddressTab', new CheckboxField('sa__IsPackstation', $address->fieldLabel('IsPackstation'), $this->SilvercartShippingAddress()->IsPackstation));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__PostNumber', $address->fieldLabel('PostNumber'), $this->SilvercartShippingAddress()->PostNumber));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Packstation', $address->fieldLabel('PackstationPlain'), $this->SilvercartShippingAddress()->Packstation));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Postcode', $address->fieldLabel('Postcode'), $this->SilvercartShippingAddress()->Postcode));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__City', $address->fieldLabel('City'), $this->SilvercartShippingAddress()->City));
     $fields->addFieldToTab('Root.ShippingAddressTab', new DropdownField('sa__Country', $address->fieldLabel('Country'), SilvercartCountry::get_active()->map()->toArray(), $this->SilvercartShippingAddress()->SilvercartCountry()->ID));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__PhoneAreaCode', $address->fieldLabel('PhoneAreaCode'), $this->SilvercartShippingAddress()->PhoneAreaCode));
     $fields->addFieldToTab('Root.ShippingAddressTab', new TextField('sa__Phone', $address->fieldLabel('Phone'), $this->SilvercartShippingAddress()->Phone));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new LiteralField('ia__Preview', '<p>' . Convert::raw2xml($this->getInvoiceAddressSummary(true)) . '</p>'));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__TaxIdNumber', $address->fieldLabel('TaxIdNumber'), $this->SilvercartInvoiceAddress()->TaxIdNumber));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Company', $address->fieldLabel('Company'), $this->SilvercartInvoiceAddress()->Company));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__FirstName', $address->fieldLabel('FirstName'), $this->SilvercartInvoiceAddress()->FirstName));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Surname', $address->fieldLabel('Surname'), $this->SilvercartInvoiceAddress()->Surname));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Addition', $address->fieldLabel('Addition'), $this->SilvercartInvoiceAddress()->Addition));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Street', $address->fieldLabel('Street'), $this->SilvercartInvoiceAddress()->Street));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__StreetNumber', $address->fieldLabel('StreetNumber'), $this->SilvercartInvoiceAddress()->StreetNumber));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new CheckboxField('ia__IsPackstation', $address->fieldLabel('IsPackstation'), $this->SilvercartInvoiceAddress()->IsPackstation));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__PostNumber', $address->fieldLabel('PostNumber'), $this->SilvercartInvoiceAddress()->PostNumber));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Packstation', $address->fieldLabel('PackstationPlain'), $this->SilvercartInvoiceAddress()->Packstation));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Postcode', $address->fieldLabel('Postcode'), $this->SilvercartInvoiceAddress()->Postcode));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__City', $address->fieldLabel('City'), $this->SilvercartInvoiceAddress()->City));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new DropdownField('ia__Country', $address->fieldLabel('Country'), SilvercartCountry::get_active()->map()->toArray(), $this->SilvercartInvoiceAddress()->SilvercartCountry()->ID));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__PhoneAreaCode', $address->fieldLabel('PhoneAreaCode'), $this->SilvercartInvoiceAddress()->PhoneAreaCode));
     $fields->addFieldToTab('Root.InvoiceAddressTab', new TextField('ia__Phone', $address->fieldLabel('Phone'), $this->SilvercartInvoiceAddress()->Phone));
     //add print preview
     $fields->findOrMakeTab('Root.PrintPreviewTab', $this->fieldLabel('PrintPreview'));
     $printPreviewField = new LiteralField('PrintPreviewField', sprintf('<iframe width="100%%" height="100%%" border="0" src="%s" class="print-preview"></iframe>', SilvercartPrint::getPrintInlineURL($this)));
     $fields->addFieldToTab('Root.PrintPreviewTab', $printPreviewField);
     return $fields;
 }