nfephp-org / sped-gtin
用于验证GTIN代码的类。
Requires
- php: >= 7.4
- ext-curl: *
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-openssl: *
- ext-simplexml: *
- ext-soap: *
- nfephp-org/sped-common: ^5.1.0
Requires (Dev)
- phpcompatibility/php-compatibility: ^9.3
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.3
- scrutinizer/ocular: ^1.8
- squizlabs/php_codesniffer: dev-master
README
从NFe (e NFCe)的4.00版布局开始,产品GTIN变为必须项,当存在时。因此,在所有包含具有商业条形码(GTIN 8, 12, 13或14)的产品NFe (e NFCe)中,都必须在其发票中注明。
这些GTIN必须正确并经过验证,在将其插入系统之前,以避免SEFAZ拒绝。
NT 2021.003_v1_00 GTIN验证
本技术规范自9月起生效,规定只能使用国内GTIN,即只能使用以789或790开头的GTIN,此外,只能使用在全国产品注册 - CNP注册的产品。
需要强调的是,集中注册还将比较其他信息,例如:
- GTIN
- 品牌
- GTIN类型(8, 12, 13或14位)
- 产品描述
- 品牌所有者标识(CNPJ或CPF)
- 产品分类数据(类别、系列、类别和子类别/块)
- NCM
- CEST(如有)
- 毛重和净重
- 毛重和净重计量单位
这些数据应与NFe或NFCe中提供的数据兼容。
请查阅https://gepir.gs1.org/index.php/search-by-gtin
注意:如果制造商/进口商未正确注册其产品,可能会出现拒绝,但这不会影响商家,因为将无法发出NFe的将是制造商/进口商。
此类正是为此目的,验证GTIN号码的正确性,包括其结构、前缀、区域和校验位。
SEFAZ将对全国产品注册 - CNP进行额外查询,但尚无API可供我们进行此类查询,因此,如果您拥有的数据与CNP不匹配,仍可能出现拒绝。
使用方法
use NFePHP\Gtin\Gtin; try { $gtin = new Gtin('78935761'); $region = $gtin->region; $prefix = $gtin->prefix; $digitoVerificador = $gtin->checkDigit; if ($gtin->isValid()) { echo "Valido"; } } catch (\Exception $e) { echo $e->getMessage(); }
Gtin类具有多个属性
region - (字符串) 指示数字的使用区域,例如GS1巴西
prefix - (字符串) 指示区域的缩写,例如789
checkDigit - (整数) 指定特定数字序列的校验位(计算得出)
restricted - (布尔值) 指示前缀是否为限制使用
type - (整数) 指示GTIN类型(8, 12, 13或14)
该类的主要功能是
function isValid()
此函数不接受任何参数,如果GTIN在原则上有效,则返回TRUE。
类也可以静态实例化。
use NFePHP\Gtin\Gtin; try { $gtin = Gtin::check('78935761'); $region = $gtin->region; $prefix = $gtin->prefix; $digitoVerificador = $gtin->checkDigit; if ($gtin->isValid()) { echo "Válido"; } } catch (\Exception $e) { echo $e->getMessage(); }
或者
use NFePHP\Gtin\Gtin; $gtin = "78935761"; try { if (Gtin::check($gtin)->isValid()) { echo "Válido"; } } catch (\Exception $e) { echo $e->getMessage(); }
注意:如果GTIN是“没有GTIN”,将返回TRUE(有效),即使用大写字母,任何其他形式都会被拒绝。
验证和异常
如果提供的数字不符合某些限制,将返回异常。
本软件包符合PSR-1、PSR-2和PSR-4规范。如果您发现任何不符合规范的地方,请通过Pull Request提交补丁。
请务必加入NFePHP 讨论组,以跟进开发进程,参与讨论,并解答疑问!
安装
本软件包已在Packgist上列出,专为与Composer配合使用而开发,因此不会提供其他安装方式的说明。
可以使用以下命令进行安装:
composer require nfephp-org/sped-gtin
或者,您还可以修改您应用的composer.json文件,添加以下内容:
"require": { "nfephp-org/sped-gtin" : "^1.0" }
为了在开发分支(master)中使用本软件包,您需要使用以下命令进行安装:
composer require nfephp-org/sped-gtin:dev-master
或者,您还可以修改您应用的composer.json文件,添加以下内容:
"require": { "nfephp-org/sped-gtin" : "dev-master" }
注意:在开发版本中使用此软件包时,请不要忘记将您的应用中的composer.json文件中的"minimum-stability"属性从"stable"更改为"dev",以接受开发版本包。
"minimum-stability": "dev"
需求
为了使本软件包能够正常运行,需要满足以下PHP和其他依赖包的要求。
- PHP >= 7.x(推荐PHP 7.2.x)(同时支持PHP 8.0.x)
贡献
如果您想通过修正BUG、改进代码、编写文档、编写测试或提供其他技术或编程帮助来贡献,请参阅贡献指南和行为准则以获取更多详细信息。
变更日志
请查看变更日志以了解最新的更改信息。
测试
所有测试都是为与PHPUNIT配合使用而开发的。
安全性
如果您发现任何安全问题,请直接向软件包维护者发送电子邮件,而不是打开一个ISSUE。
致谢
Roberto L. Machado(所有者和开发者) Gustavo Lidani(开发者)
许可证
本软件包以LGPLv3或MIT许可证(MIT)提供。请阅读许可文件以获取更多信息。