sqginfo / sped-gtin
用于验证GTIN代码的类。
Requires
- php: >= 5.6
Requires (Dev)
- phpmd/phpmd: dev-master
- phpunit/phpunit: ^5.7
- scrutinizer/ocular: ^1.3
- sebastian/phpcpd: ^3.0
- squizlabs/php_codesniffer: ^2.8
README
从NFe(e NFCe)的4.00版布局开始,产品GTIN成为当存在时的强制项。因此,在所有包含具有商业用途条形码(GTIN 8、12、13或14)的产品NFe(e NFCe)中,都应在其发票中指示相同的GTIN。
确保这些GTIN在将其插入系统之前正确并经过验证,以避免SEFAZ的拒绝。
NT 2021.003_v1_00 GTIN验证
这项技术指南于九月生效,规定只能使用国家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 - (string) 表示数字的使用区域,例如GS1巴西
prefix - (string) 表示地区前缀,例如789
checkDigit - (int) 表示特定数字序列的校验位(计算得出)
restricted - (bool) 表示前缀是否为限制性使用
type - (int) 表示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 进行修正、改善代码、编写文档、编写测试或提供其他技术或编程支持,请参考 CONTRIBUTING 和 行为准则 获取更多详细信息。
变更日志
请查阅 CHANGELOG 了解最近的更改。
测试
所有测试都是针对 PHPUNIT 进行的。
安全
如果您发现与安全相关的任何问题,请直接发送电子邮件给包的维护者,而不是创建一个 ISSUE。
致谢
Roberto L. Machado(所有者和开发者) Gustavo Lidani(开发者)
许可证
此包可在 LGPLv3 或 MIT 许可证(MIT)下使用。请阅读 许可证文件 获取更多信息。