Skip to content

Commit c9e30ad

Browse files
authored
Merge pull request #63 from eclipxe13/development
Validations on `MetodoPago` on `N - Nómina`
2 parents edb0b36 + 523bb2c commit c9e30ad

File tree

6 files changed

+31
-181
lines changed

6 files changed

+31
-181
lines changed

docs/CHANGELOG.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,26 @@
2828
- Change visibility of `CfdiUtils\Cleaner\Cleaner#removeIncompleteSchemaLocation()` to private.
2929

3030

31-
## UNRELEASED
31+
## Version 2.14.1 2021-03-14
3232

33-
### 2020-10-08
33+
### `MetodoPago` on `N - Nómina`
34+
35+
- Remove redundant valiations `METPAG01` and `METPAG02`.
36+
- Validation `TIPOCOMP04` does not apply on documents type `N - Nómina`.
37+
38+
### Download certificates (unreleased 2020-10-08)
3439

3540
- Looks like web service at `https://rdc.sat.gob.mx/` is having issues (again). This is breaking testing.
3641
To mitigate the problem, a new testing class `CertificateDownloaderHelper` has been created to retry the
3742
download if it fails, for a maximum of 5 attempts. This change does not create a new release version.
3843

39-
### 2020-12-03
44+
### Travis-CI build (unreleased 2020-12-03)
4045

4146
- Add `XDEBUG_MODE=coverage` on Travis-CI configuration file since it upgrade to `XDebug v3.0.0` and it contains
4247
a bug that makes `PHPUnit` break with the message: *Use of undefined constant XDEBUG_CC_UNUSED - assumed 'XDEBUG_CC_UNUSED'*.
4348
This will be resolved on <https://github.com/xdebug/xdebug/pull/699> but not released (yet).
4449

50+
4551
## Version 2.14.0 2020-10-01
4652

4753
- Add `Retenciones` reader to work with *CFDI de retenciones e información de pagos*.

docs/validar/validaciones-estandar.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,6 @@ Valida el nodo impuestos del comprobante
4343
- COMPIMPUESTOSC03: Si existe al menos una retención entonces debe existir el total de retenciones
4444

4545

46-
## ComprobanteMetodoPago
47-
48-
Validaciones específicas relacionadas con el método de pago
49-
50-
- METPAG01: Si el tipo de documento es T, P ó N, entonces el metodo de pago no debe existir (CFDI33123, CFDI33124)
51-
- METPAG02: Si el tipo de documento es I ó E, entonces el metodo de pago debe ser "PUE" o "PPD" (CFDI33121, CFDI33122)
52-
53-
5446
## ComprobanteTipoCambio
5547

5648
- TIPOCAMBIO01: La moneda exista y no tenga un valor vacío
@@ -67,7 +59,7 @@ Realiza diferentes validaciones relacionadas con el tipo de comprobante:
6759
- TIPOCOMP01: Si el tipo de comprobante es T, P ó N, entonces no debe existir las condiciones de pago
6860
- TIPOCOMP02: Si el tipo de comprobante es T, P ó N, entonces no debe existir la definición de impuestos (CFDI33179)
6961
- TIPOCOMP03: Si el tipo de comprobante es T, P ó N, entonces no debe existir la forma de pago
70-
- TIPOCOMP04: Si el tipo de comprobante es T, P ó N, entonces no debe existir el método de pago (CFDI33123)
62+
- TIPOCOMP04: Si el tipo de comprobante es T ó P, entonces no debe existir el método de pago (CFDI33123)
7163
- TIPOCOMP05: Si el tipo de comprobante es T ó P, entonces no debe existir el descuento del comprobante (CFDI33110)
7264
- TIPOCOMP06: Si el tipo de comprobante es T ó P, entonces no debe existir el descuento de los conceptos (CFDI33179)
7365
- TIPOCOMP07: Si el tipo de comprobante es T ó P, entonces el subtotal debe ser cero (CFDI33108)

src/CfdiUtils/Validate/Cfdi33/Standard/ComprobanteMetodoPago.php

Lines changed: 0 additions & 54 deletions
This file was deleted.

