Skip to content

Commit fa9c206

Browse files
authored
Merge pull request #64 from ircsasw/FormaPago_Nomina
FormaPago para Nómina
2 parents c9e30ad + 226657c commit fa9c206

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

docs/CHANGELOG.md

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

3030

31+
## Version 2.14.2 2021-03-16
32+
33+
### `FormaPago` on `N - Nómina`
34+
35+
- Validation `TIPOCOMP03` does not apply on documents type `N - Nómina`.
36+
37+
3138
## Version 2.14.1 2021-03-14
3239

3340
### `MetodoPago` on `N - Nómina`

docs/validar/validaciones-estandar.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Realiza diferentes validaciones relacionadas con el tipo de comprobante:
5858

5959
- TIPOCOMP01: Si el tipo de comprobante es T, P ó N, entonces no debe existir las condiciones de pago
6060
- TIPOCOMP02: Si el tipo de comprobante es T, P ó N, entonces no debe existir la definición de impuestos (CFDI33179)
61-
- TIPOCOMP03: Si el tipo de comprobante es T, P ó N, entonces no debe existir la forma de pago
61+
- TIPOCOMP03: Si el tipo de comprobante es T ó P, entonces no debe existir la forma de pago
6262
- TIPOCOMP04: Si el tipo de comprobante es T ó P, entonces no debe existir el método de pago (CFDI33123)
6363
- TIPOCOMP05: Si el tipo de comprobante es T ó P, entonces no debe existir el descuento del comprobante (CFDI33110)
6464
- TIPOCOMP06: Si el tipo de comprobante es T ó P, entonces no debe existir el descuento de los conceptos (CFDI33179)

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* Valida que:
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)
16-
* - TIPOCOMP03: Si el tipo de comprobante es T, P ó N, entonces no debe existir la forma de pago
16+
* - TIPOCOMP03: Si el tipo de comprobante es T ó P, entonces no debe existir la forma de pago
1717
* - 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)
@@ -32,7 +32,7 @@ private function registerAsserts(Asserts $asserts)
3232
. ' entonces no debe existir las condiciones de pago',
3333
'TIPOCOMP02' => 'Si el tipo de comprobante es T, P ó N,'
3434
. ' entonces no debe existir la definición de impuestos (CFDI33179)',
35-
'TIPOCOMP03' => 'Si el tipo de comprobante es T, P ó N, entonces no debe existir la forma de pago',
35+
'TIPOCOMP03' => 'Si el tipo de comprobante es T ó P, entonces no debe existir la forma de pago',
3636

3737
'TIPOCOMP04' => 'Si el tipo de comprobante es T ó P,'
3838
. ' entonces no debe existir el método de pago (CFDI33123)',
@@ -68,13 +68,13 @@ public function validate(NodeInterface $comprobante, Asserts $asserts)
6868
'TIPOCOMP02',
6969
Status::when(null === $comprobante->searchNode('cfdi:Impuestos'))
7070
);
71+
}
72+
73+
if ('T' === $tipoComprobante || 'P' === $tipoComprobante) {
7174
$asserts->putStatus(
7275
'TIPOCOMP03',
7376
Status::when(! $comprobante->offsetExists('FormaPago'))
7477
);
75-
}
76-
77-
if ('T' === $tipoComprobante || 'P' === $tipoComprobante) {
7878
$asserts->putStatus(
7979
'TIPOCOMP04',
8080
Status::when(! $comprobante->offsetExists('MetodoPago'))
@@ -96,12 +96,14 @@ public function validate(NodeInterface $comprobante, Asserts $asserts)
9696
Status::when($this->isZero($comprobante['Total']))
9797
);
9898
}
99+
99100
if ('I' === $tipoComprobante || 'E' === $tipoComprobante || 'N' === $tipoComprobante) {
100101
$asserts->putStatus(
101102
'TIPOCOMP09',
102103
Status::when($this->checkConceptosValorUnitarioIsGreaterThanZero($comprobante))
103104
);
104105
}
106+
105107
if ('N' === $tipoComprobante) {
106108
$asserts->putStatus(
107109
'TIPOCOMP10',

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ public function testValidTPN($tipoDeComprobante)
3535
$this->runValidate();
3636
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP01');
3737
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP02');
38-
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP03');
3938
}
4039

4140
/**
@@ -54,7 +53,6 @@ public function testInvalidTPN($tipoDeComprobante)
5453
$this->runValidate();
5554
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP01');
5655
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP02');
57-
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP03');
5856
}
5957

6058
public function providerTP()
@@ -70,10 +68,13 @@ public function testValidTP($tipoDeComprobante)
7068
{
7169
$this->comprobante->addAttributes([
7270
'TipoDeComprobante' => $tipoDeComprobante,
71+
'FormaPago' => null, // set to null to make clear that it must not exists
72+
'MetodoPago' => null, // set to null to make clear that it must not exists
7373
'SubTotal' => '0',
7474
'Total' => '0.00',
7575
]);
7676
$this->runValidate();
77+
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP03');
7778
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP04');
7879
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP05');
7980
$this->assertStatusEqualsCode(Status::ok(), 'TIPOCOMP06');
@@ -85,13 +86,15 @@ public function testValidTP($tipoDeComprobante)
8586
* @param string $tipoDeComprobante
8687
* @dataProvider providerTP
8788
*/
88-
public function testInvalidTPMetodoPago($tipoDeComprobante)
89+
public function testInvalidTP($tipoDeComprobante)
8990
{
9091
$this->comprobante->addAttributes([
9192
'TipoDeComprobante' => $tipoDeComprobante,
93+
'FormaPago' => '',
9294
'MetodoPago' => '',
9395
]);
9496
$this->runValidate();
97+
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP03');
9598
$this->assertStatusEqualsCode(Status::error(), 'TIPOCOMP04');
9699
}
97100

0 commit comments

Comments
 (0)