Skip to content

Commit e708b2f

Browse files
committed
Version 2.7.0
2 parents 43f65f2 + 209f6fd commit e708b2f

31 files changed

+636
-70
lines changed

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ When you do begin working on your feature, here are some guidelines to consider:
6464
If you are having issues with coding standars run
6565

6666
```shell
67-
composer check-style
68-
composer fix-style
67+
composer dev:check-style
68+
composer dev:fix-style
6969
```
7070

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

7777
```shell
78-
composer build
78+
composer dev:build
7979
```

composer.json

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"ext-openssl": "*",
3232
"ext-soap": "*",
3333
"ext-iconv": "*",
34-
"eclipxe/xmlresourceretriever": "^1.2.1",
34+
"eclipxe/xmlresourceretriever": "^1.3.0",
3535
"eclipxe/xmlschemavalidator": "^2.0.2"
3636
},
3737
"suggest": {
@@ -56,33 +56,38 @@
5656
}
5757
},
5858
"scripts": {
59-
"build": [
60-
"@fix-style",
61-
"@qa",
62-
"@docs"
59+
"dev:build": [
60+
"@dev:fix-style",
61+
"@dev:test",
62+
"@dev:docs"
6363
],
64-
"check-style": [
64+
"dev:check-style": [
6565
"vendor/bin/php-cs-fixer fix --dry-run --verbose",
6666
"vendor/bin/phpcs --colors -sp src/ tests/"
6767
],
68-
"fix-style": [
68+
"dev:fix-style": [
6969
"vendor/bin/php-cs-fixer fix --verbose",
7070
"vendor/bin/phpcbf --colors -sp src/ tests/"
7171
],
72-
"qa": [
73-
"vendor/bin/phpstan.phar analyse --no-progress --level max src/ tests/",
74-
"@test"
75-
],
76-
"docs": [
72+
"dev:docs": [
7773
"node_modules/markdownlint-cli/markdownlint.js *.md docs/",
7874
"mkdocs build --strict --site-dir build/docs"
7975
],
80-
"test": [
76+
"dev:test": [
8177
"vendor/bin/phplint",
82-
"vendor/bin/phpunit"
78+
"vendor/bin/phpunit",
79+
"vendor/bin/phpstan.phar analyse --no-progress --level max src/ tests/"
8380
],
84-
"coverage": [
81+
"dev:coverage": [
8582
"@php -dzend_extension=xdebug.so vendor/bin/phpunit --coverage-text --coverage-html build/coverage/html/"
8683
]
84+
},
85+
"scripts-descriptions": {
86+
"dev:build": "DEV: run dev:fix-style dev:tests and dev:docs, run before pull request",
87+
"dev:check-style": "DEV: search for code style errors using php-cs-fixer and phpcs",
88+
"dev:fix-style": "DEV: fix code style errors using php-cs-fixer and phpcbf",
89+
"dev:docs": "DEV: search for code style errors unsing markdownlint and build docs using mkdocs",
90+
"dev:test": "DEV: run phplint, phpunit and phpstan",
91+
"dev:coverage": "DEV: run phpunit with xdebug and storage coverage in build/coverage/html/"
8792
}
8893
}

docs/CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,36 @@
1212
- Remove `trigger_error` on `\CfdiUtils\Elements\Cfdi33\Comprobante::getCfdiRelacionados` when called with arguments.
1313

1414

15+
## Version 2.7.0 2018-10-19
16+
17+
- Reintroduce `MontoGreaterOrEqualThanSumOfDocuments` as `PAGO30`.
18+
- There is a legal contradiction in `Pagos` between `Guía de llenado` and `Matriz de errores`
19+
- For more information check documentation <https://cfdiutils.readthedocs.io/es/latest/problemas/contradicciones-pagos/>
20+
- Change `CfdiUtils\Validate\Cfdi33\RecepcionPagos\Pagos\ValidatePagoException` to use status property.
21+
- Change `CfdiUtils\Validate\Cfdi33\RecepcionPagos\Pagos\ValidateDoctoException` to extends `ValidatePagoException`.
22+
- Honor status from `ValidatePagoException` or `ValidateDoctoException`
23+
- Tests use XmlResolver from `CfdiUtilsTests\TestCase` instead of creating a new one
24+
- Fix docblock `CfdiUtils\Nodes\Nodes::searchNodes`
25+
- Improve docblocks on `CfdiUtils\Certificado\Certificado`
26+
- Documentation:
27+
- Create `docs/problemas/contradicciones-pagos.md`
28+
- Create `docs/problemas/descarga-certificados.md` to document error `TFDSELLO01`
29+
- Create examples on `docs/componentes/certificado.md` on object creation
30+
- Change tests to not ssl verify peer due SAT web server configuration errors (expired certificate)
31+
- Add `CfdiUtilsTests\TestCase::newInsecurePhpDownloader(): DownloaderInterface`
32+
- Use insecure downlader in `CfdiUtilsTests\CfdiValidator33Test`
33+
- Use insecure downlader in `CfdiUtilsTests\Validate\Cfdi33\Standard\TimbreFiscalDigitalSelloTest`
34+
- Use insecure downlader in `CfdiUtilsTests\Certificado\CerRetrieverTest`
35+
- Also add note to `docs/TODO.md` to remove this insecure downloader when SAT server is fine
36+
- Change composer scripts and prefix `dev:`, commands are now:
37+
- `dev:build`: run dev:fix-style dev:tests and dev:docs, run before pull request
38+
- `dev:check-style`: search for code style errors using php-cs-fixer and phpcs
39+
- `dev:fix-style`: fix code style errors using php-cs-fixer and phpcbf
40+
- `dev:docs`: search for code style errors unsing markdownlint and build docs using mkdocs
41+
- `dev:test`: run phplint, phpunit and phpstan
42+
- `dev:coverage`: run phpunit with xdebug and storage coverage in build/coverage/html
43+
44+
1545
## Version 2.6.6 2018-10-04
1646

1747
- After previous update on validation `PAGO09` and more testing found that it requires to round lower and upper limits.

docs/TODO.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Lista de tareas pendientes e ideas
22

3+
## Verificar problemas conocidos
4+
5+
### Descarga de certificados desde <https://rdc.sat.gob.mx/rccf/>
6+
7+
La descarga de certificados desde `https://rdc.sat.gob.mx/rccf/` falla por un error de configuración
8+
en el servidor web del SAT. Por ello se han puesto instancias especiales de descargadores `PhpDownloader`
9+
que desactivan la verificación de SSL.
10+
11+
Hay que remover esta condición en cuando el sitio del SAT esté correctamente configurado.
12+
Buscar en el código de pruebas el uso de `CfdiUtilsTests\TestCase::newInsecurePhpDownloader(): DownloaderInterface`
13+
y remover el método.
14+
15+
316
## Documentación del proyecto
417

518
Documentar los otros helpers de `Elements`:

docs/componentes/certificado.md

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
La clase `\CfdiUtils\Certificado\Certificado` obtiene la información de un archivo de tipo certificado.
44

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

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

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

2828

29+
## Leer un archivo de certificado
30+
31+
Para leer un archivo de certificado se debe crear el objeto `Certificado` pasando el nombre del archivo.
32+
33+
```php
34+
<?php
35+
$cerFile = '/certificates/00001000000406258094.cer';
36+
$certificate = new \CfdiUtils\Certificado\Certificado($cerFile);
37+
var_dump($certificate->getRfc()); // algo como COSC8001137NA
38+
```
39+
40+
2941
## Relación con `\CfdiUtils\Certificado\NodeCertificado`
3042

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

46+
Esta clase puede trabajar con CFDI versión 3.2 y 3.3, toma la información de `cfdi:Comprobante@Certificado`
47+
utilizando `CfdiUtils\Nodes\NodeInterface` y provee tres métodos para trabajar con el certificado:
48+
49+
- `extract(): string`: obtiene el contenido del certificado acorde a la versión y decodifica desde base 64.
50+
- `save(string $filename): void`: guarda el contenido extraído a una ruta.
51+
- `obtain(): Certificado`: obtiene el objeto certificado del archivo extraído.
52+
53+
```php
54+
<?php
55+
$certificate = (new \CfdiUtils\Certificado\NodeCertificado(
56+
\CfdiUtils\Nodes\XmlNodeUtils::nodeFromXmlString(
57+
file_get_contents('/cfdis/FE-00012847.xml')
58+
)
59+
))->obtain();
60+
var_dump($certificate->getRfc()); // algo como COSC8001137NA
61+
```
62+
3463

3564
## Acerca de los formatos de archivo
3665

docs/contribuir/guia-desarrollador.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ En resumen:
1212
* Cuando reportes un problema procura documentar lo más posible tu caso.
1313
* Cuando desees contribuir al código, realiza pruebas.
1414
* Apégate al estándar de codificación.
15-
* Usa las herramientas básicas, antes de enviar tu PR ejecuta: `composer build`.
15+
* Usa las herramientas básicas, antes de enviar tu PR ejecuta: `composer dev:build`.
1616

1717
## Dependencias de desarrollo
1818

docs/contribuir/guia-windows.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ vendor\bin\phpunit
6666
vendor\bin\phpstan.phar.bat --no-progress analyse --level max src tests
6767
```
6868

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

7272

docs/index.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ Solo hay métodos específicos para CFDI 3.3.
8080
- [Página del SAT de CFDI](http://omawww.sat.gob.mx/informacion_fiscal/factura_electronica/Paginas/Anexo_20_version3.3.aspx)
8181

8282

83+
## Problemas conocidos
84+
85+
- [Contradicciones de CFDI de Pagos](problemas/contradicciones-pagos.md)
86+
- [Descarga de certificados](problemas/descarga-certificados.md)
87+
88+
8389
## Copyright and License
8490

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

0 commit comments

Comments
 (0)