eventix/eu-vat

欧洲增值税格式化和验证 Laravel 扩展包

v1.0.1 2019-08-28 13:39 UTC

This package is auto-updated.

Last update: 2024-08-29 00:28:44 UTC


README

PHP Version Laravel Version License

此 Laravel 扩展包能够实现 (EU) 增值税号码的格式化和验证。

对于验证,它使用欧洲委员会的增值税信息交换服务 (VIES) 的端点 http://ec.europa.eu/taxation_customs/vies/faq.html

目录

安装

通过 Composer

$ composer require eventix/eu-vat

使用

当该包包含在 Laravel 项目中时,Composer 自动加载功能已自动发现一个服务提供者。这将扩展 Laravel 验证器,并添加一个验证规则(vat_number)。

还注册了一个 Facade 的别名。此 Facade(EuVat)将允许对增值税号码进行手动格式化和验证。

支持的国家

EuVat::codes(): array; // List of supported country codes 
EuVat::supports(string $countryCode): bool; // Determines if a given country code is supported
EuVat::name(string $countryCode): ?string; // Returns the (english) name associated with a country code if it is supported)
EuVat::inferCountry(string $vatNumber): ?string; // (Try to) guess the country of a vat number.

增值税号码

EuVat::format(string $vatNumber, ?string $countryCode = null): ?string // (Try to) format a vat number by the formatting rules of a given country, or a guessed country
EuVat::validate(string $vatNumber, ?string $countryCode = null): ?string // (Try to) validate a vat number by the formatting rules of a given country, or a guessed country

验证器

通过推断其国家验证增值税号码

$data = [
    'vat_nr' => 'NL123456789B01',
];

$validator = Validator::make($data, [
    'vat_nr' => 'required|vat_number',
]);

验证给定国家的增值税号码

$data = [
    'vat_nr' => 'NL123456789B01',
];

$validator = Validator::make($data, [
    'vat_nr' => 'required|vat_number:NL',
]);

验证由另一个字段确定的国家的增值税号码

$data = [
    'country' => 'NL',
    'vat_nr' => 'NL123456789B01',
];

$validator = Validator::make($data, [
    'vat_nr' => 'required|vat_number:country',
]);

仅在增值税号码更改时进行验证

如果值没有更改……它应该已经是有效的。这将减少对 VIES 的调用。注意:验证规则需要原始值才能正常工作。

验证推断国家的更改增值税号码

$data = [
    'vat_nr' => 'NL123456789B01',
];

$validator = Validator::make($data, [
    'vat_nr' => 'required|vat_number:NULL,NL123456789B01',
]);

验证由另一个字段确定的国家的更改增值税号码

$data = [
    'country' => 'NL',
    'vat_nr' => 'NL123456789B01',
];

$validator = Validator::make($data, [
    'vat_nr' => 'required|vat_number:country,NL123456789B01',
]);

验证给定国家的更改增值税号码

$data = [
    'vat_nr' => 'NL123456789B01',
];

$validator = Validator::make($data, [
    'vat_nr' => 'required|vat_number:NL,NL123456789B01',
]);

测试

注意,为了测试,需要首先克隆项目并安装所有依赖项。

$ cd /packages/directory
$ git clone git@github.com:Eventix/eu-vat.git
$ composer install
$ composer test

许可

请参阅 许可文件

无责任,实现者负责审查代码!

问题

提交问题

贡献

请使用 Github Flow 进行贡献。Fork 项目,创建分支,添加提交,并 打开 pull request

机会

  • 测试覆盖率尚未达到 100%。

潜力

  • 本地化国家名称的机会
  • 3 位国家代码的机会
  • 欧盟外国家/地区的机遇