Skip to content

Commit 13abae7

Browse files
authored
Merge pull request #31 from eclipxe13/issue-30
Remover atributo vacío FolioSustitucion y mantenimiento
2 parents b1c4f81 + bed9d9f commit 13abae7

21 files changed

+115
-94
lines changed

.github/workflows/build.yml

+18-18
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ jobs:
1717
runs-on: "ubuntu-latest"
1818
steps:
1919
- name: Checkout
20-
uses: actions/checkout@v2
20+
uses: actions/checkout@v3
2121
- name: Setup PHP
2222
uses: shivammathur/setup-php@v2
2323
with:
24-
php-version: '8.0'
24+
php-version: '8.2'
2525
coverage: none
26-
tools: composer:v2, cs2pr, phpcs
26+
tools: cs2pr, phpcs
2727
env:
2828
fail-fast: true
2929
- name: Code style (phpcs)
@@ -34,13 +34,13 @@ jobs:
3434
runs-on: "ubuntu-latest"
3535
steps:
3636
- name: Checkout
37-
uses: actions/checkout@v2
37+
uses: actions/checkout@v3
3838
- name: Setup PHP
3939
uses: shivammathur/setup-php@v2
4040
with:
41-
php-version: '8.0'
41+
php-version: '8.1'
4242
coverage: none
43-
tools: composer:v2, cs2pr, php-cs-fixer
43+
tools: cs2pr, php-cs-fixer
4444
env:
4545
fail-fast: true
4646
- name: Code style (php-cs-fixer)
@@ -51,20 +51,20 @@ jobs:
5151
runs-on: "ubuntu-latest"
5252
steps:
5353
- name: Checkout
54-
uses: actions/checkout@v2
54+
uses: actions/checkout@v3
5555
- name: Setup PHP
5656
uses: shivammathur/setup-php@v2
5757
with:
58-
php-version: '8.0'
58+
php-version: '8.2'
5959
coverage: none
6060
tools: composer:v2, phpstan
6161
env:
6262
fail-fast: true
6363
- name: Get composer cache directory
6464
id: composer-cache
65-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
65+
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
6666
- name: Cache dependencies
67-
uses: actions/cache@v2
67+
uses: actions/cache@v3
6868
with:
6969
path: ${{ steps.composer-cache.outputs.dir }}
7070
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
@@ -79,20 +79,20 @@ jobs:
7979
runs-on: "ubuntu-latest"
8080
steps:
8181
- name: Checkout
82-
uses: actions/checkout@v2
82+
uses: actions/checkout@v3
8383
- name: Setup PHP
8484
uses: shivammathur/setup-php@v2
8585
with:
86-
php-version: '8.0'
86+
php-version: '8.2'
8787
coverage: none
8888
tools: composer:v2, psalm
8989
env:
9090
fail-fast: true
9191
- name: Get composer cache directory
9292
id: composer-cache
93-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
93+
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
9494
- name: Cache dependencies
95-
uses: actions/cache@v2
95+
uses: actions/cache@v3
9696
with:
9797
path: ${{ steps.composer-cache.outputs.dir }}
9898
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
@@ -107,10 +107,10 @@ jobs:
107107
runs-on: "ubuntu-latest"
108108
strategy:
109109
matrix:
110-
php-versions: ['7.3', '7.4', '8.0', '8.1']
110+
php-versions: ['7.3', '7.4', '8.0', '8.1', '8.2']
111111
steps:
112112
- name: Checkout
113-
uses: actions/checkout@v2
113+
uses: actions/checkout@v3
114114
- name: Setup PHP
115115
uses: shivammathur/setup-php@v2
116116
with:
@@ -121,9 +121,9 @@ jobs:
121121
fail-fast: true
122122
- name: Get composer cache directory
123123
id: composer-cache
124-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
124+
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
125125
- name: Cache dependencies
126-
uses: actions/cache@v2
126+
uses: actions/cache@v3
127127
with:
128128
path: ${{ steps.composer-cache.outputs.dir }}
129129
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}

.github/workflows/coverage.yml

+21-21
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@ on:
1010
jobs:
1111

