protected function initPossibleVatRates()
    {
        $possibleVatRates = array();

        $shopSettings = $this->config->getShopSettings();
        $nature = $shopSettings['nature_shop'];
        $vatFreeProducts = $shopSettings['vatFreeProducts'];

        foreach ($this->possibleVatTypes as $vatType) {
            switch ($vatType) {
                case Api::VatType_National:
                case Api::VatType_MarginScheme:
                    $vatTypeVatRates = $this->getVatRatesByCountryAndDate('nl');
                    // Add vat free (-1):
                    // - if selling vat free products/services
                    // - OR if outside EU AND (services OR company).
                    if ($vatFreeProducts != PluginConfig::VatFreeProducts_No) {
                        $vatTypeVatRates[] = -1;
                    } elseif ($this->isOutsideEu() && ($nature !== PluginConfig::Nature_Products || $this->isCompany())) {
                        $vatTypeVatRates[] = -1;
                    }
                    break;
                case Api::VatType_NationalReversed:
                case Api::VatType_EuReversed:
                case Api::VatType_RestOfWorld:
                    $vatTypeVatRates = array(0);
                    break;
                case Api::VatType_ForeignVat:
                    $vatTypeVatRates = $this->getVatRatesByCountryAndDate($this->invoice[Tag::Customer][Tag::CountryCode]);
                    break;
                default:
                    $vatTypeVatRates = array();
                    $this->log->error('Completor::initPossibleVatRates(): unknown vat type %d', $vatType);
                    break;
            }
            // convert the list of vat rates to a list of vat rate infos.
            foreach ($vatTypeVatRates as &$vatRate) {
                $vatRate = array(Tag::VatRate => $vatRate, Tag::VatType => $vatType);
            }
            $possibleVatRates = array_merge($possibleVatRates, $vatTypeVatRates);
        }
        $this->possibleVatRates = $possibleVatRates;
    }