/**
  * Adds or modifies the fields for the Main tab
  *
  * @param FieldList $fields FieldList to add fields to
  * 
  * @return void
  */
 public function getFieldsForMain($fields)
 {
     $fields->dataFieldByName('StockQuantityOverbookable')->setTitle($this->fieldLabel('StockQuantityOverbookableShort'));
     $fields->dataFieldByName('StockQuantityExpirationDate')->addExtraClass("date");
     $fields->dataFieldByName('StockQuantityExpirationDate')->setConfig('showcalendar', true);
     $fields->dataFieldByName('StockQuantityExpirationDate')->FieldHolder();
     $purchaseTimeUnitSource = array('Days' => _t('Silvercart.DAYS', 'Days'), 'Weeks' => _t('Silvercart.WEEKS', 'Weeks'), 'Months' => _t('Silvercart.MONTHS', 'Months'));
     $fields->dataFieldByName('PurchaseTimeUnit')->setSource($purchaseTimeUnitSource);
     $fields->dataFieldByName('ReleaseDate')->getDateField()->addExtraClass("date")->setConfig('showcalendar', true);
     $fields->dataFieldByName('LaunchDate')->getDateField()->addExtraClass("date")->setConfig('showcalendar', true);
     $fields->dataFieldByName('SalesBanDate')->getDateField()->addExtraClass("date")->setConfig('showcalendar', true);
     $productNumberGroup = new SilvercartFieldGroup('ProductNumberGroup', '', $fields);
     $productNumberGroup->push($fields->dataFieldByName('ProductNumberShop'));
     $productNumberGroup->push($fields->dataFieldByName('ProductNumberManufacturer'));
     $productNumberGroup->push($fields->dataFieldByName('EANCode'));
     $baseDataToggle = ToggleCompositeField::create('ProductBaseDataToggle', $this->fieldLabel('BasicData'), array($fields->dataFieldByName('isActive'), $fields->dataFieldByName('IsNotBuyable'), $productNumberGroup))->setHeadingLevel(4)->setStartClosed(false);
     $fields->removeByName('isActive');
     $fields->removeByName('IsNotBuyable');
     $fields->insertBefore($baseDataToggle, 'Title');
     if ($this->exists()) {
         $fields->insertAfter(new CheckboxField('RefreshCache', $this->fieldLabel('RefreshCache')), 'isActive');
     }
     $descriptionToggle = ToggleCompositeField::create('ProductDescriptionToggle', $this->fieldLabel('LongDescription'), array($fields->dataFieldByName('Title'), $fields->dataFieldByName('ShortDescription'), $fields->dataFieldByName('LongDescription')))->setHeadingLevel(4)->setStartClosed(false);
     $fields->removeByName('Title');
     $fields->removeByName('ShortDescription');
     $fields->removeByName('LongDescription');
     $fields->insertAfter($descriptionToggle, 'ProductBaseDataToggle');
     $availabilityGroup = new SilvercartFieldGroup('AvailabilityGroup', '', $fields);
     $availabilityGroup->push($fields->dataFieldByName('SilvercartAvailabilityStatusID'));
     $availabilityGroup->breakAndPush($fields->dataFieldByName('PurchaseMinDuration'));
     $availabilityGroup->push($fields->dataFieldByName('PurchaseMaxDuration'));
     $availabilityGroup->push($fields->dataFieldByName('PurchaseTimeUnit'));
     $availabilityGroup->breakAndPush($fields->dataFieldByName('StockQuantity'));
     $availabilityGroup->push($fields->dataFieldByName('StockQuantityOverbookable'));
     $availabilityGroup->push($fields->dataFieldByName('StockQuantityExpirationDate'));
     $availabilityGroupToggle = ToggleCompositeField::create('AvailabilityGroupToggle', $this->fieldLabel('SilvercartAvailabilityStatus'), array($availabilityGroup))->setHeadingLevel(4)->setStartClosed(true);
     $fields->insertAfter($availabilityGroupToggle, 'ProductDescriptionToggle');
     $timeGroup = new SilvercartFieldGroup('TimeGroup', '', $fields);
     $timeGroup->push($fields->dataFieldByName('ReleaseDate'));
     $timeGroup->pushAndBreak(new LabelField('ReleaseDateInfo', '<br/><br/><br/>' . $this->fieldLabel('ReleaseDateInfo')));
     $timeGroup->push($fields->dataFieldByName('LaunchDate'));
     $timeGroup->pushAndBreak(new LabelField('LaunchDateInfo', '<br/><br/><br/>' . $this->fieldLabel('LaunchDateInfo')));
     $timeGroup->push($fields->dataFieldByName('SalesBanDate'));
     $timeGroup->pushAndBreak(new LabelField('SalesBanDateInfo', '<br/><br/><br/>' . $this->fieldLabel('SalesBanDateInfo')));
     $timeGroupToggle = ToggleCompositeField::create('TimeGroupToggle', $this->fieldLabel('TimeGroup'), array($timeGroup))->setHeadingLevel(4)->setStartClosed(true);
     $fields->insertAfter($timeGroupToggle, 'AvailabilityGroupToggle');
     $miscGroup = new SilvercartFieldGroup('MiscGroup', '', $fields);
     if ($fields->hasField('SilvercartManufacturerID')) {
         $miscGroup->pushAndBreak($fields->dataFieldByName('SilvercartManufacturerID'));
     }
     $miscGroup->breakAndPush($fields->dataFieldByName('ExcludeFromPaymentDiscounts'));
     $miscGroup->breakAndPush($fields->dataFieldByName('PackagingQuantity'));
     $miscGroup->pushAndBreak($fields->dataFieldByName('SilvercartQuantityUnitID'));
     $miscGroup->breakAndPush($fields->dataFieldByName('Weight'));
     $miscGroup->breakAndPush($fields->dataFieldByName('SilvercartProductConditionID'));
     $miscGroupToggle = ToggleCompositeField::create('AvailabilityGroupToggle', $this->fieldLabel('MiscGroup'), array($miscGroup))->setHeadingLevel(4)->setStartClosed(true);
     $fields->insertAfter($miscGroupToggle, 'TimeGroupToggle');
 }