1212
tests-coverage:
13-
name: Tests on PHP 8.0 (code coverage)
13+
name: Tests on PHP 8.2 (code coverage)
1414
runs-on: "ubuntu-latest"
1515
steps:
1616
- name: Checkout
17-
uses: actions/checkout@v2
17+
uses: actions/checkout@v3
1818
- name: Setup PHP
1919
uses: shivammathur/setup-php@v2
2020
with:
21-
php-version: '8.0'
21+
php-version: '8.2'
2222
coverage: xdebug
2323
tools: composer:v2
2424
env:
2525
fail-fast: true
2626
- name: Get composer cache directory
2727
id: composer-cache
28-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
28+
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
2929
- name: Cache dependencies
30-
uses: actions/cache@v2
30+
uses: actions/cache@v3
3131
with:
3232
path: ${{ steps.composer-cache.outputs.dir }}
3333
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
@@ -37,7 +37,7 @@ jobs:
3737
- name: Create code coverage
3838
run: vendor/bin/phpunit --testdox --verbose --coverage-xml=build/coverage --coverage-clover=build/coverage/clover.xml --log-junit=build/coverage/junit.xml
3939
- name: Store code coverage
40-
uses: actions/upload-artifact@v2
40+
uses: actions/upload-artifact@v3
4141
with:
4242
name: code-coverage
4343
path: build/coverage
@@ -48,28 +48,28 @@ jobs:
4848
runs-on: "ubuntu-latest"
4949
steps:
5050
- name: Checkout
51-
uses: actions/checkout@v2
51+
uses: actions/checkout@v3
5252
- name: Setup PHP
5353
uses: shivammathur/setup-php@v2
5454
with:
55-
php-version: '8.0'
55+
php-version: '8.2'
5656
coverage: none
57-
tools: composer:v2,infection
57+
tools: composer:v2, infection
5858
env:
5959
fail-fast: true
6060
- name: Get composer cache directory
6161
id: composer-cache
62-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
62+
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
6363
- name: Cache dependencies
64-
uses: actions/cache@v2
64+
uses: actions/cache@v3
6565
with:
6666
path: ${{ steps.composer-cache.outputs.dir }}
6767
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
6868
restore-keys: ${{ runner.os }}-composer-
6969
- name: Install project dependencies
7070
run: composer upgrade --no-interaction --no-progress --prefer-dist
7171
- name: Obtain code coverage
72-
uses: actions/download-artifact@v2
72+
uses: actions/download-artifact@v3
7373
with:
7474
name: code-coverage
7575
path: build/coverage
@@ -87,15 +87,15 @@ jobs:
8787
id: check-secrets
8888
run: |
8989
if [ -n "${{ secrets.GITHUB_TOKEN }}" ]; then
90-
echo "::set-output name=github::yes"
90+
echo "github=yes" >> $GITHUB_OUTPUT
9191
else
92-
echo "::set-output name=github::no"
92+
echo "github=no" >> $GITHUB_OUTPUT
9393
echo "::warning ::GITHUB_TOKEN non set"
9494
fi
9595
if [ -n "${{ secrets.SONAR_TOKEN }}" ]; then
96-
echo "::set-output name=sonar::yes"
96+
echo "sonar=yes" >> $GITHUB_OUTPUT
9797
else
98-
echo "::set-output name=sonar::no"
98+
echo "sonar=no" >> $GITHUB_OUTPUT
9999
echo "::warning ::SONAR_TOKEN non set"
100100
fi
101101
@@ -106,28 +106,28 @@ jobs:
106106
runs-on: "ubuntu-latest"
107107
steps:
108108
- name: Checkout
109-
uses: actions/checkout@v2
109+
uses: actions/checkout@v3
110110
- name: Unshallow clone to provide blame information
111111
run: git fetch --unshallow
112112
- name: Setup PHP
113113
uses: shivammathur/setup-php@v2
114114
with:
115-
php-version: '8.0'
115+
php-version: '8.2'
116116
coverage: none
117117
tools: composer:v2
118118
- name: Get composer cache directory
119119
id: composer-cache
120-
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
120+
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
121121
- name: Cache dependencies
122-
uses: actions/cache@v2
122+
uses: actions/cache@v3
123123
with:
124124
path: ${{ steps.composer-cache.outputs.dir }}
125125
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
126126
restore-keys: ${{ runner.os }}-composer-
127127
- name: Install project dependencies
128128
run: composer upgrade --no-interaction --no-progress --prefer-dist
129129
- name: Obtain code coverage
130-
uses: actions/download-artifact@v2
130+
uses: actions/download-artifact@v3
131131
with:
132132
name: code-coverage
133133
path: build/coverage

