最新的欧洲增值税率

v2.3.3 2021-10-01 00:14 UTC

This package is auto-updated.

Last update: 2024-08-29 05:43:30 UTC


README

最新的欧洲增值税率

vatrates.nickstakenburg.com

增值税率以 JSON 格式存储,并提供 JavaScriptPHP 类以方便访问。

安装

下载

CDN

<script src='https://unpkg.com/vatrates@2/dist/vatrates.min.js'></script>
<!-- or -->
<script src='https://unpkg.com/vatrates@2/dist/vatrates.js'></script>

NPM

npm install vatrates

Composer

对于PHP包

composer require staaky/vatrates

JavaScript

需要vatrates或使用script标签包含vatrates.js

var vatRates = require('vatrates');
<script src='vatrates.js'></script>

使用new VATRates()创建的实例提供了几个增值税率函数。建议在使用之前始终使用isVATCountry()检查,如下所示

var VATRates = require('vatrates');

var vatRates = new VATRates();
if (vatRates.isVATCountry('RO')) {
    console.log(vatRates.getSuperReducedRate('RO')); // -> undefined
    console.log(vatRates.getReducedRates('RO'));     // -> [5, 9]
    console.log(vatRates.getStandardRate('RO'));     // -> 19
    console.log(vatRates.getParkingRate('RO'));      // -> undefined
}

默认税率为今天的税率,要获取不同日期的税率,请传递一个Date

var vatRates = new VATRates(new Date('2016-01-01'));
if (vatRates.isVATCountry('RO')) {
    console.log(vatRates.getStandardRate('RO')); // -> 20
}

您还可以通过在先前创建的实例上调用setDate()来更改日期

var vatRates = new VATRates();
vatRates.setDate(new Date('2015-01-01'));
if (vatRates.isVATCountry('RO')) {
    console.log(vatRates.getStandardRate('RO')); // -> 24
}

getCountry(countryCode)

另一种方法是使用getCountry(),它返回一个VATCountry或当国家不使用增值税时返回undefined。使用VATCountry,您将拥有所有增值税率函数和一些额外的辅助函数。

var vatRates = new VATRates();
var country;
if ((country = vatRates.getCountry('GB'))) {
    console.log(country.getName());             // -> "United Kingdom"
    console.log(country.getCode());             // -> "UK"
    console.log(country.getCountryCode());      // -> "GB"
    console.log(country.getSuperReducedRate()); // -> undefined
    console.log(country.getReducedRates());     // -> [5]
    console.log(country.getStandardRate());     // -> 20
    console.log(country.getParkingRate());      // -> undefined
}

英国和希腊使用额外的非标准国家代码“UK”和“EL”,这些也被接受。

vatRates.getCountry('UK'); // -> same result as 'GB'

getCountries()

返回一个包含所有使用增值税的国家数组,作为VATCountry

var vatRates = new VATRates();
var countries = vatRates.getCountries();

countries.forEach(function(country) {
  console.log(country.getCountryCode() + " has VAT: " + country.getStandardRate());
});

setDate(date)

设置要返回增值税率的日期。

var vatRates = new VATRates();
vatRates.setDate(new Date('2015-01-01'));

这与

var vatRates = new VATRates(new Date('2015-01-01'));

所有其他函数都考虑这个日期,所以请确保始终首先设置日期。

isVATCountry(countryCode)

如果国家使用增值税,则返回true,如果不使用,则返回false

var vatRates = new VATRates();
console.log(vatRates.isVATCountry('FR')); // -> true
console.log(vatRates.isVATCountry('US')); // -> false

getSuperReducedRate(countryCode)

返回国家的超级低税率,如果没有可用的超级低税率,则返回undefined

var vatRates = new VATRates();
if (vatRates.isVATCountry('FR')) {
  console.log(vatRates.getSuperReducedRate('FR')); // -> 2.1
});

getCountry()返回的VATCountry直接提供此方法。

