fidelo-software / vatrates
最新的欧洲增值税率
Requires
- php: >5.3.3
Requires (Dev)
- beberlei/assert: ^2.7
- peridot-php/peridot: ^1.19
README
最新的欧洲增值税率
增值税率以 JSON
格式存储,并提供 JavaScript 和 PHP 类以方便访问。
安装
下载
- vatrates.min.js 压缩版
- vatrates.js 未压缩版
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
文件中。如果您知道尚未列出的即将到来的变化,请告诉我。
对历史增值税率的数据也很有价值。这可能很难追踪,特别是非标准税率。
许可证
VATRates遵循MIT许可证