CfdiUtils Versions Save

PHP Common utilities for Mexican CFDI 3.2, 3.3 & 4.0

v2.19.0

2 years ago

Add CFDI 4.0 compatibility: read, validate and create:

  • CfdiUtils\Cfdi object now can read CFDI 4.0.
  • CfdiUtils\CfdiValidator40 object was introduced to validate CFDI 4.0 with only the following validations:
    • The document follows de CFDI 4.0 specification (namespace, root element prefix and name).
    • The document follows de CFDI 4.0 schema.
    • The document has a valid NoCertificado, Certificado and Sello.
    • The document has a valid TimbreFiscalDigital and information matches with cfdi:Comprobante@Sello.
  • CfdiUtils\CfdiCreator40 object was introduced to create CFDI 4.0.
  • The helper elements CfdiUtils\Elements\Cfdi40 were created.
  • Add minimal documentation to read, validate and create CFDI 4.0.

The following are development details:

  • Created \CfdiUtils\Validate\Xml\XmlFollowSchema as a standard validator, it does not depend on the type of CFDI.
  • The validator CfdiUtils\Validate\Cfdi33\Xml\XmlFollowSchema is now an extended class of \CfdiUtils\Validate\Xml\XmlFollowSchema. The class is also deprecated.
  • Add CfdiUtils\Certificado::getPemContentsOneLine().
  • Add CFDI 4.0 information to:
    • CfdiUtils\CadenaOrigen\CfdiDefaultLocations.
    • CfdiUtils\Certificado\NodeCertificado.
    • CfdiUtils\CfdiVersion.
  • Deprecate CfdiUtils\Cfdi::CFDI_NAMESPACE.
  • Add CfdiUtils\CfdiCreateObjectException that contains all the failures when try to construct a CfdiUtils\Cfdi object.
  • Extract and share logic for several objects that are CFDI 3.3 and CFDI 4.0 compatible:
    • CfdiUtils\CfdiValidator33 to CfdiUtils\Validate\CfdiValidatorTrait.
    • CfdiUtils\Validate\Cfdi33\Standard\SelloDigitalCertificado to CfdiUtils\Validate\Common\SelloDigitalCertificadoValidatorTrait.
    • CfdiUtils\Validate\Cfdi33\Standard\TimbreFiscalDigitalSello to CfdiUtils\Validate\Common\TimbreFiscalDigitalSelloValidatorTrait.
    • CfdiUtils\Validate\Cfdi33\Standard\TimbreFiscalDigitalVersion to CfdiUtils\Validate\Common\TimbreFiscalDigitalVersionValidatorTrait.
    • CfdiUtils\CfdiCreator33 to CfdiUtils\Validate\CfdiCreatorTrait.
    • CfdiUtils\Elements\Cfdi33\Helpers\SumasConceptosWriter to CfdiUtils\SumasConceptos\SumasConceptosWriter.
  • The certificate PAC used for testing 30001000000400002495 is included.
  • The class CfdiUtilsTests\Validate\ValidateTestCase was renamed to CfdiUtilsTests\Validate\Validate33TestCase and extracted to CfdiUtilsTests\Validate\ValidateBaseTestCase because it shares a lot of logic with CfdiUtilsTests\Validate\Validate40TestCase.
  • The class CfdiUtils\SumasConceptos\SumasConceptosWriter can handle both CFDI 3.3 & 3.4.

This version introduces this soft breaking compatibility changes, your implementation should not be affected:

[BC] REMOVED: These ancestors of CfdiUtils\Validate\Cfdi33\Xml\XmlFollowSchema have been removed: ["CfdiUtils\\Validate\\Cfdi33\\Abstracts\\AbstractVersion33"]

Other changes:

  • Update license year, happy new year.
  • Update PHPUnit config file.

v2.18.3

2 years ago

Fix Carta Porte 1.0 add missing element Notificado. Thanks @celli33.

v2.18.2

2 years ago

Fix Carta Porte 2.0 XML Namespace.

v2.18.1

2 years ago

Remove development/ from distribution package. Previous tag had a typo v.2.18.0. See https://github.com/eclipxe13/CfdiUtils/releases/tag/v.2.18.0

v.2.18.0

2 years ago

Add CfdiUtils\Elements\CartaPorte20 Elements to work with "Carta Porte 2.0". Add Elements Maker, a development tool to create element classes based on a specification file. Fix dev:coverage composer script.

v2.17.0

2 years ago

The helper object SumasConceptosWriter also writes the sum of impuestos locales when they are present. Thanks, @celli33 and @luffynando for your help.

v2.16.1

2 years ago

Fix bug when create expression to query for the SAT status and the RFC (emisor or receptor) contains the characters & or Ñ. The service requires that the expression is XML "encoded". Thanks, @ramboram and @TheSpectroMX for your help.

Refactor test script tests/estadosat.php.

Fix typos on "Complemento de Nómina versión 1.2, revisión B" documentation.

v2.16.0

2 years ago

Add CfdiUtils\Elements\CartaPorte10 Helper elements to work with "Carta Porte 1.0". See #70 & #73.

v2.15.1

3 years ago

Fix try to close public key when it didn't exists. Good catch PHPStan!

v2.15.0

3 years ago

Improvements:

  • Include validation web service version 1.3 new response ValidacionEFOS as StatusResponse::getValidationEfos() string and StatusResponse::isEfosListed() bool.
  • Update ConsultaCFDIServiceSAT.svc.xml. It is unused, but exists for compatibility.

General:

  • Upgrade to PHPUnit 9.5 and upgrade test suite.
  • Test classes are declared as final.
  • Remove support for PHP 7.0, PHP 7.1 and PHP 7.2.
  • Compatilize with PHP 8.0 / OpenSSL:
    • openssl functions does not return resources but objects.
    • On deprecated functions run only if PHP version is lower than 8.0 and put annotations for phpcs.

Bugfixes:

  • Validation SELLO04 fails when there are special caracters like é and LC_CTYPE is not setup.
  • Fix COMPIMPUESTOSC01 description typo.

There are some soft backwards incompatibility changes:

  • Method __construct() of class CfdiUtils\Validate\Cfdi33\Standard\FechaComprobante became final
  • Method __construct() of class CfdiUtils\Validate\Cfdi33\RecepcionPagos\Pago became final
  • The return type of CfdiUtils\Validate\Cfdi33\RecepcionPagos\Pago#getValidators() changed from no type to array
  • The parameter $decimals of CfdiUtils\Utils\Format::number() changed from no type to a non-contravariant int
  • The parameter $content of CfdiUtils\Cleaner\Cleaner::staticClean() changed from no type to a non-contravariant string.

Development environment:

  • AppVeyor: Only run PHPUnit
  • Travis-CI: On PHP != 7.4 only run PHPUnit
  • Travis-CI: On PHP == 7.4 run all the build commands
  • PHPStan: Upgrade to version 0.12, downgrade level to 5.