var vatRates = new VATRates();
var country;
if ((country = vatRates.getCountry('FR'))) {
  console.log(country.getName());             // -> "France"
  console.log(country.getSuperReducedRate()); // -> 2.1
}

getReducedRates(countryCode)

返回一个包含国家低税率的数组,如果没有可用的低税率,则返回undefined

var vatRates = new VATRates();
if (vatRates.isVATCountry('IE')) {
  console.log(vatRates.getReducedRates('IE')); // -> [9, 13.5]
});

VATCountry直接提供此方法。

var vatRates = new VATRates();
var country;
if ((country = vatRates.getCountry('IE'))) {
  console.log(country.getName());         // -> "Ireland"
  console.log(country.getReducedRates()); // -> [9, 13.5]
}

getStandardRate(countryCode)

返回国家的标准税率,如果没有可用的标准税率,则返回undefined

var vatRates = new VATRates();
if (vatRates.isVATCountry('NL')) {
  console.log(vatRates.getStandardRate('NL')); // -> 21
});

VATCountry直接提供此方法。

var vatRates = new VATRates();
var country;
if ((country = vatRates.getCountry('NL'))) {
  console.log(country.getName());         // -> "Netherlands"
  console.log(country.getStandardRate()); // -> 21
}

getParkingRate(countryCode)

返回国家的停车税率,如果没有可用的停车税率,则返回undefined

var vatRates = new VATRates();
if (vatRates.isVATCountry('LU')) {
  console.log(vatRates.getParkingRate('LU')); // -> 14
}

VATCountry直接提供此方法。

var vatRates = new VATRates();
var country;
if ((country = vatRates.getCountry('LU'))) {
  console.log(country.getName());        // -> "Luxembourg"
  console.log(country.getParkingRate()); // -> 14
}

PHP

通过Composer安装后,使用Staaky\VATRates\VATRates

composer require staaky/vatrates
use Staaky\VATRates\VATRates;

使用new VATRates()创建的实例提供了几个增值税率函数。建议在使用之前始终使用isVATCountry()检查,如下所示

$vatRates = new VATRates();
if ($vatRates->isVATCountry('RO')) {
    var_dump($vatRates->getSuperReducedRate('RO')); // -> null
    var_dump($vatRates->getReducedRates('RO'));     // -> [5, 9]
    var_dump($vatRates->getStandardRate('RO'));     // -> 19
    var_dump($vatRates->getParkingRate('RO'));      // -> null
}

默认税率为今天的税率,要获取不同日期的税率,请传递一个DateTime

$vatRates = new VATRates(new DateTime('2016-01-01'));
if ($vatRates->isVATCountry('RO')) {
    var_dump($vatRates->getStandardRate('RO')); // -> 20
}

您还可以通过在先前创建的实例上调用setDate()来更改日期

$vatRates = new VATRates();
$vatRates->setDate(new DateTime('2015-01-01'));
if ($vatRates->isVATCountry('RO')) {
    var_dump($vatRates->getStandardRate('RO')); // -> 24
}

getCountry(countryCode)

另一种方法是使用getCountry(),它返回一个VATCountry或当国家不使用增值税时返回null。使用VATCountry,您将拥有所有增值税率函数和一些额外的辅助函数。

$vatRates = new VATRates();
if (($country = $vatRates->getCountry('GB'))) {
    var_dump($country->getName());             // -> "United Kingdom"
    var_dump($country->getCode());             // -> "UK"
    var_dump($country->getCountryCode());      // -> "GB"
    var_dump($country->getSuperReducedRate()); // -> null
    var_dump($country->getReducedRates());     // -> [5]
    var_dump($country->getStandardRate());     // -> 20
    var_dump($country->getParkingRate());      // -> null
}

英国和希腊使用额外的非标准国家代码“UK”和“EL”,这些也被接受。

$vatRates->getCountry('UK'); // -> same result as 'GB'

getCountries()

