webhub / vat

kdeldycke的增值税率封装在PHP库中

0.7.0 2019-03-26 08:56 UTC

This package is auto-updated.

Last update: 2024-09-26 21:33:30 UTC


README

Build Status codecov Latest Stable Version Total Downloads License

这是kdeldycke/vat-rates的封装。

🛠 使用方法

安装

composer require webhub/vat

基本使用

use Webhub\Vat\Rates;

$rate = (new Rates)->in('NL')->current()->get();

$rate->rate(); // 0.21
$rate->currencyCode(); // 'EUR'

$rate = (new Rates)->in('BE')->at('1990-01-01')->get();
$rate->rate(); // 0.12

税率

Rates实例是一组税率。

可以过滤税率

  • ->in(string $territory) 一个地区,例如 DENL
  • ->at(string|Carbon $when) 一个日期,例如 2018-01-05,支持Carbon
  • ->current() 等同于 ->at(Carbon::now())
  • ->type(string $type) 税率类型,目前数据库仅包含标准税率。

当只剩下一个税率时,->get() : Rate方法将检索它,否则会抛出。通过->all() : array获取所有税率。

税率

Rate具有以下属性:

  • ->rate() : string 税率的十进制分数表示,例如20%表示为'0.20'
  • ->rateType() : string 税率类型,目前为standard
  • ->(start|stop)Date() : Carbon 首个有效日和后续第一个无效日的Carbon日期实例。
  • ->currencyCode() : string 货币,如SEKEUR
  • ->description() : ?string 税率的可选描述

Rates将方法调用代理到底层的Rate,如果它存在且唯一。

// with ->get()
(new Rates)->in('DE')->current()->get()->rate();
// equals shorter:
(new Rates)->in('DE')->current()->rate();

// non unique
(new Rates)->in('FR')->rate();  // throws AmbiguousResultException
(new Rates)->in('XX')->get();   // throws NoResultException

税率数组访问

Rate实现了ArrayAccess,因此在使用例如Laravel的Collection时,这是完全可能的

collect((new Rates)->in('NL')->all())
  ->sortBy('start_date')
  ->pluck('rate', 'start_date');

📝 编译新数据集

数据从kdeldycke/vat-rates获取并写入到包含在Rates中的PHP文件data.php中。

composer install
composer run build  // runs Generator::generate()

🇪🇺