src/CfdiUtils/Validate/Cfdi33/Standard/ComprobanteTipoDeComprobante.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* - TIPOCOMP01: Si el tipo de comprobante es T, P ó N, entonces no debe existir las condiciones de pago
1515
* - TIPOCOMP02: Si el tipo de comprobante es T, P ó N, entonces no debe existir la definición de impuestos (CFDI33179)
1616
* - TIPOCOMP03: Si el tipo de comprobante es T, P ó N, entonces no debe existir la forma de pago
17-
* - TIPOCOMP04: Si el tipo de comprobante es T, P ó N, entonces no debe existir el método de pago (CFDI33123)
17+
* - TIPOCOMP04: Si el tipo de comprobante es T ó P, entonces no debe existir el método de pago (CFDI33123)
1818
* - TIPOCOMP05: Si el tipo de comprobante es T ó P, entonces no debe existir el descuento del comprobante (CFDI33110)
1919
* - TIPOCOMP06: Si el tipo de comprobante es T ó P, entonces no debe existir el descuento de los conceptos (CFDI33179)
2020
* - TIPOCOMP07: Si el tipo de comprobante es T ó P, entonces el subtotal debe ser cero (CFDI33108)
@@ -33,9 +33,9 @@ private function registerAsserts(Asserts $asserts)
3333
'TIPOCOMP02' => 'Si el tipo de comprobante es T, P ó N,'
3434
. ' entonces no debe existir la definición de impuestos (CFDI33179)',
3535
'TIPOCOMP03' => 'Si el tipo de comprobante es T, P ó N, entonces no debe existir la forma de pago',
36-
'TIPOCOMP04' => 'Si el tipo de comprobante es T, P ó N,'
37-
. ' entonces no debe existir el método de pago (CFDI33123)',
3836

37+
'TIPOCOMP04' => 'Si el tipo de comprobante es T ó P,'
38+
. ' entonces no debe existir el método de pago (CFDI33123)',
3939
'TIPOCOMP05' => 'Si el tipo de comprobante es T ó P,'
4040
. ' entonces no debe existir el descuento del comprobante (CFDI33110)',
4141
'TIPOCOMP06' => 'Si el tipo de comprobante es T ó P,'
@@ -72,13 +72,13 @@ public function validate(NodeInterface $comprobante, Asserts $asserts)
7272
'TIPOCOMP03',
7373
Status::when(! $comprobante->offsetExists('FormaPago'))
7474
);
75+
}
76+
77+
if ('T' === $tipoComprobante || 'P' === $tipoComprobante) {
7578
$asserts->putStatus(
7679
'TIPOCOMP04',
7780
Status::when(! $comprobante->offsetExists('MetodoPago'))
7881
);
79-
}
80-
81-
if ('T' === $tipoComprobante || 'P' === $tipoComprobante) {
8282
$asserts->putStatus(
8383
'TIPOCOMP05',
8484
Status::when(! $comprobante->offsetExists('Descuento'))

tests/CfdiUtilsTests/Validate/Cfdi33/Standard/ComprobanteMetodoPagoTest.php

Lines changed: 0 additions & 107 deletions
This file was deleted.

tests/CfdiUtilsTests/Validate/Cfdi33/Standard/ComprobanteTipoDeComprobanteTest.php

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public function testValidTPN($tipoDeComprobante)
3636
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP01');
3737
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP02');
3838
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP03');
39-
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP04');
4039
}
4140

4241
/**
@@ -56,7 +55,6 @@ public function testInvalidTPN($tipoDeComprobante)
5655
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP01');
5756
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP02');
5857
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP03');
59-
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP04');
6058
}
6159

6260
public function providerTP()
@@ -76,12 +74,27 @@ public function testValidTP($tipoDeComprobante)
7674
'Total' => '0.00',
7775
]);
7876
$this->runValidate();
77+
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP04');
7978
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP05');
8079
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP06');
8180
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP07');
8281
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP08');
8382
}
8483

84+
/**
85+
* @param string $tipoDeComprobante
86+
* @dataProvider providerTP
87+
*/
88+
public function testInvalidTPMetodoPago($tipoDeComprobante)
89+
{
90+
$this->comprobante->addAttributes([
91+
'TipoDeComprobante' => $tipoDeComprobante,
92+
'MetodoPago' => '',
93+
]);
94+
$this->runValidate();
95+
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP04');
96+
}
97+
8598
/**
8699
* @param string $tipoDeComprobante
87100
* @dataProvider providerTP

0 commit comments

Comments
 (0)