返回一个包含所有使用增值税的国家数组,作为VATCountry

$vatRates = new VATRates();
$countries = $vatRates->getCountries();

foreach ($countries as $country) {
  print_r($country->getCountryCode() . " has VAT: " . $country->getStandardRate() . "\n");
}

setDate(DateTime $date)

设置要返回增值税率的日期。

$vatRates = new VATRates();
$vatRates->setDate(new DateTime('2015-01-01'));

这与

$vatRates = new VATRates(new DateTime('2015-01-01'));

所有其他函数都考虑这个日期,所以请确保始终首先设置日期。

isVATCountry($countryCode)

如果国家使用增值税,则返回true,如果不使用,则返回false

$vatRates = new VATRates();
var_dump($vatRates->isVATCountry('FR')); // -> true
var_dump($vatRates->isVATCountry('US')); // -> false

getSuperReducedRate($countryCode)

返回国家的超级低税率,如果没有可用的超级低税率,则返回null

$vatRates = new VATRates();
if ($vatRates->isVATCountry('FR')) {
  var_dump($vatRates->getSuperReducedRate('FR')); // -> 2.1
});

getCountry()返回的VATCountry直接提供此方法。

$vatRates = new VATRates();
if (($country = $vatRates->getCountry('FR'))) {
  var_dump($country->getName());             // -> "France"
  var_dump($country->getSuperReducedRate()); // -> 2.1
}

getReducedRates($countryCode)

返回一个包含国家低税率的数组,如果没有可用的低税率,则返回null

$vatRates = new VATRates();
if ($vatRates->isVATCountry('IE')) {
  var_dump($vatRates->getReducedRates('IE')); // -> [9, 13.5]
}

VATCountry直接提供此方法。

$vatRates = new VATRates();
if (($country = $vatRates->getCountry('IE'))) {
  var_dump($country->getName());         // -> "Ireland"
  var_dump($country->getReducedRates()); // -> [9, 13.5]
}

getStandardRate($countryCode)

返回一个国家的标准税率,或者当不可用时返回null

$vatRates = new VATRates();
if ($vatRates->isVATCountry('NL')) {
  var_dump($vatRates->getStandardRate('NL')); // -> 21
});

VATCountry直接提供此方法。

$vatRates = new VATRates();
if (($country = $vatRates->getCountry('NL'))) {
  var_dump($country->getName());         // -> "Netherlands"
  var_dump($country->getStandardRate()); // -> 21
}

getParkingRate($countryCode)

返回一个国家的停车费率,或者当不可用时返回null

$vatRates = new VATRates();
if ($vatRates->isVATCountry('LU')) {
  var_dump($vatRates->getParkingRate('LU')); // -> 14
});

VATCountry直接提供此方法。

$vatRates = new VATRates();
if (($country = $vatRates->getCountry('LU'))) {
  var_dump($country->getName());        // -> "Luxembourg"
  var_dump($country->getParkingRate()); // -> 14
}

开发

Webpack

在您更改后,使用webpack创建新的构建。

webpack

Gulp

使用gulp/example文件夹中加载页面。它显示了所有文件(JavaScript、JSON和PHP)的输出,并在您修改源代码时自动使用webpack重新构建。

gulp

单元测试

使用npm test运行单元测试,这将运行所有语言的测试。

npm test

JavaScript测试使用Mocha运行,PHP测试使用Peridot运行。它们也可以单独运行

npm run mocha
npm run peridot

贡献

增值税率通过使用来自欧洲委员会VATLive.com的数据,手动保持最新。初始的历史税率基于来自jsonvat.com的数据。

如果您注意到有错误的税率,请创建一个问题或发送拉取请求。未来的增值税变化也可以添加到JSON文件中。如果您知道尚未列出的即将到来的变化,请告诉我。

对历史增值税率的数据也很有价值。这可能很难追踪,特别是非标准税率。

Flattr VATRates

许可证

VATRates遵循MIT许可证