src/Invoice/Completor.php
protected function correct0VatToVatFree()
    {
        if (isset($this->invoice[Tag::Customer][Tag::Invoice][Tag::VatType])) {
            $vatType = $this->invoice[Tag::Customer][Tag::Invoice][Tag::VatType];
            if (in_array($vatType, static::$vatTypesAllowingVatFree)) {
                foreach ($this->invoice[Tag::Customer][Tag::Invoice][Tag::Line] as &$line) {
                    if ($this->lineHas0VatRate($line)) {
                        $line[Tag::VatRate] = Api::VatFree;
                    }
                }
            }
        }
    }
protected function correct0VatToVatFree()
    {
        if (isset($this->invoice[Tag::Customer][Tag::Invoice][Tag::VatType])) {
            $vatType = $this->invoice[Tag::Customer][Tag::Invoice][Tag::VatType];
            if (in_array($vatType, static::$vatTypesAllowingVatFree)) {
                foreach ($this->invoice[Tag::Customer][Tag::Invoice][Tag::Line] as &$line) {
                    if ($this->lineHas0VatRate($line)) {
                        $line[Tag::VatRate] = Api::VatFree;
                    }
                }
            }
        }
    }
protected function correct0VatToVatFree ( ) { if ( isset ( $ this -> invoice [ Tag :: Customer ] [ Tag :: Invoice ] [ Tag :: VatType ] ) ) { $ vatType = $ this -> invoice [ Tag :: Customer ] [ Tag :: Invoice ] [ Tag :: VatType ] ; if ( in_array ( $ vatType , static :: $ vatTypesAllowingVatFree ) ) { foreach ( $ this -> invoice [ Tag :: Customer ] [ Tag :: Invoice ] [ Tag :: Line ] as & $ line ) { if ( $ this -> lineHas0VatRate ( $ line ) ) { $ line [ Tag :: VatRate ] = Api :: VatFree ; } } } } }
Change 0% vat rates to vat free.

Acumulus distinguishes between 0% vat (vatrate = 0) and vat free
(vatrate = -1).
0% vat should be used with:
- Reversed vat invoices, EU or national (vat type = 2 or 3).
- Products invoiced outside the EU (vat type = 4).
Vat free should be used for:
- Vat free products and services, e.g. care, education (vat type = 1, 5
or, theoretically, 6).
- Services invoiced to companies outside the EU (vat type = 1).
- Digital services outside the EU, consumers or companies (vat type = 1).

Thus, to do this correctly, especially for invoices outside the EU, we
should be able to distinguish between services and products. For that,
the nature field should be filled in or the shop should only sell
products or only services. If not, we act as if the line invoices a
product.

See:
- {@see https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/zakelijk/btw/tarieven_en_vrijstellingen/}
- {@see https://wiki.acumulus.nl/index.php?page=facturen-naar-het-buitenland}:
Change 0% vat rates to vat free .