.phive/phars.xml

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<phive xmlns="https://phar.io/phive">
3-
<phar name="php-cs-fixer" version="^3.6.0" installed="3.6.0" location="./tools/php-cs-fixer" copy="false"/>
4-
<phar name="phpcs" version="^3.6.2" installed="3.6.2" location="./tools/phpcs" copy="false"/>
5-
<phar name="phpcbf" version="^3.6.2" installed="3.6.2" location="./tools/phpcbf" copy="false"/>
6-
<phar name="phpstan" version="^1.4.6" installed="1.4.6" location="./tools/phpstan" copy="false"/>
7-
<phar name="psalm" version="^4.21.0" installed="4.21.0" location="./tools/psalm" copy="false"/>
8-
<phar name="infection" version="^0.23.0" installed="0.23.0" location="./tools/infection" copy="false"/>
3+
<phar name="php-cs-fixer" version="^3.13.0" installed="3.13.0" location="./tools/php-cs-fixer" copy="false"/>
4+
<phar name="phpcs" version="^3.7.1" installed="3.7.1" location="./tools/phpcs" copy="false"/>
5+
<phar name="phpcbf" version="^3.7.1" installed="3.7.1" location="./tools/phpcbf" copy="false"/>
6+
<phar name="phpstan" version="^1.9.3" installed="1.9.3" location="./tools/phpstan" copy="false"/>
7+
<phar name="psalm" version="^5.2.0" installed="5.2.0" location="./tools/psalm" copy="false"/>
8+
<phar name="infection" version="^0.26.16" installed="0.26.16" location="./tools/infection" copy="false"/>
99
</phive>

.php-cs-fixer.dist.php

+7-6
Original file line numberDiff line numberDiff line change
@@ -11,42 +11,43 @@
1111

