Skip to content

Commit

Permalink
Version 2.7.0
Browse files Browse the repository at this point in the history
  • Loading branch information
eclipxe13 committed Oct 19, 2018
2 parents 43f65f2 + 209f6fd commit e708b2f
Show file tree
Hide file tree
Showing 31 changed files with 636 additions and 70 deletions.
6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ When you do begin working on your feature, here are some guidelines to consider:
If you are having issues with coding standars run

```shell
composer check-style
composer fix-style
composer dev:check-style
composer dev:fix-style
```

## Running Tests
Expand All @@ -75,5 +75,5 @@ If any of these do not pass, it will result in a complete build failure.
Before you can run these, be sure to `composer install` or `composer update`.

```shell
composer build
composer dev:build
```
35 changes: 20 additions & 15 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
"ext-openssl": "*",
"ext-soap": "*",
"ext-iconv": "*",
"eclipxe/xmlresourceretriever": "^1.2.1",
"eclipxe/xmlresourceretriever": "^1.3.0",
"eclipxe/xmlschemavalidator": "^2.0.2"
},
"suggest": {
Expand All @@ -56,33 +56,38 @@
}
},
"scripts": {
"build": [
"@fix-style",
"@qa",
"@docs"
"dev:build": [
"@dev:fix-style",
"@dev:test",
"@dev:docs"
],
"check-style": [
"dev:check-style": [
"vendor/bin/php-cs-fixer fix --dry-run --verbose",
"vendor/bin/phpcs --colors -sp src/ tests/"
],
"fix-style": [
"dev:fix-style": [
"vendor/bin/php-cs-fixer fix --verbose",
"vendor/bin/phpcbf --colors -sp src/ tests/"
],
"qa": [
"vendor/bin/phpstan.phar analyse --no-progress --level max src/ tests/",
"@test"
],
"docs": [
"dev:docs": [
"node_modules/markdownlint-cli/markdownlint.js *.md docs/",
"mkdocs build --strict --site-dir build/docs"
],
"test": [
"dev:test": [
"vendor/bin/phplint",
"vendor/bin/phpunit"
"vendor/bin/phpunit",
"vendor/bin/phpstan.phar analyse --no-progress --level max src/ tests/"
],
"coverage": [
"dev:coverage": [
"@php -dzend_extension=xdebug.so vendor/bin/phpunit --coverage-text --coverage-html build/coverage/html/"
]
},
"scripts-descriptions": {
"dev:build": "DEV: run dev:fix-style dev:tests and dev:docs, run before pull request",
"dev:check-style": "DEV: search for code style errors using php-cs-fixer and phpcs",
"dev:fix-style": "DEV: fix code style errors using php-cs-fixer and phpcbf",
"dev:docs": "DEV: search for code style errors unsing markdownlint and build docs using mkdocs",
"dev:test": "DEV: run phplint, phpunit and phpstan",
"dev:coverage": "DEV: run phpunit with xdebug and storage coverage in build/coverage/html/"
}
}
30 changes: 30 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,36 @@
- Remove `trigger_error` on `\CfdiUtils\Elements\Cfdi33\Comprobante::getCfdiRelacionados` when called with arguments.


## Version 2.7.0 2018-10-19

- Reintroduce `MontoGreaterOrEqualThanSumOfDocuments` as `PAGO30`.
- There is a legal contradiction in `Pagos` between `Guía de llenado` and `Matriz de errores`
- For more information check documentation <https://cfdiutils.readthedocs.io/es/latest/problemas/contradicciones-pagos/>
- Change `CfdiUtils\Validate\Cfdi33\RecepcionPagos\Pagos\ValidatePagoException` to use status property.
- Change `CfdiUtils\Validate\Cfdi33\RecepcionPagos\Pagos\ValidateDoctoException` to extends `ValidatePagoException`.
- Honor status from `ValidatePagoException` or `ValidateDoctoException`
- Tests use XmlResolver from `CfdiUtilsTests\TestCase` instead of creating a new one
- Fix docblock `CfdiUtils\Nodes\Nodes::searchNodes`
- Improve docblocks on `CfdiUtils\Certificado\Certificado`
- Documentation:
- Create `docs/problemas/contradicciones-pagos.md`
- Create `docs/problemas/descarga-certificados.md` to document error `TFDSELLO01`
- Create examples on `docs/componentes/certificado.md` on object creation
- Change tests to not ssl verify peer due SAT web server configuration errors (expired certificate)
- Add `CfdiUtilsTests\TestCase::newInsecurePhpDownloader(): DownloaderInterface`
- Use insecure downlader in `CfdiUtilsTests\CfdiValidator33Test`
- Use insecure downlader in `CfdiUtilsTests\Validate\Cfdi33\Standard\TimbreFiscalDigitalSelloTest`
- Use insecure downlader in `CfdiUtilsTests\Certificado\CerRetrieverTest`
- Also add note to `docs/TODO.md` to remove this insecure downloader when SAT server is fine
- Change composer scripts and prefix `dev:`, commands are now:
- `dev:build`: run dev:fix-style dev:tests and dev:docs, run before pull request
- `dev:check-style`: search for code style errors using php-cs-fixer and phpcs
- `dev:fix-style`: fix code style errors using php-cs-fixer and phpcbf
- `dev:docs`: search for code style errors unsing markdownlint and build docs using mkdocs
- `dev:test`: run phplint, phpunit and phpstan
- `dev:coverage`: run phpunit with xdebug and storage coverage in build/coverage/html


## Version 2.6.6 2018-10-04

- After previous update on validation `PAGO09` and more testing found that it requires to round lower and upper limits.
Expand Down
13 changes: 13 additions & 0 deletions docs/TODO.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Lista de tareas pendientes e ideas

## Verificar problemas conocidos

### Descarga de certificados desde <https://rdc.sat.gob.mx/rccf/>

La descarga de certificados desde `https://rdc.sat.gob.mx/rccf/` falla por un error de configuración
en el servidor web del SAT. Por ello se han puesto instancias especiales de descargadores `PhpDownloader`
que desactivan la verificación de SSL.

Hay que remover esta condición en cuando el sitio del SAT esté correctamente configurado.
Buscar en el código de pruebas el uso de `CfdiUtilsTests\TestCase::newInsecurePhpDownloader(): DownloaderInterface`
y remover el método.


## Documentación del proyecto

Documentar los otros helpers de `Elements`:
Expand Down
33 changes: 31 additions & 2 deletions docs/componentes/certificado.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
La clase `\CfdiUtils\Certificado\Certificado` obtiene la información de un archivo de tipo certificado.

El archivo puede ser un archivo en formato PEM o en formato CER.
En este último caso es convertido a PEM y luego interpretado.
En este último caso es convertido internamente a formato PEM y luego interpretado.

Una vez cargado el certificado permite obtener los siguientes datos:
Una vez cargado el certificado permite obtener los siguientes datos utilizando *getters* (como `getRfc()`):

- RFC
- Nombre
Expand All @@ -26,11 +26,40 @@ Adicionalmente cuenta con los métodos:
`verify(string $data, string $signature, int $algorithm = OPENSSL_ALGO_SHA256): bool`


## Leer un archivo de certificado

Para leer un archivo de certificado se debe crear el objeto `Certificado` pasando el nombre del archivo.

```php
<?php
$cerFile = '/certificates/00001000000406258094.cer';
$certificate = new \CfdiUtils\Certificado\Certificado($cerFile);
var_dump($certificate->getRfc()); // algo como COSC8001137NA
```


## Relación con `\CfdiUtils\Certificado\NodeCertificado`

La clase `\CfdiUtils\Certificado\Certificado` funciona con un archivo previamente almacenado.
Para extraer un certificado de un CFDI se ofrece la clase `\CfdiUtils\Certificado\NodeCertificado`.

Esta clase puede trabajar con CFDI versión 3.2 y 3.3, toma la información de `cfdi:Comprobante@Certificado`
utilizando `CfdiUtils\Nodes\NodeInterface` y provee tres métodos para trabajar con el certificado:

- `extract(): string`: obtiene el contenido del certificado acorde a la versión y decodifica desde base 64.
- `save(string $filename): void`: guarda el contenido extraído a una ruta.
- `obtain(): Certificado`: obtiene el objeto certificado del archivo extraído.

```php
<?php
$certificate = (new \CfdiUtils\Certificado\NodeCertificado(
\CfdiUtils\Nodes\XmlNodeUtils::nodeFromXmlString(
file_get_contents('/cfdis/FE-00012847.xml')
)
))->obtain();
var_dump($certificate->getRfc()); // algo como COSC8001137NA
```


## Acerca de los formatos de archivo

Expand Down
2 changes: 1 addition & 1 deletion docs/contribuir/guia-desarrollador.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ En resumen:
* Cuando reportes un problema procura documentar lo más posible tu caso.
* Cuando desees contribuir al código, realiza pruebas.
* Apégate al estándar de codificación.
* Usa las herramientas básicas, antes de enviar tu PR ejecuta: `composer build`.
* Usa las herramientas básicas, antes de enviar tu PR ejecuta: `composer dev:build`.

## Dependencias de desarrollo

Expand Down
2 changes: 1 addition & 1 deletion docs/contribuir/guia-windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ vendor\bin\phpunit
vendor\bin\phpstan.phar.bat --no-progress analyse --level max src tests
```

Lamentablemente no se puede ejecutar `composer build` o alguno de los comandos personalizados
Lamentablemente no se puede ejecutar `composer dev:build` o alguno de los comandos personalizados
definidos `composer.json` porque no funcionan correctamente.


Expand Down
6 changes: 6 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ Solo hay métodos específicos para CFDI 3.3.
- [Página del SAT de CFDI](http://omawww.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/Anexo_20_version3.3.aspx)


## Problemas conocidos

- [Contradicciones de CFDI de Pagos](problemas/contradicciones-pagos.md)
- [Descarga de certificados](problemas/descarga-certificados.md)


## Copyright and License

The `eclipxe/CfdiUtils` library is copyright © [Carlos C Soto](http://eclipxe.com.mx/) and
Expand Down
Loading

0 comments on commit e708b2f

Please sign in to comment.