rechtlogisch/steuernummer

标准化、反标准化和验证德国税务编号(Steuernummer)

v1.0.0 2024-07-09 21:05 UTC

This package is auto-updated.

Last update: 2024-09-09 21:27:41 UTC


README

Recht logisch Steuernummer banner image

Latest Version on Packagist Tests Total Downloads

steuernummer

标准化、反标准化和验证德国税务编号(Steuernummer)

双向格式化来自税务办公室信件(德语:Bescheidformat)或ELSTER-格式(德语:bundeseinheitliches ELSTER-Steuernummerformat)的德国税务编号,并对其进行验证。

基于官方ELSTER文档(章节:3-7;截至2024-06-17)。灵感来源于kontist/normalize-steuernummerkontist/denormalize-steuernummer

提示:此软件包仅验证提供的输入的语法和校验位。它不确认提供的税务编号是否已分配给任何实体。如有任何关于您的税务编号正确性的疑问,请联系相关税务办公室。

安装

您可以通过composer安装此软件包

composer require rechtlogisch/steuernummer

用法

标准化

normalizeSteuernummer('21/815/08150', 'BE'); // => '1121081508150'

或者

use Rechtlogisch\Steuernummer\Normalize;

(new Normalize('21/815/08150', 'BE'))
    ->returnElsterSteuernummerOnly(); // => '1121081508150'

提示:如果您想获取更多详细信息,可以使用run()

反标准化

denormalizeSteuernummer('1121081508150'); // => '21/815/08150'

或者

use Rechtlogisch\Steuernummer\Denormalize;

(new Denormalize('1121081508150'))
    ->returnSteuernummerOnly(); // => '21/815/08150'

提示:如果您想获取更多详细信息,可以使用run()

详细信息

您还可以通过设置returnWithFederalState: true来控制结果。当设置为true时,将添加关于税务编号来自哪个联邦州的信息到结果中。

denormalizeSteuernummer('1121081508150', returnWithFederalState: true);
// [
//   'steuernummer' => '21/815/08150',
//   'federalState' => 'BE',
// ]

或者

use Rechtlogisch\Steuernummer\Denormalize;

(new Denormalize('1121081508150'))
    ->returnWithFederalState(); 
// [
//   'steuernummer' => '21/815/08150',
//   'federalState' => 'BE',
// ]

提示:如果您想获取更多详细信息,可以使用run()

验证

您可以通过所谓的ELSTER-Steuernummerformat(13位数字)进行验证

isElsterSteuernummerValid('1121081508150'); // => true

或通过提供所谓的Bescheidformat(长度可变)以及联邦州

isSteuernummerValid('21/815/08150', 'BE'); // => true

提示:请注意,根据您输入的格式,有两个函数isElsterSteuernummerValid()isSteuernummerValid()

替代

use Rechtlogisch\Steuernummer\Validate;

(new Validate('1121081508150'))
    ->run() // ValidationResult::class
    ->isValid(); // => true

联邦州由ELSTER-格式的第一位数字确定,您可以将它作为第二个参数提供以覆盖自动确定

use Rechtlogisch\Steuernummer\Validate;

(new Validate('1121081508150', 'BE'))
    ->run() // ValidationResult::class
    ->isValid(); // => true

错误

您可以获取一个解释为什么提供的输入无效的错误列表。每个类的run()方法返回一个包含getErrors()方法的DTO。

提示:getErrors()的键持有异常类的字符串化引用。您可以通过与::class常量进行比较来检查特定错误。例如:Rechtlogisch\Steuernummer\Exceptions\InvalidElsterSteuernummerLength::class

验证错误

use Rechtlogisch\Steuernummer\Validate;

(new Validate('123456789012', 'BE'))
    ->run() // ValidationResult::class
    ->getErrors();
// [
//   'Rechtlogisch\Steuernummer\Exceptions\InvalidElsterSteuernummerLength'
//    => 'elsterSteuernummer must be 13 digits long. You provided: 12 digits.'
// ]

标准化错误

use Rechtlogisch\Steuernummer\Normalize;

(new Normalize('123456789', 'BE'))
    ->run() // NormalizationResult::class
    ->getErrors();
// [
//   'Rechtlogisch\Steuernummer\Exceptions\InvalidSteuernummerLength'
//    => 'steuernummer for BE must contain exactly 10 digits. You provided: 9 digits.'
// ]

反标准化错误

use Rechtlogisch\Steuernummer\Denormalize;

(new Denormalize('123456789012'))
    ->run() // DenormalizationResult::class
    ->getErrors();
// [
//   'Rechtlogisch\Steuernummer\Exceptions\InvalidElsterSteuernummerLength'
//    => 'elsterSteuernummer must be 13 digits long. You provided: 12 digits.'
// ]

提示:所有*Result::class都扩展了ResultDto

支持的税务办公室

默认情况下,包含在ELSTER ERiC库中的税务办公室代码(德语:Bundesfinanzamtsnummer - 简称BUFA)由此软件包支持。目前基于ERiC 40.1.8。您可以在src/Bufas.php中找到列表。

该列表包括测试BUFAs,在生产中无效。建议在生产环境中使用以下环境变量禁用它们

STEUERNUMMER_PRODUCTION=true

或者在PHP中

putenv('STEUERNUMMER_PRODUCTION=true');

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

如果您发现任何与安全相关的问题,请通过电子邮件发送到open-source@rechtlogisch.de,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。