1212
return (new PhpCsFixer\Config())
1313
->setRiskyAllowed(true)
14-
->setCacheFile(__DIR__ . '/build/php_cs.cache')
14+
->setCacheFile(__DIR__ . '/build/php-cs-fixer.cache')
1515
->setRules([
1616
'@PSR12' => true,
1717
'@PSR12:risky' => true,
1818
'@PHP71Migration:risky' => true,
1919
'@PHP73Migration' => true,
20-
// PSR12 (remove when php-cs-fixer reaches ^3.1.1)
21-
'class_definition' => ['space_before_parenthesis' => true],
2220
// symfony
23-
// 'class_attributes_separation' => true, // conflict with PSR12
21+
'class_attributes_separation' => true,
2422
'whitespace_after_comma_in_array' => true,
2523
'no_empty_statement' => true,
2624
'no_extra_blank_lines' => true,
2725
'function_typehint_space' => true,
26+
'trailing_comma_in_multiline' => ['after_heredoc' => true, 'elements' => ['arrays']],
2827
'no_blank_lines_after_phpdoc' => true,
2928
'object_operator_without_whitespace' => true,
3029
'binary_operator_spaces' => true,
3130
'phpdoc_scalar' => true,
32-
'no_trailing_comma_in_singleline_array' => true,
31+
'no_trailing_comma_in_singleline' => true,
3332
'single_quote' => true,
3433
'no_singleline_whitespace_before_semicolons' => true,
3534
'no_unused_imports' => true,
3635
'yoda_style' => ['equal' => true, 'identical' => true, 'less_and_greater' => null],
3736
'standardize_not_equals' => true,
3837
'concat_space' => ['spacing' => 'one'],
3938
'linebreak_after_opening_tag' => true,
39+
'fully_qualified_strict_types' => true,
4040
// symfony:risky
4141
'no_alias_functions' => true,
4242
'self_accessor' => true,
4343
// contrib
4444
'not_operator_with_successor_space' => true,
45+
'ordered_imports' => ['imports_order' => ['class', 'function', 'const']], // @PSR12 sort_algorithm: none
4546
])
4647
->setFinder(
4748
PhpCsFixer\Finder::create()
4849
->in(__DIR__)
4950
->append([__FILE__])
50-
->exclude(['vendor', 'tools', 'build'])
51+
->exclude(['vendor', 'tools', 'build']),
5152
)
5253
;

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ La salida esperada es algo como lo siguiente (sin los espacios en blanco, que ag
9999
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
100100
RfcEmisor="EKU9003173C9" Fecha="2022-01-06T17:49:12">
101101
<Folios>
102-
<Folio UUID="62B00C5E-4187-4336-B569-44E0030DC729" Motivo="02" FolioSustitucion=""></Folio>
102+
<Folio UUID="62B00C5E-4187-4336-B569-44E0030DC729" Motivo="02"></Folio>
103103
</Folios>
104104
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
105105
<SignedInfo>
@@ -197,7 +197,7 @@ este tipo de objetos tiene la facultad de poder revisar si el RFC es el mismo us
197197
poder generar el documento XML a firmar.
198198

199199
**`Credentials`** Es un objeto que encapsula el trabajo con los certificados y llave privada.
200-
Internamente utiliza [`phpcfdi/credentials`](https://github.com/phpcfdi/credentials) y la clase interna es solo
200+
Internamente, utiliza [`phpcfdi/credentials`](https://github.com/phpcfdi/credentials) y la clase interna es solo
201201
una indirección de `PhpCfdi\Credentials\Credential`. Incluso puedes crear una credencial de `phpcfd/xml-cancelacion`
202202
a partir de un objeto directo de `phpcfdi/credentials` usando `Credentials::createWithPhpCfdiCredential`, por ejemplo:
203203

docs/CHANGELOG.md

+28-5
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,42 @@ Usamos [Versionado Semántico 2.0.0](SEMVER.md) por lo que puedes usar esta libr
77
## Cambios no liberados en una versión
88

99
Pueden aparecer cambios no liberados que se integran a la rama principal, pero no ameritan una nueva liberación de
10-
versión, aunque sí su incorporación en la rama principal de trabajo. Generalmente se tratan de cambios en el desarrollo.
10+
versión, aunque sí su incorporación en la rama principal de trabajo. Generalmente, se tratan de cambios en el desarrollo.
1111

12-
### Mantenimiento 2022-02-23
12+
## Listado de cambios
13+
14+
### Versión 2.0.2 2022-12-15
15+
16+
Se corrige el archivo XML generado para cancelaciones.
17+
Anteriormente, cuando el atributo `FolioSustitucion` estaba vacío se incluía vacío, ahora se omite.
18+
19+
Este cambio va de acuerdo a la documentación del Anexo 20:
20+
21+
> *Atributo condicional que representa al UUID que sustituye al folio fiscal cancelado.*
22+
> *Es requerido cuando la clave del motivo de cancelación es 01.*
23+
24+
Gracias `@juliazo` por reportar este problema: <https://github.com/phpcfdi/xml-cancelacion/issues/30>.
25+
26+
#### Mantenimiento 2022-12-15
27+
28+
- Se actualizan las herramientas de desarrollo.
29+
- Se actualiza el estándar de código al más reciente de PhpCfdi.
30+
- Se actualizan los flujos de trabajo de GitHub:
31+
- Se agrega PHP 8.2 a la matriz de prebas en el trabajo `tests`.
32+
- Actualizar a PHP 8.2 (excepto el trabajo `php-cs-fixer`).
33+
- Se actualizan las acciones estándar de GitHub de la versión 2 a la versión 3.
34+
- Se quita la instalación de la herramienta `composer` donde no es necesaria.
35+
- Se cambia la directiva deprecada `::set-output` por `$GITHUB_OUTPUT`.
36+
37+
#### Mantenimiento 2022-02-23
1338

1439
- Se actualiza el año en el archivo de licencia. Feliz 2022.
1540
- Se corrige el grupo de mantenedores de phpCfdi.
1641
- Se actualizan las dependencias de desarrollo.
1742
- Se corrige el archivo de configuración de Psalm porque el atributo `totallyTyped` está deprecado.
1843
- Se deja de utilizar Scrutinizer CI. Gracias Scrutinizer CI.
1944
- El flujo de integración continua se cambia para separar los procesos que dependen de la cobertura de código.
20-
- Se agregan los modificadores `abstract`o `final` a las clases de pruebas.
21-
22-
## Listado de cambios
45+
- Se agregan los modificadores `abstract`o `final` a las clases de pruebas.
2346

2447
### Versión 2.0.1 2022-01-10
2548

src/Capsules/Cancellation.php

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
use Countable;
88
use DateTimeImmutable;
99
use DOMDocument;
10-
use PhpCfdi\XmlCancelacion\Models\DocumentType;
1110
use PhpCfdi\XmlCancelacion\Internal\XmlHelperFunctions;
1211
use PhpCfdi\XmlCancelacion\Models\CancelDocuments;
12+
use PhpCfdi\XmlCancelacion\Models\DocumentType;
1313

1414
class Cancellation implements Countable, CapsuleInterface
1515
{
@@ -86,10 +86,11 @@ public function exportToDocument(): DOMDocument
8686
foreach ($this->documents as $cancelDocument) {
8787
$folio = $document->createElement('Folio');
8888
$folios->appendChild($folio);
89-
$subsituteOf = $cancelDocument->hasSubstituteOf() ? (string) $cancelDocument->substituteOf() : '';
9089
$folio->setAttribute('UUID', (string) $cancelDocument->uuid());
9190
$folio->setAttribute('Motivo', (string) $cancelDocument->reason());
92-
$folio->setAttribute('FolioSustitucion', $subsituteOf);
91+
if ($cancelDocument->hasSubstituteOf()) {
92+
$folio->setAttribute('FolioSustitucion', (string) $cancelDocument->substituteOf());
93+
}
9394
}
9495

9596
return $document;

0 commit comments

Comments
 (0)