contract SuperPartnerCrowdsale is Crowdsale, MintedCrowdsale, CappedCrowdsale {

  constructor(
    uint256 _rate,
    uint256 _cap,
    address _wallet,
    PartnerToken _token
  ) public
  Crowdsale(_rate, _wallet, _token)
  CappedCrowdsale(_cap) {

  }

  // Accept only round ETH purchase
  function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
    super._preValidatePurchase(_beneficiary, _weiAmount);
    require(_weiAmount%(10**18)==0);
  }

  // Override tokens amount as token has no decimal points and «_rate» not used
  function _getTokenAmount(uint256 _weiAmount)
    internal view returns (uint256) {
    return _weiAmount/(10**18);
  }

}
function _preValidatePurchase(address _beneficiary, uint256 _weiAmount) internal {
  super._preValidatePurchase(_beneficiary, _weiAmount);
  require(_weiAmount%(10**18)==0);
}

// Accept only round ETH purchase