anglemx/mexico-rfc

PHP 工具,用于处理墨西哥 SAT(税务机构)的 RFC(税号)

v1.1.1 2022-01-08 20:49 UTC

This package is auto-updated.

Last update: 2024-09-09 02:50:31 UTC


README

PHP 工具,用于处理墨西哥 SAT(税务机构)的 RFC(税号)

RFC

什么是 RFC? Registro Federal de Contribuyentes 是墨西哥税务机构 SAT Servicio de Administración Tributaria 和 SHCP Secretaría de Hacienda y Crédito Público 的注册。

如何使用

从姓名和出生日期数据计算个人的 RFC

这计算了 Homoclave ,它是一个 __

然而,请注意 这只是一个基线 ___ SAT 可以随时更改此 __ 代码

特别是最后 3 位数字称为 homoclave

整个目的就是为了防止 __

如果两个人的姓名完全相同,并且出生在同一天 __ 那么他们将是同音异义词 __ 共享相同的基础 __

SAT 将会更改其中一个人的 homoclave 或两个人的。

还需要更多的测试和验证,RFC 有很多异常和边缘情况必须考虑。

$dob = \DateTime::createFromFormat('Y-m-d', '1989-07-15');
$rfc = RFC::createForNaturalPerson('Jose Ramiro', 'Gutierrez', 'Hernández', $dob);

echo $rfc->getRfc(); // GUHR890715
echo $rfc->getRfcComplete(); // GUHR890715G54

验证现有的 RFC 字符串

此工具还可以用于验证现有的 RFC 字符串并从中推断一些元数据。

echo (RFC::isValid('INVALID_12313') ? 'Yes' : 'No'); // No
echo (RFC::isValid('GUHR890715G54') ? 'Yes' : 'No'); // Yes

echo (RFC::isValidWithoutHomoclave('GUHR890715') ? 'Yes' : 'No'); // Yes

从有效的 RFC 字符串中提取元数据

验证并从 RFC 字符串中推断一些元数据,例如法律实体的类型。

TODO:推断出生日期。

$rfc = RFC::createFromRfcString('GUHR890715G54');

if ($rfc === null) {
    die('Invalid RFC string');
}

echo ($rfc->isGeneric() ? 'Yes' : 'No'); // No
echo ($rfc->isNaturalPerson() ? 'Yes' : 'No'); // Yes

测试

php vendor/bin/phpunit tests/BuildTest.php
php vendor/bin/phpunit tests/ValidationTest.php

待办事项

  • 完成编写此 README
  • 清理 RFC 类,它现在非常混乱。还要清理 RFC 验证测试。实现一些测试私有/受保护方法的方法?
  • 找到一个大列表的姓名、出生日期和 RFC 进行测试。

参考

https://cec.cele.unam.mx/include/howToRFC.php https://solucionfactible.com/sfic/capitulos/timbrado/rfc-clave-direfenciadora-homonimia.jsp https://solucionfactible.com/sfic/capitulos/timbrado/rfc-digito-verificador.jsp https://solucionfactible.com/sfic/capitulos/timbrado/rfc-anexos.jsp https://solucionfactible.com/sfic/resources/files/palabrasInconvenientes-rfc.pdf